自动换行vim怎么设置?

36
在vim中,一个令人沮丧的行为是当我向右或向左移动光标(分别是"l"或"h"),并且我到达了行的末尾或开头时,我的光标不会自动移动到下一行的第一列或上一行的最后一列。
请问有没有改变这种行为的方法?

1
这不完全是一个编程问题,但是... - Matti Virkkunen
1
...但这是关于“程序员常用的软件工具”的问题。 :)(诚然,这不是“仅限于软件开发的问题”)。 - lindhe
1
设置了 nocompatible 选项后,导致我无法使用该功能在我的 vim 配置中。 - Paschalis
2个回答

38
您可以使用 whichwrap 设置,使 hl 在单个行的开头和结尾进行换行:
set whichwrap+=h,l

然而,Vim的文档不建议这样做,可能会产生意外的副作用(如破坏插件或更改常见键映射的工作方式)。

作为替代方案,您可以按照Matti Virkkunen的建议进行操作:

set whichwrap+=<,>,[,]

这样做会让hl保持它们的默认行为,但允许左右箭头键在文本行之间跳转。 (我就是这么做的,效果很好。)

您还可以查看backspace设置,以控制插入模式下的退格、删除、Control+W和Control+U的工作方式。我的设置如下:

set backspace=indent,eol,start

这使我可以删除几乎所有的东西。

有关更多信息,请参见Vim帮助中的这些主题:

:help 'whichwrap
:help 'backspace

能否解释一下这些是干什么的?(具体来说,<>[] 分别代表什么意思?) - anon
这里提供一个适用于浏览器的 :help 'whichwrap' 版本链接:https://vimhelp.appspot.com/options.txt.html#%27whichwrap%27 - Adam Monsen
@Nic <> 分别代表正常模式和可视模式下的左/右箭头。[] 则分别代表插入模式和替换模式下的左/右箭头。这些选项在 Vim 的文档中有详细解释。输入 :help 'whichwrap' 获取更多信息。 - su2187

9
将以下内容放入您的 .vimrc 文件中:
set whichwrap+=<,>,[,]

你能解释一下这个做什么吗? - anon
@QPaysTaxes:whichwrap设置指定按下哪些键时会换到下一行/上一行,之后的字符分别在正常模式和插入模式下引用光标键。如果您希望,还可以添加例如h,l以使vim移动键也换行。 - Matti Virkkunen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接