5

我希望 vim 中默认的 textwidth 为 80,但如果特定文件类型有自己的文本宽度(特别是 gitcommit,其中 tw=72),我希望 vim 尊重该宽度。

在我的 .vimrc 中,我有一行:

set tw=80

我也试过

setlocal tw=80

然而,这似乎覆盖了 72 的 gitcommit 宽度。

如果我删除该行,那么 git 提交工作正常(在 72 处换行)但文本文件(例如)不会自动换行。

如果没有指定其他内容,是否可以将 vim 换行到 80,否则请遵循特定的文件类型说明?

顺便说一句,我认为这直到最近才起作用。我尝试从我的 .virmrc 中删除所有其他内容,但设置 tw=80,但这没有任何区别。

编辑:如果我打开一个 git commit 消息编辑器,然后运行

:verbose set tw?

vim 显示:

   textwidth=80
        Last set from ~/.vimrc
4

1 回答 1

6

Vim 已经涵盖了全局与缓冲区本地选项。正如你所描述的,你应该:set在你的全局默认值~/.vimrc,并且某些文件类型可能会覆盖全局默认值:setlocal

要进行故障排除,请尝试

:verbose set tw?

这应该告诉您最后修改选项值的位置。

编辑

对于ft=gitcommit,只有在(全局值)为空时才设置 textwidth 的特殊逻辑:

if &textwidth == 0
    " make sure that log messages play nice with git-log on standard terminals
    setlocal textwidth=72
    let b:undo_ftplugin .= "|setl tw<"
endif

您的全局设置会阻止此设置生效。解决方案是自己无条件设置 textwidth: 在~/.vim/after/ftplugin/gitcommit.vim中,输入:

    setlocal textwidth=72
    let b:undo_ftplugin .= "|setl tw<"
于 2013-04-08T06:55:24.887 回答