自己動手擴充套件vim外掛——配色篇
自己動手擴充套件vim外掛——配色篇
By 馬冬亮(凝霜 Loki)
一個人的戰爭(http://blog.csdn.net/MDL13412)
本文背景
用過功能稍微完善一點的編輯器的朋友都知道,可以在設定中自定義字型顏色、背景顏色、關鍵字顏色等,從而提升我們的開發效率。而對於vim這樣的編輯器來說,當然少不了這些功能,不但如此,在下文我將給大家展示其他編輯器所望塵莫及的靈活性。
在vimcolorschemetest站點上,有數以千計的vim主題外掛,然而每款主題或多或少都有我們不滿意的地方,這就需要我們自己動手來進行擴充套件。本文就是我在定製vim主題時的一些經驗心得,特此分享給廣大vimer.
基礎知識
- 在vim中,主題也是以外掛形式存在的。其中系統自帶的主題,存放在$VIMRUNTIME/colors資料夾下,以*.vim命名。(注:檢視$VIMRUNTIME請在vim中執行 :echo $VIMRUNTIME)
- 使用者自定義的主題一般不放在系統目錄下,而是放在~/.vim/colors目錄下,這樣不會干擾到其他使用者,同時也方便備份自己的vim配置。
- 更換vim主題的命令為:
:colorscheme 主題外掛名稱
- 但是這樣只能臨時改變vim主題,退出後又會恢復原樣,如果想永久改變,請在~/.vimrc中新增:
colorscheme 主題外掛名稱
準備工作
由於我不使用Windows下的gvim,而是在linux下或遠端ssh使用終端下的vim,因此首先需要在~/.vimrc中新增開啟256顏色支援:
set t_Co=256
為了能在編輯程式時高亮顯示關鍵字,還需要在~/.vimrc中開啟語法高亮顯示:
做完上述的準備工作後,讓我們正式開始定製主題之旅吧!syntax enable syntax on
定製主題
主題色調
在配置其他屬性前,首先要配置主題整體的色調,只有兩個選擇:dark和light(暗色調和亮色調)。對於經常閱讀和編寫程式碼的程式設計師來說,暗色調是更好的選擇:
接下來,需要重新設定一下語法高亮,否則設定不會生效:set background=dark
if version > 580 hi clear if exists("syntax_on") syntax reset endif endif
主題名稱
主題名稱是無引數呼叫 :colorscheme 時返回的資訊,用於分辨不同主題,其設定如下:
let g:colors_name="nslib_color256"
基礎屬性
由於vim可以在黑白終端、彩色終端、GUI介面下執行,所以需要對其分貝進行配置,下面給出一個簡要的文件說明:
對於黑白終端,我們沒有配置的必要,因此主要的配置工作集中在彩色終端與GUI介面上,又由於彩色終端與GUI介面的配置只是關鍵字不同,因此這裡只選取彩色終端進行說明。term 黑白終端的屬性 cterm 彩色終端的屬性 ctermfg 彩色終端前景色 ctermbg 彩色終端背景色 gui GUI屬性 guifg GUI前景色 guibg GUI背景色
由於不是所有終端都支援256色,因此使用一些安全色會使我們的主題更有移植性,而GUI可以支援所有顏色,不在考慮範圍之內,vim文件給出的安全色如下:
"0 Black "1 DarkBlue "2 DarkGreen "3 DarkCyan "4 DarkRed "5 DarkMagenta "6 Brown, DarkYellow "7 LightGray, LightGrey, Gray, Grey "8 DarkGray, DarkGrey "9 Blue, LightBlue "10 Green, LightGreen "11 Cyan, LightCyan "12 Red, LightRed "13 Magenta, LightMagenta "14 Yellow, LightYellow "15 White
配色語法
下面舉例說明配色語法:其中,hi是highlight命令的縮寫,用於高亮配置;Type是要配色的元素名稱;引數採用的是Key=Value的形式。hi Type ctermfg=LightYellow ctermbg=Black cterm=bold
元素列表
配置顏色的語法非常簡單,無需累贅,下面將分類介紹常用的元素標籤:
狀態列提示資訊
hi StatusLine 狀態列 hi StatusLineNC 非當前視窗的狀態列 ErrorMsg 錯誤資訊 WarningMsg 警告資訊 ModeMsg 當前模式 MoreMsg 其他文字 Question 詢問使用者 Error 錯誤
文字搜尋
hi IncSearch 增量搜尋時匹配的文字符串 hi Search 匹配的文字串
彈出選單
Pmenu 彈出選單 PmenuSel 選單當前選擇項
窗體邊框相關
VertSplit 垂直分割視窗的邊框 LineNr 行號 Cursor 游標所在字元 CursorLine 游標所在行 ColorColumn 游標所在列 ColorColumn 標尺 NonText 視窗尾部的~和@,以及文字里實際不顯示的字元
diff模式
DiffAdd diff模式增加的行 DiffChange diff模式改變的行 DiffDelete diff模式刪除的行 DiffText diff模式插入文字
C/C++語法
Comment 註釋 PreProc 預處理 Type 資料型別 Constant 常量 Statement 控制語句 Special 字串中的中的特殊字元 String 字串 cCppString Cpp字串 Number 數字 Todo TODO、HACK、FIXME等標籤
我的主題
截圖
配置檔案
set background=dark if version > 580 hi clear if exists("syntax_on") syntax reset endif endif let g:colors_name="nslib_color256" hi Normal ctermfg=Grey ctermbg=Black hi ColorColumn ctermfg=White ctermbg=Grey · hi ErrorMsg term=standout hi ErrorMsg ctermfg=LightBlue ctermbg=DarkBlue hi WarningMsg term=standout hi WarningMsg ctermfg=LightBlue ctermbg=DarkBlue hi ModeMsg term=bold cterm=bold hi ModeMsg ctermfg=LightBlue ctermbg=Black hi MoreMsg term=bold ctermfg=LightGreen hi MoreMsg ctermfg=LightBlue ctermbg=Black hi Question term=standout gui=bold hi Question ctermfg=LightBlue ctermbg=Black hi Error term=bold cterm=bold hi Error ctermfg=LightBlue ctermbg=Black · hi LineNr ctermfg=LightBlue ctermbg=Black hi CursorColumn ctermfg=White ctermbg=Grey hi CursorLine ctermfg=LightBlue ctermbg=Black hi ColorColumn ctermfg=White ctermbg=Grey · hi IncSearch ctermfg=Black ctermbg=DarkGrey hi Search ctermfg=Black ctermbg=DarkGrey hi StatusLine term=bold cterm=bold hi StatusLine ctermfg=Black ctermbg=Grey hi StatusLineNC term=bold cterm=bold hi StatusLineNC ctermfg=Black ctermbg=Grey · hi VertSplit ctermfg=Grey ctermbg=Grey hi Visual term=bold cterm=bold hi Visual ctermfg=Black ctermbg=Grey · highlight Pmenu ctermfg=Black ctermbg=Grey highlight PmenuSel ctermfg=LightBlue ctermbg=DarkBlue · hi Comment ctermfg=DarkCyan ctermbg=Black hi PreProc ctermfg=Blue ctermbg=Black hi Type ctermfg=LightYellow ctermbg=Black cterm=bold hi Constant ctermfg=Blue ctermbg=Black cterm=bold hi Statement ctermfg=LightYellow ctermbg=Black cterm=bold hi Special ctermfg=Red ctermbg=Black cterm=bold hi SpecialKey ctermfg=Red ctermbg=Black cterm=bold hi Number ctermfg=Blue ctermbg=Black hi cCppString ctermfg=Red ctermbg=Black hi String ctermfg=Red ctermbg=Black hi Identifier ctermfg=Red ctermbg=Black cterm=bold hi Todo ctermfg=Black ctermbg=Gray cterm=bold hi NonText ctermfg=LightBlue ctermbg=Black hi Directory ctermfg=Blue ctermbg=Black hi Folded ctermfg=DarkBlue ctermbg=Black cterm=bold hi FoldColumn ctermfg=LightBlue ctermbg=Black hi Underlined ctermfg=LightBlue ctermbg=Black cterm=underline hi Title ctermfg=LightBlue ctermbg=Black hi Ignore ctermfg=LightBlue ctermbg=Black hi Directory ctermfg=LightBlue ctermbg=Black hi browseSynopsis ctermfg=LightBlue ctermbg=Black hi browseCurDir ctermfg=LightBlue ctermbg=Black hi favoriteDirectory ctermfg=LightBlue ctermbg=Black hi browseDirectory ctermfg=LightBlue ctermbg=Black hi browseSuffixInfo ctermfg=LightBlue ctermbg=Black hi browseSortBy ctermfg=LightBlue ctermbg=Black hi browseFilter ctermfg=LightBlue ctermbg=Black hi browseFiletime ctermfg=LightBlue ctermbg=Black hi browseSuffixes ctermfg=LightBlue ctermbg=Black hi TagListComment ctermfg=LightBlue ctermbg=Black hi TagListFileName ctermfg=LightBlue ctermbg=Black hi TagListTitle ctermfg=LightBlue ctermbg=Black hi TagListTagScope ctermfg=LightBlue ctermbg=Black hi TagListTagName ctermfg=LightBlue ctermbg=Black hi Tag ctermfg=LightBlue ctermbg=Black
總結
vim的靈活性極強,可以配置其他編輯器無法配置的選項,很適合我這種喜歡折騰的人:-)
相關文章
- [外掛擴充套件]三級聯動外掛!!!!!!!!套件
- [外掛擴充套件]自己寫的外掛。怎麼後臺?套件
- [外掛擴充套件]Ping外掛套件
- jQuery外掛擴充套件jQuery套件
- jQuery擴充套件外掛jQuery套件
- [外掛擴充套件]jQueryFileUpload套件jQuery
- [外掛擴充套件]更新IP外掛套件
- [外掛擴充套件]附件Attachment外掛套件
- [外掛擴充套件]投票外掛1.0套件
- [外掛擴充套件]外掛需求徵集套件
- [外掛擴充套件]【小白練手】 51啦統計外掛套件
- [外掛擴充套件]廣告外掛2.0套件
- [外掛擴充套件]焦點圖外掛套件
- [外掛擴充套件]單頁管理外掛套件
- [外掛擴充套件]邀請碼外掛套件
- [外掛擴充套件]騰訊分析外掛套件
- [外掛擴充套件]修改密碼外掛套件密碼
- [外掛擴充套件]友情連結——外掛套件
- [外掛擴充套件]qq登入外掛套件
- [外掛擴充套件]留言版外掛套件
- 外掛擴充套件需求_好友套件
- iOS 通知擴充套件外掛iOS套件
- [外掛擴充套件]canvas小動畫 - 青蛙掛件套件Canvas動畫
- [外掛擴充套件]幻燈片 | 滾動圖片 外掛套件
- [外掛擴充套件]APP極光推送外掛!套件APP
- [外掛擴充套件]百度分享外掛套件
- [外掛擴充套件]跪求時間軸外掛套件
- [外掛擴充套件]防護雲Iswaf外掛套件
- [外掛擴充套件]返回頂部ReturnTop外掛套件
- [外掛擴充套件]圖片輪播外掛套件
- [外掛擴充套件]計劃任務外掛套件
- [外掛擴充套件]js版本分頁外掛套件JS
- [外掛擴充套件]轉向移動端ToMobile套件
- [外掛擴充套件]書架外掛(新外掛後臺)套件
- [外掛擴充套件]圖片牆套件
- 建立VS Code 擴充套件外掛套件
- [外掛擴充套件]微信外掛Wechat1.0套件
- [外掛擴充套件]百度統計外掛套件
- [外掛擴充套件]廣告圖片漂浮外掛套件