自己動手擴充vim外掛程式——配色篇

來源:互聯網
上載者:User
文章目錄
  • 本文背景
  • 基礎知識
  • 準備工作
  • 定製主題
  • 我的主題
  • 總結

自己動手擴充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 enablesyntax on 

做完上述的準備工作後,讓我們正式開始定製主題之旅吧!

定製主題
主題色調

在配置其他屬性前,首先要配置主題整體的色調,只有兩個選擇:dark和light(暗色調和亮色調)。對於經常閱讀和編寫代碼的程式員來說,暗色調是更好的選擇:

set background=dark

接下來,需要重新設定一下文法高亮,否則設定不會生效:

if version > 580    hi clear    if exists("syntax_on")        syntax reset    endifendif

主題名稱

主題名稱是無參數調用 :colorscheme 時返回的資訊,用於分辨不同主題,其設定如下:

let g:colors_name="nslib_color256"

基礎屬性

由於vim可以在黑白終端、彩色終端、GUI介面下運行,所以需要對其分貝進行配置,下面給出一個簡要的文檔說明:

term         黑白終端的屬性cterm        彩色終端的屬性ctermfg      彩色終端前景色彩ctermbg      彩色終端背景色gui          GUI屬性guifg        GUI前景色彩guibg        GUI背景色

對於黑白終端,我們沒有配置的必要,因此主要的配置工作集中在彩色終端與GUI介面上,又由於彩色終端與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 Type             ctermfg=LightYellow     ctermbg=Black           cterm=bold

其中,hihighlight命令的縮寫,用於高亮配置;Type是要配色的元素名稱;參數採用的是Key=Value的形式。

元素列表

配置顏色的文法非常簡單,無需累贅,下面將分類介紹常用的元素標籤:

狀態列提示資訊

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=darkif version > 580    hi clear    if exists("syntax_on")        syntax reset    endifendiflet 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=boldhi 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=Blackhi PreProc              ctermfg=Blue            ctermbg=Blackhi Type                 ctermfg=LightYellow     ctermbg=Black           cterm=boldhi Constant             ctermfg=Blue            ctermbg=Black           cterm=boldhi Statement            ctermfg=LightYellow     ctermbg=Black           cterm=boldhi Special              ctermfg=Red             ctermbg=Black           cterm=boldhi SpecialKey           ctermfg=Red             ctermbg=Black           cterm=boldhi Number               ctermfg=Blue            ctermbg=Blackhi cCppString           ctermfg=Red             ctermbg=Blackhi String               ctermfg=Red             ctermbg=Blackhi Identifier           ctermfg=Red             ctermbg=Black           cterm=boldhi Todo                 ctermfg=Black           ctermbg=Gray            cterm=boldhi NonText              ctermfg=LightBlue       ctermbg=Blackhi Directory            ctermfg=Blue            ctermbg=Blackhi Folded               ctermfg=DarkBlue        ctermbg=Black           cterm=boldhi FoldColumn           ctermfg=LightBlue       ctermbg=Blackhi Underlined           ctermfg=LightBlue       ctermbg=Black           cterm=underlinehi Title                ctermfg=LightBlue       ctermbg=Blackhi Ignore               ctermfg=LightBlue       ctermbg=Blackhi Directory            ctermfg=LightBlue       ctermbg=Blackhi browseSynopsis       ctermfg=LightBlue       ctermbg=Blackhi browseCurDir         ctermfg=LightBlue       ctermbg=Blackhi favoriteDirectory    ctermfg=LightBlue       ctermbg=Blackhi browseDirectory      ctermfg=LightBlue       ctermbg=Blackhi browseSuffixInfo     ctermfg=LightBlue       ctermbg=Blackhi browseSortBy         ctermfg=LightBlue       ctermbg=Blackhi browseFilter         ctermfg=LightBlue       ctermbg=Blackhi browseFiletime       ctermfg=LightBlue       ctermbg=Blackhi browseSuffixes       ctermfg=LightBlue       ctermbg=Blackhi TagListComment       ctermfg=LightBlue       ctermbg=Blackhi TagListFileName      ctermfg=LightBlue       ctermbg=Blackhi TagListTitle         ctermfg=LightBlue       ctermbg=Blackhi TagListTagScope      ctermfg=LightBlue       ctermbg=Blackhi TagListTagName       ctermfg=LightBlue       ctermbg=Blackhi Tag                  ctermfg=LightBlue       ctermbg=Black
總結

vim的靈活性極強,可以配置其他編輯器無法配置的選項,很適合我這種喜歡折騰的人:-)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.