2012-03-17 82 views
1

我有一段我的vimrc(我不完全理解),它將文本包裝在80列上,並且如果有這樣的一行,則爲多餘的紅色添加顏色。按文件類型禁用vim文本換行

set textwidth=80 
set tw=80 
set wrap 
highlight OverLength ctermbg=red ctermfg=white guibg=#592929 
match OverLength /\%81v.\+/ 

這工作得很好,一般,但我想禁用整個事情(包裝和匹配)時的文件類型爲.py(並原則,其它文件類型)。

類似,但並不完全在Limiting a match in vim to certain filetypes?

+0

這看起來像這個問題的重複:http://stackoverflow.com/questions/3146410/enablind-and-disabling-word-wrap-automatically-on-different-file-extensions-on-v – joce 2012-08-22 23:32:40

回答

3

首先,注意同樣的問題:twtextwidth是一回事(tw僅僅是縮略名,變量一般有一個長期和短期的形式),所以只有你在任何情況下都需要前兩行中的一行。

我懷疑你真正要找的是我之前尋找的東西,那就是:如何保持特定於各種文件類型的設置。它實際上變得相當複雜,因爲一些設置(如textwidth)是vim調用「本地緩衝區」,其他(如wrap)是「本地窗口」。差異歸結爲如果您(例如)運行vim foo.txt然後使用:split獲得兩個窗口查看foo.txt會發生什麼。現在有一個緩衝區,因此有一個textwidth,對於foo.txt,但有兩個窗口,因此有兩個wrap s。

直到您開始使用此功能的事情,但您可能只是想嘗試http://vim.wikia.com/wiki/VimTip1510中的建議,使每個設置取決於filetype設置爲。編輯名爲foo.py的文件將使用Python設置,因爲vim會自動爲名稱以.py結尾的文件設置filetype=python。如果文件名後綴未知或不明確(例如,編輯文件zog根本沒有後綴,但實際上是一個shell腳本,則可以手動:set filetype=sh),您可以手動設置文件類型(:set filetype=whatever),並且有很多你可以找到關於使vim自動識別特定文件類型的其他信息。

(另一個側面說明:我不跟他們設置tabstop=4同意;我用softtabstop=4smarttabsexpandtabs,使我得到什麼,但在我的* .py文件空間這就避免了標籤是否被放置在戰鬥每個4列或8列。:-))

至於突出顯示一般的長行,請參閱http://vim.wikia.com/wiki/Highlight_long_lines,以獲取有關您現在正在執行的操作的說明,以及如果您具有vim 7.3,爲什麼它已過時。另請參閱vim-80-column-layout-concerns