oeasy教您玩轉(zhuǎn)vim - 89 - # 高亮細(xì)節(jié)Highlight
高亮細(xì)節(jié) highight
回憶
這個自動命令
autocmd
還是很方便的打開時、保存時就會有自動執(zhí)行的操作
自動命令有這么幾大元素
{event}
觸發(fā)事件{pattern}
文件模式{cmd}
具體執(zhí)行命令{augroup}
命令組自動命令可以新建、刪除、列表、查詢
還可以強(qiáng)制執(zhí)行
有這個我們可以
針對每種不同的文件的類型
定義相應(yīng)的觸發(fā)事件
然后執(zhí)行各種各樣的命令
方便操作
不過關(guān)于文件類型的高亮顯示還是沒有講的特別清楚
為什么
public
在java
文件里面就可以改變顏色呢????
顏色方案
git clone http://gitee.com/overmind1980/oeasyvim.git cd oeasyvim vi oeasy.java

字符串是棕色的
public
、void
是綠色的:colorscheme murphy

我們發(fā)現(xiàn)在murphy顏色方案下
字符串不變色了
public
、void
也不變色了
查看配色
:hi

查看不到為什么
public
沒有改變顏色
語法文件syntax
我要找到關(guān)于java語法定義Syntax的文件
java.vim
于是我搜索一下
sudo find / -name java.vim

這三個java.vim都位于系統(tǒng)的配置文件夾中
ft 是 filetype
plugin 是 插件
/usr/share/vim/vim81/ftplugin/ 對應(yīng)系統(tǒng)的插件
~/.vim/ftplugin 對于用戶的插件
ftplugin 對應(yīng)java的系統(tǒng)插件
indent 對應(yīng)java的系統(tǒng)縮進(jìn)
syntax 對應(yīng)java的系統(tǒng)語法
ls /usr/share/vim/vim81/syntax/java.vim

vi /usr/share/vim/vim81/syntax/java.vim
查找String
/String
找到41個匹配
/\<String\>
找到3個匹配

大概率String本身就是那個高亮元素
:q
退回到oeasy.java
設(shè)置高亮
:colorscheme murphy
:hi String ctermfg=brown
hi 是highlight
String是需要定義顏色的組名稱
cterm是color terminal foreground
brown 是棕色

String的高亮設(shè)置成功
我們來分析一下什么是String
String的定義
:e /usr/share/vim/vim81/syntax/java.vim
/\<String\>

/javaString
/\<javaString\>
:set wrap

大致是定義了一個region區(qū)域javaString
然后和讓javaString連接到了String上
在syntax/java.vim定義了各種區(qū)域region
有些是關(guān)鍵字keywords
有些是字符串String
不過具體給這些定義好的區(qū)域上什么顏色
還是得配色文件來完成
比如murphy.vim
在
murphy.vim
目前沒有定義String這個區(qū)域的顏色但是我們在最后強(qiáng)行
hi String ctermfg=brown
了難道
murphy.vim
就真沒有String
區(qū)域的顏色定義么?
murphy.vim
sudo find / -name murphy.vim
vi /usr/share/vim/vim81/colors/murphy.vim
/String

sudo vi /usr/share/vim/vim81/colors/murphy.vim
在最末一行加上一句

保存murphy.vim并退出
vi oeasy.java
再切換到murphy配色設(shè)置成功
我們再來看看
public
等關(guān)鍵字
找到public
vi /usr/share/vim/vim81/syntax/java.vim
/public

public、protected這些關(guān)鍵字都已經(jīng)被定義到了一個javaScopeDecl里面
鼠標(biāo)放到
javaScopeDecl
上 按下*

我們可以發(fā)現(xiàn)
javaScopeDecl
被定義為javaStorageClass
javaStorageClass
被定義為StorageClass
嘗試修改
回到
oeasy.java
:hi StorageClass=cyan

修改成功
sudo vi /usr/share/vim/vim81/colors/murphy.vim
在最后添加
:hi StorageClass=cyan
然后再打開
oeasy.java
試驗(yàn)成功?。?!
總結(jié)
我們這次研究了一下配色方案
murphy雖然配色好看
但是對于java的支持并不好
我們對于murphy進(jìn)行了修改
增加了
String
、StorageClass
顏色的定義整體思路是在syntax中定義組
然后在配色方案中對于組進(jìn)行顏色設(shè)置
可是syntax中如何定義組的呢???
下次再說!