【发布时间】:2014-05-03 08:58:31
【问题描述】:
我的 mswin.vim 包含以下 Ctrl-A 命令
inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
此命令会正确选择文件中的所有行,但也会使光标跳到文件末尾(不希望的副作用)。有没有办法在不移动光标的情况下“全选”?
提前感谢您的任何帮助或建议。
【问题讨论】:
标签: vim
我的 mswin.vim 包含以下 Ctrl-A 命令
inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
此命令会正确选择文件中的所有行,但也会使光标跳到文件末尾(不希望的副作用)。有没有办法在不移动光标的情况下“全选”?
提前感谢您的任何帮助或建议。
【问题讨论】:
标签: vim
恐怕这无法实现。由于在视觉选择模式下,光标将位于视觉范围的开头或结尾。视觉模式下的任何运动都会导致视觉选择范围的变化(取决于视觉模式:char/line/block-wise)。
重点是,select-all 和kept the cursor position 之后你想做什么?可能是 X->Y 问题,请告诉我们您的最终目标是什么。可能有更好的解决方案。
顺便说一句,C-A 对增加数字非常有用,也许您想重新考虑地图触发器?
【讨论】:
gg=G 将自动格式化/缩进您的文件。如果你想回到你的光标位置(大约,因为自动缩进可能会改变你的原光标线),你可以在做=之前,设置一个标记,然后在=之后跳回来@user3367166
''(即按两次单引号按钮)
'' 让你回到那行,但在它的开头(就像按下^)而不是你之前的确切位置。使用getpos() 和setpos()(例如g3cko's answer)这不是问题。
最简单最快的方法是使用:: % y + 然后去谷歌文档(或任何地方)并粘贴。
【讨论】:
你可以看看getpossetpos——也许你可以把你想要的东西包装成这样:
function! TestFunc()
let save_cursor = getpos(".")
normal ggVG
" -- do something
call setpos('.', save_cursor)
endfunction
【讨论】: