如何跳转到视觉选择的开始/结束?

duc*_*thd 59 vim

是否存在移动到视觉选择的开始或结束的动作?我知道o在视觉模式下两者之间交替,但我需要能够精确选择开始.总体目标是用括号围绕视觉选择区域.


根据评论,我能够使用以下宏实现此功能.这个想法是:

  1. <ESC> 退出视觉模式
  2. `> 到前一个视觉选择的结尾
  3. a) 附加一个右括号
  4. <ESC> 退出插入模式
  5. `< 转到上一个视觉选择的开始
  6. i( 插入一个左括号
  7. <ESC> 再次退出插入模式.

例如:

map \q <ESC>`>a)<ESC>`<i(<ESC>
Run Code Online (Sandbox Code Playgroud)

根据另一条评论,我们有一个更简洁的解决方案,

map \q c()<ESC>P
Run Code Online (Sandbox Code Playgroud)

ib.*_*ib. 81

有两个相关的内置标记,用于存储当前缓冲区中最后一个视觉选择的第一个和最后一个字符的位置.要将光标移动到这些标记所指向的位置,请分别使用命令`<`>.(见:help `>,:help `<.)

  • @Adrian:你的意思是不离开可视模式?如果是这样,您可以使用`o`命令. (19认同)
  • 这正是_I_正在寻找的答案.@duckworthd - 你应该考虑点击接受:-) (4认同)

小智 53

当你Visual Selection点击时o.它会将光标的位置改变为选择的另一端.然后O跳回来.

  • 我认为只是“o”来垂直来回跳跃。如果您处于视觉块选择中,“O”就是水平来回跳跃。 (2认同)

eps*_*lbe 19

如果你只是想包围视觉选择有已经工作中得到完成,即由蒂姆·波普,是谁写的这个插件surround.它包含您喜欢的分隔符的单词或视觉选择.

选择您的视觉选择,比如i like vim命中S)获取(i like vim)S(获取( i like vim ),将其更改为[i like vim]键入cs](更改周围)并删除ds]以获取i like vim最终信息.


JJo*_*oao 15

"用括号围绕视觉选择区域"的最简单方法是:

c焊割视觉选定区域()PUT斯达康回在中间.=c()<ESC>P

我建议用以下方法定义一个新的.vimrc visual-mode命令(例如"\ q"):

:vmap \q c()<ESC>P
Run Code Online (Sandbox Code Playgroud)

这种方法也适用于可视矩形区域(<C-V>):它在每个块线周围放置"("")"


rom*_*inl 10

如果你不能使用Surrond.vim,这是一种方法:

  1. v或做你的视觉选择V.
  2. 摆脱它<Esc>.
  3. 键入`>a)<Esc>以在选择的最后一个字符插入右括号.
  4. 键入`<i(<Esc>以在选择的第一个字符之前插入左括号.