如何在Vim中跳转到视觉选择的开始或结束?
是否有移动到视觉选择的开始或结束的运动 我知道o在视觉模式下会在两者之间交替,但我需要能够精确地选择开始 总体目标是用括号围绕视觉上选定的区域如何在Vim中跳转到视觉选择的开始或结束?,vim,Vim,是否有移动到视觉选择的开始或结束的运动 我知道o在视觉模式下会在两者之间交替,但我需要能够精确地选择开始 总体目标是用括号围绕视觉上选定的区域 跟进: 根据这些评论,我能够使用以下宏实现这一点。其想法是: Esc退出视觉模式 `>转到上一视觉选择的末尾 a)添加右括号 Esc退出插入模式 `a)`有两个相关的内置标记保持第一个标记的位置 以及当前缓冲区中最后一个可视选择的最后一个字符。 要将光标移动到这些标记,请使用命令`(请参见:help`>和:help`如果您只想围绕一个视觉选择,已经有了
跟进: 根据这些评论,我能够使用以下宏实现这一点。其想法是:
`>
转到上一视觉选择的末尾李>
a)
添加右括号李>
`
precodemap\q ESC`>a)`有两个相关的内置标记保持第一个标记的位置 以及当前缓冲区中最后一个可视选择的最后一个字符。 要将光标移动到这些标记,请使用命令(请参见`
和code`>和:help`>
:help`如果您只想围绕一个视觉选择,已经有了工作,即由tim pope完成,他编写了名为
。它用您喜欢的分隔符围绕单词或视觉选择环绕
选择您的视觉选择,比如说hiti like vim
以获取S)
或(i like vim)
以获取S(
,将其更改为(i like vim)
类型[我喜欢vim]
(更改环境)要删除cs]
以获得ds]
。如果您不能使用Surrond.vim,下面是一种方法:我最终喜欢vim
使用 或v
进行视觉选择v
用 摆脱它键入 在所选内容的最后一个字符后插入右括号`>a)
在 视觉选择中键入
`,然后单击o。它会将光标的位置更改到选择的另一端。然后O跳回。最简单的方法是“用括号包围视觉上选定的区域”:
将可视选择的区域更改为c
,然后()
将其放回中间:p
我建议在c()p
文件中定义一个新的可视模式命令(例如,.vimrc
):\q
:vmap \q c()<ESC>P
这种方法也适用于可视矩形区域(:vmap\q c()P
):它
将和(
放在每个块行周围。这正是我想要的答案@Dukkvd——你应该考虑点击Access:-)但是你如何保持选择的一致性?阿德里安:你的意思是不离开视觉模式?如果是这样,您可以使用)
命令。我仍然缺少我正在寻找的功能。我想将光标移动到选择的末尾,而不改变它o
如果光标位于顶部,则执行此操作,但如果光标已位于底部,则我希望它保持不变o
可以工作,但它会更改selectionClose,但不会完全更改。如果视觉选择中的最后一个字符是行中的最后一个字符,则光标将悬停在视觉选择之前的字符上。因此,使用insert(“i”)会导致括号中的文本插入比预期的更左的一个字符。我认为这只是'>
在垂直方向上来回跳跃o
是在视觉块选择中水平来回跳转。@dosentmatter只是想澄清一下,在视觉块选择模式中,O跳转到距离光标最远的角落。O跳到同一条线上最远的点(正如您所描述的)。这样可以很容易地进入街区的所有四个角落。@horta,是的,你说得对O
更准确地描述为对角线运动,而不是垂直或水平运动。o
map \q c()<ESC>P
:vmap \q c()<ESC>P