如何在VIM的行尾移动前进/后退字符数?
我知道我可以打字,例如,
25升
并前进25个字符,但此命令将始终在一行结束时停止。此外,还有25go
,但是从缓冲区的开头向前,而不是从当前光标位置向前。我想转发一定数量的字符,包括行尾字符。
答案 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')