Vim 設置 textwidth 和 formatoptions 無效解決方法

用 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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章