有没有一种简单的方法(即不写脚本或精心设计的键Map序列)来Yank一组行,并将光标留在Yank执行的任何地方,而不是在块的开始处?
根据Vim的帮助:“注意,在一个字符方向的拉拽命令之后,Vim会将光标停留在第一个拉拽的字符上,该字符最接近缓冲区的开始。”
这对我来说有点烦人,因为我倾向于从上到下选择一个大区域,Yank,然后粘贴到所选区域的底部附近或下方。今天我在Yank之前设置一个标记(m-x),然后跳回来,但我怀疑可能有一个不同的Yank序列可以完成我需要的任务。
我已经在SO和网上搜索了无数次,有太多现有的“Vim快捷方式”材料需要我去研究,但我还没有找到解决这个问题的方法。
先谢了。
7条答案
按热度按时间qzlgjiam1#
不完全回答你的问题,但也许
']
会解决你的问题?字符串
aoyhnmkz2#
如果您使用的是可视块(
v
),那么在拖动块后,您可以使用gv
重新选择同一块(这也会将光标位置移回拖动前的位置)。如果您随后按ESC键,则该块将被取消选择,而无需移动光标。同样有趣的是可视块模式中的
ctrl-o
命令,它在所选块的开始和结束之间跳转。eulz3vhy3#
如果在视觉模式下拉拽,你也可以使用
'>
或>`来转到刚刚拉拽的视觉选择的最后一行/最后一个字符。在这种情况下,这基本上与`']`和
]`相同,这显然是不支持的,例如在VsVim中。gmxoilav4#
:y3
将从当前行中拉出三整行,如果您确切知道要拉出多少行,此命令非常方便。:help :yank
详细信息。:%y
将选择整个缓冲区,而不移动光标,像ggvG$y
一样,没有 Flink 的选择突出显示和修改"*
寄存器。我使用这个插入模式Map:
字符串
ps:如果你更喜欢
<C-V>
粘贴(Vim外部),使用%y+
检查https://stackoverflow.com/a/1620030/2247746
vybvopom5#
我不确定自从
vmap ygv<Esc>
解决方案发布后YankRing是否发生了变化,但在将其添加到.vimrc
后,我并没有坚持下去。YankRing实际上覆盖了它。下面是我在
.vimrc
中的解决方案。字符串
0wi1tuuw6#
我不知道在此期间发生了什么,但在IdeaVim中,接受的答案并不像我希望的那样工作。
对我来说,诀窍就是在猛拉之前做一个标记,然后再去做。
字符串
vaj7vani7#
如果你使用的是Lua,你可以定义这个keybinding,这将在猛拉之前猛拉并返回到位置:
字符串