向前/向后移动VIM中行尾的字符数

时间:2014-06-26 13:24:59

标签: vim

如何在VIM的行尾移动前进/后退字符数?

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

  

25升

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

4 个答案:

答案 0 :(得分:10)

我认为你要找的是 space 向前移动而 backspace 向后移动。

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

答案 1 :(得分:4)

您可以设置virtualedit选项:

:set ve=all

虚拟编辑意味着光标可以放置在没有实际角色的位置。

答案 2 :(得分:2)

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

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

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

然后,您可以通过 5 结束的行在中移动5个字符

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

:set virtualedit=onemore

答案 3 :(得分:1)

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

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