如何在VIM中向前/向后移动超出行末指定数量的字符?
我知道可以输入例如
25l
前进25个字符,但是此命令始终会在行末停止。还有25go
,但是它从缓冲区的开头开始前进,而不是从当前光标位置开始前进。我想要向前移动一定数量的字符,包括行末字符。
如何在VIM中向前/向后移动超出行末指定数量的字符?
我知道可以输入例如
25l
前进25个字符,但是此命令始终会在行末停止。还有25go
,但是它从缓冲区的开头开始前进,而不是从当前光标位置开始前进。我想要向前移动一定数量的字符,包括行末字符。
我认为你需要的是使用空格键向前移动,使用退格键向后移动。
空格键会在下一行继续。如果你想在当前行添加空格而不是移到下一行,那么选项:set virtualedit=onemore
就适合你。
virtualedit
选项::set ve=all
'whichwrap'
选项决定了哪些动作可以将光标移动到另一行。默认情况下,左/右移动都不能实现该功能。
不建议包含h,l
,因为某些宏和插件可能依赖于原来的行为并且会出错 - 由您自己测试和决定。但是通过(后者用于插入模式和可选)可以安全地包括←和→光标键。
:set whichwrap+=<,>,[,]
然后,你可以通过 5 → 命令在行尾跨越 5 个字符。
是否计算换行符取决于 'virtualedit'
选项。如果想要包含换行符:
:set virtualedit=onemore
search()
函数。以下代码将使光标向右移动 6
个字符。它通过从当前位置 (\%#
) 开始匹配,包括换行符(\_.
)的 7 个字符来实现这一点。:call search('\%#\_.\{7}', 'ce')