我使用 vim 的源代码格式化功能(=
键将格式化您的选择,按下gg=G
将格式化整个源代码)。
但是,当遇到换行符时,它似乎无法正确格式化(\\
)。当它看到这些换行符时,它总是会缩进下一个段落。
有没有什么办法解决这一问题?
答案1
这似乎是 Vim 的一个错误。[不对。请参阅下面的编辑。--garyjohn]如果你像这样启动 Vim,
vim -N -u NONE
这样就不会加载任何配置文件或插件,然后尝试您的示例,这些行仍然会按您描述的方式缩进。在这种情况下,我认为 Vim 不应该进行任何缩进,因为所有缩进选项(例如“autoindent”、“cindent”)都已关闭。不过,以下命令似乎可以解决这个问题:
:set cinoptions=+0
这告诉 Vim 不要缩进连续行。如果未设置 'cindent',则该设置不会产生任何影响,但无论如何它似乎都会产生影响。
我在 Linux 上使用 Vim 7.2.148。
编辑:
这不是 Vim 的一个错误。根据 Vim 的作者的说法,这不是一个错误,而是期望的行为。他说 = 缩进函数应该默认执行某些操作,因此它遵循 C 缩进设置。设置 'cindent' 仅允许自动的缩进,例如,当您按下 Enter 键时。(实际缩进是两个“shiftwidth”,而不是文档中所述的一个,这是另一个问题。)
由于您真正想要的是某种 LaTeX 代码缩进,因此将 'cinoptions' 设置为“+0”也不是真正的解决方案。Vim 没有提供任何针对 LaTeX 的缩进规则,因此您可能需要安装其中一个 LaTeX 插件。我使用VIM-LaTeX 套件,但你可以去 Vim 的高级搜索页面和搜索“latex”脚本。