在光标移动到块顶部的情况下,在VIM中拉出一个区域?
是否有一个简单的方法(即不写一个脚本或精心devise的键盘映射序列)来将YANK的一行与YANK的执行位置相对,而不是在块的开始位置?
根据VIM的帮助:“请注意,在一个按字符排列的命令之后,Vim会将光标留在最接近缓冲区起始处的第一个被抽出的字符上。 线路似乎行为相似。
这对我来说有点烦人,因为我倾向于从上到下select一个大的区域,Yank,然后粘贴到所选区域的底部附近或底部。 今天我在YANK之前设置一个标记(mx),然后跳回去,但是我怀疑可能会有不同的Yank序列来做我所需要的。
我已经search了这么多次和networking。 有很多现有的“VIM快捷方式”的材料,但我还没有find解决scheme。
提前致谢。
不太回答你的问题,但也许']
会解决你的问题?
'] `] To the last character of the previously changed or yanked text. {not in Vi}
如果你使用的是可视化块( v
),那么在块之后你可以使用gv
重新select同一个块(这也会将你的光标位置移回到之前的位置)。 如果您按下Esc键,则不移动光标就不select该块。
另外感兴趣的可能是在可视块模式下的ctrl-o
命令,它在所选块的开始和结束之间跳转。
:y3
会从当前的当前行中抽出三行,如果你确切地知道有多less行可以被抽出,这个命令非常方便。 :help :yank
细节。
:%y
将select整个缓冲区而不用移动光标,如ggvG$y
,而不用select高亮度的闪光并修改"*
寄存器。
我使用这个插入模式映射:
function! SelectAll() %y* endfun imap <expr> <F3> SelectAll()
ps:如果你喜欢<CV>
粘贴(在vim之外),使用%y+
如果以可视模式拖放,也可以使用'>
或`>
转到刚刚抽出的视觉select的最后一行/字符。 在这种情况下,这与']
和`]
基本相同,例如在VsVim中显然不被支持。
我不确定自从vmap ygv<Esc>
解决scheme发布之后,YankRing是否已经发生了变化,但是在将它添加到我的.vimrc
之后并没有保留。 YankRing实际上覆盖了它。
这是我在.vimrc
的解决scheme。
function! YRRunAfterMaps() vmap y ygv<Esc> endfunction