Hacking VIM 之定製 自定義高亮

2021-04-13 05:51:04 字數 3065 閱讀 7473

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顯示的資訊是很簡短的,只是在右邊顯示當前游標所在的行和列以及當前開啟的檔案 如果有的話 當你執行乙個命令的時候,狀態列將會被命令列替代,如果命令執行後輸出了資訊,則也會顯示在狀態列的右邊。...