在
vim中,高亮的特性被稱為
匹配(matching)。
使用匹配,
vim幾乎可以標記任何字元,數字,句子和行及其組合,你甚至可以選擇讓
vim來如何標記,比如用紅色標記錯誤,綠色標記重要的單詞等等。
匹配可以使用下面的命令來實現:
:match
group
/pattern/
此命令包含兩個引數,第乙個引數是在使用高亮的時候所要標記的顏色組
(color group)
的名字。第二個引數是你想要匹配的模式。整個模式是乙個正規表示式,根據你想匹配的內容,可能會很簡單,也可能會很複雜。乙個簡單的例子是:
:match errormsg
/^error/
此命令查詢所有行的開頭
(^標誌
)是否包含有
error
,如果找到了匹配,則標記成
errormsg
顏色組的顏色
(一般是紅底白字)。
:so $vimruntime
/syntax
/hitest.vim
:highlight mygroup ctermbg
=red guibg
=red gctermfg
=yellowguifg
=yellow term
=bold
這個命令建立了乙個叫
mygroup
的顏色組,無論是在終端還是在
gui中都是紅底黃字的。你可以根據自己的喜好來設定下面的選項:
ctermbg : console下的背景顏色
guibg : gvim下的背景顏色
ctermfg : console下的文字顏色
guifg : gvim下的文字顏色
gui : gvim的字型描述
term : console 下的字型描述(如bold)
如果修改了已有的顏色組,則將會改變會話以後的顏色組顯示。
但使用乙個
match
命令後,將會一直匹配到執行乙個新的匹配或者執行下面的命令:
:match none
match
命令一次只能匹配乙個模式,
vim提供了可以匹配多大三個模式的命令
我們用一些例子來顯示匹配的威力:例子1
: 在郵件中,一般來說最好一行不要超過
74個字元
(這種規則也可見於一些比較古老的程式語言如
fortran-77)
。在vim
中,當一行超過給定的字元的時候希望能夠警告,這可以通過下面的命令來實現:
:match errormsg //%>73v./+/
這裡,超過第
73個字元的其他字元都會標記成錯誤。這個匹配的正規表示式可以分解成:
/%> : match after column with the number right after this
73 : the column number
v : combined with the previous command, this means that the next part is very
magic. see :help magic for more info.
./+ : match one or more of any character.
例子2:
在程式設計的時候,
tab僅僅用來縮排**是乙個好的習慣。儘管如此,有時候很難遵守,好了,現在我們可以使用乙個簡單的匹配來避免這種情況。下面的命令將標記任何不是在行開頭的
tab為錯誤:
:match errormsg
/[^/t]/zs/t/+/
現在你可以使用這個匹配來檢查含在**中的
tab了,這個正則包含下面幾部分:
[^ : begin a group of characters that should not be matched
/t : the tab-character
] : end of character group.
/zs : a zero-width match that places the 'matching' at the beginning of the line
ignoring any whitespaces
/t/+ : one or more tabs in a row.
這條命令就是說:不要匹配任何的
tab字元,而僅僅匹配不是出現在行開頭的
tab(去除包含的空格)。
如果你僅僅想使用空格字元用來縮排,則可以用下面的命令:
:match errormsg /[/t]/
這條命令是說匹配所有的
tab字元。 例子
3:如果你輸入大量的
ip位址,有些時候你可能會輸入一些錯誤的值,比如
123.123.123.256
,為了防止這種錯誤,你可以將下面的匹配加入到你的
vimrc
檔案中:
match errormsg //(2[5][6-9]/|2[6-9][0-9]/|[3-9][0-9][0-9]/)[.]
/[0-9]/[.][0-9]/[.][0-9]//|
/[0-9]/[.]/(2[5][6-9]/|2[6-9][0-9]/|/
// /[3-9][0-9][0-9]/)[.][0-9]/[.][0-9]
///|/[0-9]/[.][0-9]/[.]/(2[5]
// /[6-9]/|/2[6-9][0-9]|[3-9][0-9][0-9]/)[.]
[0-9]/
儘管它看起來為了解決這個小問題而顯得有些複雜,但是應該記住的是即使可能只是會有用一次,但是也是值得新增到
vimrc
檔案中去的。
如果你想匹配乙個合法的ip
match todo //(/(25[0-5]/|2[0-4][0-9]/|[01]/?[0-9]
[0-9]/?/)/./)
// //(25[0-5]/|2[0-4][0-9]/|[01]/?
[0-9][0-9]/?/)/
Hacking VIM 之定製 改變字型
在控制台下的vim是不能夠改變字型的,因為字型的改變是隨著終端字型的變化而變化的,但是在gvim中,你卻有權力將字型改變成自己想要的樣子。在linux下設定字型的命令是 set guifont courier 14 而在windows下則是 setguifont courier 14 當然,如果需要...
Hacking VIM 之定製 自定義狀態列
在vim編輯器的底部,你可以發現兩個東西 乙個是命令列緩衝 可以輸入命令 另外乙個是狀態列。在預設情況下,vim顯示的資訊是很簡短的,只是在右邊顯示當前游標所在的行和列以及當前開啟的檔案 如果有的話 當你執行乙個命令的時候,狀態列將會被命令列替代,如果命令執行後輸出了資訊,則也會顯示在狀態列的右邊。...
Hacking VIM 之定製 自定義狀態列
在vim編輯器的底部,你可以發現兩個東西 乙個是命令列緩衝 可以輸入命令 另外乙個是狀態列。在預設情況下,vim顯示的資訊是很簡短的,只是在右邊顯示當前游標所在的行和列以及當前開啟的檔案 如果有的話 當你執行乙個命令的時候,狀態列將會被命令列替代,如果命令執行後輸出了資訊,則也會顯示在狀態列的右邊。...