我想要有一個80字符的默認textwidth,除了像txt
這樣的幾個文件擴展名。除了我第一次編輯(並創建)txt
文件時,下列行似乎可行。如何爲.vimrc中的特定文件擴展名設置不同的textwidths?
setlocal textwidth=80
autocmd bufreadpre *.txt set textwidth=0
這樣做的正確方法是什麼?
我想要有一個80字符的默認textwidth,除了像txt
這樣的幾個文件擴展名。除了我第一次編輯(並創建)txt
文件時,下列行似乎可行。如何爲.vimrc中的特定文件擴展名設置不同的textwidths?
setlocal textwidth=80
autocmd bufreadpre *.txt set textwidth=0
這樣做的正確方法是什麼?
使用setlocal
autocmd bufreadpre *.txt setlocal textwidth=0
,而不是set
。
使用setlocal
確保您設置的值在當前緩衝區中設置,而不是在所有緩衝區中設置。
首先,你的範圍是錯誤的;全局默認使用:set
,:autocmd
使用:setlocal
作爲緩衝區本地覆蓋。
二,BufReadPre
僅用於讀取現有文件,而不是新文件;這就是爲什麼它第一次無法正常工作。相反,你應該使用BufNew,BufRead
;這會捕獲這兩種情況,並且僅在之後應用文件被讀取,所以當您使用模式行或在文件類型插件中設置時它仍然可以工作。
三,:autocmd
解決方案一旦你有很多的自定義,往往會變得笨拙。如果您只想啓用某些文件類型的設置,請將相應的:setlocal
命令放入~/.vim/after/ftplugin/<filetype>.vim
,其中<filetype>
是實際的文件類型(例如java
)。 (這需要你有:filetype plugin on
;使用後目錄可以讓你覆蓋由$VIMRUNTIME/ftplugin/<filetype>.vim
做過任何文件類型的默認設置)
謝謝。我唯一需要注意的是,如果您保存了vim會話中的一個存在並進行此更改,則這些設置不會傳播到已存在的hpp或cpp文件。但是,如果你使用hpp和cpp文件設置了一個新項目,這是行不通的。我的情況可能有一個解決方法,但是我只打開了2個選項卡和4個文件,因此重新創建會話非常簡單。 – 2015-02-12 19:40:02
我改成'setlocal',但問題仍然存在。 – 2013-04-26 15:34:45
@PaulBaltescu:如果您正在編輯一個預先存在的文本文件,單獨使用「textwidth」不會修改該行的大小,您必須選擇全部並使用'gq'來包裝行。 – 2013-04-26 16:31:38