Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Vim中跳转到视觉选择的开始或结束?_Vim - Fatal编程技术网

如何在Vim中跳转到视觉选择的开始或结束?

如何在Vim中跳转到视觉选择的开始或结束?,vim,Vim,是否有移动到视觉选择的开始或结束的运动 我知道o在视觉模式下会在两者之间交替,但我需要能够精确地选择开始 总体目标是用括号围绕视觉上选定的区域 跟进: 根据这些评论,我能够使用以下宏实现这一点。其想法是: Esc退出视觉模式 `>转到上一视觉选择的末尾 a)添加右括号 Esc退出插入模式 `a)`有两个相关的内置标记保持第一个标记的位置 以及当前缓冲区中最后一个可视选择的最后一个字符。 要将光标移动到这些标记,请使用命令`(请参见:help`>和:help`如果您只想围绕一个视觉选择,已经有了

是否有移动到视觉选择的开始或结束的运动

我知道o在视觉模式下会在两者之间交替,但我需要能够精确地选择开始

总体目标是用括号围绕视觉上选定的区域


跟进:

根据这些评论,我能够使用以下宏实现这一点。其想法是:

  • Esc退出视觉模式
  • `>
    转到上一视觉选择的末尾
  • a)
    添加右括号
  • Esc退出插入模式
  • `precodemap\q ESC`>a)`有两个相关的内置标记保持第一个标记的位置
    以及当前缓冲区中最后一个可视选择的最后一个字符。
    要将光标移动到这些标记,请使用命令
    `和code`>
    (请参见
    :help`>
    :help`如果您只想围绕一个视觉选择,已经有了工作,即由tim pope完成,他编写了名为
    环绕
    。它用您喜欢的分隔符围绕单词或视觉选择


    选择您的视觉选择,比如说
    i like vim
    hit
    S)
    以获取
    (i like vim)
    S(
    以获取
    (i like vim)
    ,将其更改为
    [我喜欢vim]
    类型
    cs]
    (更改环境)要删除
    ds]
    以获得
    我最终喜欢vim

    如果您不能使用Surrond.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
    在垂直方向上来回跳跃
    O
    是在视觉块选择中水平来回跳转。@dosentmatter只是想澄清一下,在视觉块选择模式中,O跳转到距离光标最远的角落。O跳到同一条线上最远的点(正如您所描述的)。这样可以很容易地进入街区的所有四个角落。@horta,是的,你说得对
    o
    更准确地描述为对角线运动,而不是垂直或水平运动。
    map \q c()<ESC>P
    
    :vmap \q c()<ESC>P