【问题标题】:Move forward/backward number of characters past end of line in VIM在 VIM 中向前/向后移动超过行尾的字符数
【发布时间】:2018-07-24 03:40:02
【问题描述】:

如何在 VIM 中向前/向后移动超过行尾的字符数?

我知道我可以打字,例如,

25升

并前进 25 个字符,但此命令将始终在行尾停止。此外,还有25go,但它从缓冲区的开头向前,而不是从当前光标位置向前。我想前进一定数量的字符,包括行尾字符。

【问题讨论】:

    标签: vim


    【解决方案1】:

    我认为您正在寻找的是 space 向前移动和 backspace 向后移动。

    space 将在下一行继续。如果您想在当前行中添加空格而不是移动到下一行,那么:set virtualedit=onemore 是您的选择。

    【讨论】:

    • 这是正确的答案。例如,500[空格键] 向前移动 500 个空格,不像 L 键移动超过行尾。
    【解决方案2】:

    你可以设置virtualedit选项:

    :set ve=all
    

    虚拟编辑意味着光标可以定位在没有实际字符的地方。

    【讨论】:

      【解决方案3】:

      'whichwrap' 选项决定了哪些动作可以将光标移动到另一行。默认情况下,左右移动都不会这样做。

      不建议包含h,l,因为某些宏和插件可能依赖于原始行为并中断 - 您调用测试和决定。但是包含 光标键应该是安全的(后一对用于插入模式和可选)

      :set whichwrap+=<,>,[,]
      

      然后,您可以在以 5 结尾的行上移动 5 个字符

      是否计算换行符取决于'virtualedit' 选项。要包含换行符:

      :set virtualedit=onemore
      

      【讨论】:

        【解决方案4】:

        另一种可能性(不需要更改选项,但更详细)是使用search() 函数。下面将光标向右移动6 个字符。它通过从当前位置 (\%#) 匹配包括换行符 (\_.) 在内的 7 个字符来做到这一点:

        :call search('\%#\_.\{7}', 'ce')
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多