Vim 设置 textwidth 和 formatoptions 无效解决方法

本文详细解释了如何在Vim中通过修改配置文件来限制代码行数,特别是针对C++代码每行不超过80个字符的场景。通过设置`settextwidth`、`tinfo-tablemeansauto-wraptextusingtextwidth`和`setformatoptions+=t`,并利用`autocmd`函数确保特定文件类型的配置生效,避免被`ftplugin`覆盖。

用 vim 写代码,中有时需要限制每行最多的字符数,比如C++代码一般是每行最多80个字符。于是,我们很自然觉得在 vimrc 中设置如下语句应该没有问题

set textwidth=80
"t in fo-table means auto-wrap text using textwidth
set formatoptions+=t


关于,formatoptions可以查看vim的帮助文档,两个命令如下

:help formatoptions
:help fo-table

然而,我们发现这样的设置并不奏效。

在 vim 中使用如下命令可以查看我们的设置是否有效。

:set formatoptions

我们会看到,其实,t 并没有出现在 formatoptions 中。

原因在于,我们开启了 ftplugin。vim 会先读入 vimrc 的配置,接着检测文件类型,重新对 vim 的配置进行设置,即我们在 vimrc 的配置被覆盖了。

解决办法可以采用 vim 帮助文档提供的标准解决方法,命令如下

:help ftplugin-overrule

但是,这些解决方法我觉得都比较麻烦,我采用的方法是,在 vimrc 中增加如下配置

autocmd FileType c,cpp setlocal textwidth=80 formatoptions+=t

这样做可以解决问题,原因是 vim 启动时先读 vimrc 的配置,接着使用 ftplugin 对应的文件类型的配置文件对 vim 进行设置,最后,由于我们在 vimrc 定义了函数,检测到文件类型为 c 或者 cpp,那么,再 setlocal。你如果想要对所有的文件类型都使用配置,而不仅仅是 c 和 cpp,那么,将命令改为如下即可。

autocmd FileType * setlocal textwidth=80 formatoptions+=t


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值