2013-04-26 49 views

回答

6

使用setlocal

autocmd bufreadpre *.txt setlocal textwidth=0 

,而不是set

使用setlocal確保您設置的值在當前緩衝區中設置,而不是在所有緩衝區中設置。

+0

我改成'setlocal',但問題仍然存在。 – 2013-04-26 15:34:45

+1

@PaulBaltescu:如果您正在編輯一個預先存在的文本文件,單獨使用「textwidth」不會修改該行的大小,您必須選擇全部並使用'gq'來包裝行。 – 2013-04-26 16:31:38

6

首先,你的範圍是錯誤的;全局默認使用:set:autocmd使用:setlocal作爲緩衝區本地覆蓋。

二,BufReadPre僅用於讀取現有文件,而不是新文件;這就是爲什麼它第一次無法正常工作。相反,你應該使用BufNew,BufRead;這會捕獲這兩種情況,並且僅在之後應用文件被讀取,所以當您使用模式行或在文件類型插件中設置時它仍然可以工作。

三,:autocmd解決方案一旦你有很多的自定義,往往會變得笨拙。如果您只想啓用某些文件類型的設置,請將相應的:setlocal命令放入~/.vim/after/ftplugin/<filetype>.vim,其中<filetype>是實際的文件類型(例如java)。 (這需要你有:filetype plugin on;使用目錄可以讓你覆蓋由$VIMRUNTIME/ftplugin/<filetype>.vim做過任何文件類型的默認設置)

+0

謝謝。我唯一需要注意的是,如果您保存了vim會話中的一個存在並進行此更改,則這些設置不會傳播到已存在的hpp或cpp文件。但是,如果你使用hpp和cpp文件設置了一個新項目,這是行不通的。我的情況可能有一個解決方法,但是我只打開了2個選項卡和4個文件,因此重新創建會話非常簡單。 – 2015-02-12 19:40:02

相關問題