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

时间:2012-06-24 08:52:49

标签: vim

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


跟进:

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

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

    map \q <ESC>`>a)<ESC>`<i(<ESC>
    

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

    map \q c()<ESC>P
    

4 个答案:

答案 0 :(得分:80)

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

答案 1 :(得分:19)

如果您只想围绕一个视觉选择,那么已经完成了工作,即由编写this plugin的{{3}}编写surround的tim教皇。它用您喜欢的分隔符围绕单词或视觉选择。

选择您的视觉选择,说i like vim点击S)获取(i like vim)S(获取( i like vim ),将其更改为[i like vim]键入cs](更改周边)并删除ds]以最终获得i like vim

答案 2 :(得分:13)

使用圆括号围绕视觉选择区域的最简单方法&#34;是:

c将视觉选择区域改为()并将P改回中间位置。 = c()<ESC>P

我建议用以下方法定义一个新的.vimrc可视模式命令(例如&#34; \ q&#34;):

:vmap \q c()<ESC>P

这种方法也适用于可视矩形区域(<C-V>):它 put&#34;(&#34;&#34;)&#34;围绕每个街区

答案 3 :(得分:10)

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

  1. 使用vV进行视觉选择。
  2. 使用<Esc>
  3. 退出
  4. 键入`>a)<Esc>以在选择的最后一个字符后插入一个右括号
  5. 键入`<i(<Esc>以在选择的第一个字符之前插入一个左括号