我想做和这个问题相反的事情:
不知何故,git决定在72个字符处换行我的提交消息。我根本不想让它们换行...而且我也没有做任何启用换行的操作。
现在,当我正在编辑提交注释时,我当然可以输入:
:set textwidth&
这将停止换行,但我不想每次都这样做。
附加信息:
- 我正在使用Devuan GNU/Linux 3(~= Debian 10)。
:set ft?
显示filetype=gitcommit
- 当我刚开始使用vim或编辑任何现有文件时,都不会发生换行。
我想做和这个问题相反的事情:
不知何故,git决定在72个字符处换行我的提交消息。我根本不想让它们换行...而且我也没有做任何启用换行的操作。
现在,当我正在编辑提交注释时,我当然可以输入:
:set textwidth&
这将停止换行,但我不想每次都这样做。
附加信息:
:set ft?
显示filetype=gitcommit
因为Vim识别到文件类型(gitcommit
),并为此加载特定于文件类型的设置,所以您会得到这些git提交消息的设置。
在这种情况下,它来自文件$VIMRUNTIME/ftplugin/gitcommit.vim
,其中包括以下行:
setlocal nomodeline tabstop=8 formatoptions+=tl textwidth=72
gitcommit
文件类型插件来覆盖它,该插件会在 Vim 运行时之后加载。~/.vim/after/ftplugin/gitcommit.vim
的文件来实现这一点(假设您正在使用 Vim,如果您使用 NeoVim,则路径的初始部分将有所不同)。after
目录用于加载在最后的插件文件,因此通过将文件放置在那里,您可以确保您的代码将在上述代码之后运行。setlocal textwidth&
或者:
setlocal formatoptions-=t formatoptions-=l
这两个设置中的任何一个都将防止自动在第72列断行。更改 'formatoptions'
而不是重置 'textwidth'
的优点在于,仅通过更改 'formatoptions'
,您仍然可以使用诸如 gq
等命令手动格式化文本块以符合 72 字符行宽限制,如果您希望这样做,则可以获得最佳效果。
无论您决定设置哪个选项,请确保使用 :setlocal
而不是 :set
,因为该插件仅针对该缓冲区加载,您应尽量仅修改该缓冲区的选项并避免触及全局选项。
setlocal textwidth&
是有效的,而 formatoptions-=tc
则无效... - einpoklum:setlocal
而不是 :set
与它们中的任何一个!我会重新表述一下,让它看起来更好。 - filbrandenset formatoptions-=abc
:我发现 -=
不能如预期般减去一组字母标记。它仅在 'formatoptions'
包含 abc
作为子字符串时才起作用,也就是说,它必须包含以这种确切顺序且之间没有其他字母的 abc
字母。否则,将不会发生任何事情。您应该逐个删除它们。 - Maëlan~/.config/nvim/after/ftplugin/gitcommit.vim
,或 Windows 上的 $env:LOCALAPPDATA/nvim/after/ftplugin/gitcommit.vim
。 - pcesarperez另一种方法是在您的vimrc中添加一个自动命令。如果您在
.vimrc
之后的任何时间添加它,那么每次打开文件时都会执行该命令。
filetype plugin on
如果在vim中设置了wrap
选项,当你打开一个文件时,它会覆盖ftplugin中的任何内容。我用这个方法来关闭git提交中的换行。
" Stops gitcommit from auto wrapping
au Filetype gitcommit call SetGitCommit()
func SetGitCommit()
setlocal formatoptions-=tl
endfunc
formatoptions
中仅提取 t
就足够了,我们不需要将其包装在函数中。因此,以下代码就可以实现:au Filetype gitcommit setlocal formatoptions-=t
。 - M Imam Pratama/.config/nvim/after/ftplugin/gitcommit.vim
或Windows上的$env:LOCALAPPDATA/nvim/after/ftplugin/gitcommit.vim
。感谢@pcesarperez的所有贡献;我只是从第一个答案中复制了他的评论。
:set ft?
的输出是什么?它是gitcommit
还是只是commit
或类似的东西?了解文件类型后,您可以添加覆盖。 - filbranden