如何跳到视觉select的开始/结束?
是否有移动到视觉select的开始或结束? 我知道o而在视觉模式之间交替,但我需要能够精确select的开始。 总体目标是用圆括号围绕视觉select的区域。
基于评论,我能够使用下面的macros实现这个。 这个想法是:
- 退出可视模式
-
`<
去前一个视觉select的结尾 -
a)
附加一个闭合的括号 - 退出插入模式
-
`<
去前一个视觉select的开始 -
i(
插入一个开头的括号 - 再次退出插入模式。
例如:
map \q <ESC>`>a)<ESC>`<i(<ESC>
基于另一个评论,我们有一个更简洁的解决scheme,
map \qc()<ESC>P
最简单的方法是用圆括号包围一个视觉选定的区域,然后插入()
并将其放回到midle中。
di()<ESC>P
我build议定义一个新的.vimrc可视模式命令(例如“\ q”):
:vmap \q di()<ESC>P
更新 :正如@duckworthd明智地指出,当选定区域的最后一个字符是行中的最后一个字符时,以前失败。
新版本:用()
将视觉select的区域切换到中间。
:vmap \qc()<ESC>P
这种方法也适用于直观的矩形区域( <CV>
):它在每个块线周围放置“(”“)”
有两个相关的内置标记存储当前缓冲区中最后一个视觉select的第一个和最后一个字符的位置。 为了将光标移动到这些标记指向的位置,分别使用命令`<
和`>
。 (请参阅:help `>
:help `<
。)
在Visual Selection
单击o 。 它会将光标的位置改变为select的另一端。 然后O跳回来。
如果你只是想包围一个视觉select,那么已经完成了工作,即由编写这个插件的蒂姆·波普(Tim Pope)编写的“ surround
。 它用你喜欢的分隔符围绕着文字或视觉select。
select你的视觉select,比如i like vim
命中S)
得到(i like vim)
或S(
得到( i like vim )
,改变这个[i like vim]
typescs]
(改变周围),并删除ds]
最后让i like vim
。
如果你不能使用Surrond.vim,这是一个办法:
- 用
v
或v
做视觉select。 - 用
<Esc>
离开它。 - 键入
`>a)<Esc>
在select的最后一个字符后插入一个右括号。 - input
`<i(<Esc>
在select的第一个字符之前插入左括号。