vim中文教程(oeasy教您玩转vim-89)
高亮细节 highight回忆
- 这个自动命令 autocmd 还是很方便的
- 打开时、保存时就会有自动执行的操作
- 自动命令有这么几大元素 {event} 触发事件 {pattern} 文件模式 {cmd} 具体执行命令 {augroup} 命令组
- 自动命令可以新建、删除、列表、查询
- 还可以强制执行
- 有这个我们可以 针对每种不同的文件的类型 定义相应的触发事件 然后执行各种各样的命令 方便操作
- 不过关于文件类型的高亮显示还是没有讲的特别清楚 为什么public在java文件里面就可以改变颜色呢??
git clone http://gitee.com/overmind1980/oeasyvim.git
cd oeasyvim
vi oeasy.java
- 字符串是棕色的
- public、void是绿色的
- :colorscheme murphy
- 我们发现在murphy颜色方案下
- 字符串不变色了
- public、void也不变色了
- :hi
- 查看不到为什么public没有改变颜色
- 我要找到关于java语法定义Syntax的文件java.vim
- 于是我搜索一下
- sudo find / -name java.vim
- 这三个java.vim都位于系统的配置文件夹中 ftplugin 对应java的系统插件 ft 是 filetype plugin 是 插件 /usr/share/vim/vim81/ftplugin/ 对应系统的插件 ~/.vim/ftplugin 对于用户的插件 indent 对应java的系统缩进 syntax 对应java的系统语法
- ls /usr/share/vim/vim81/syntax/java.vim
- vi /usr/share/vim/vim81/syntax/java.vim
- /String 找到41个匹配
- /\<String\> 找到3个匹配
- 大概率String本身就是那个高亮元素
- :q 退回到oeasy.java
- :colorscheme murphy
- :hi String ctermfg=brown hi 是highlight String是需要定义颜色的组名称 cterm是color terminal foreground brown 是棕色
- String的高亮设置成功
- 我们来分析一下什么是String
- :e /usr/share/vim/vim81/syntax/java.vim
- /\<String\>
- /javaString
- /\<javaString\>
- :set wrap
- 大致是定义了一个region区域javaString
- 然后和让javaString连接到了String上
- 在syntax/java.vim定义了各种区域region 有些是关键字keywords 有些是字符串String
- 不过具体给这些定义好的区域上什么颜色
- 还是得配色文件来完成 比如murphy.vim
- 在murphy.vim目前没有定义String这个区域的颜色
- 但是我们在最后强行hi String ctermfg=brown了
- 难道murphy.vim就真没有String区域的颜色定义么?
- 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配色
- 设置成功
- 我们再来看看 public 等关键字
- vi /usr/share/vim/vim81/syntax/java.vim
- /public
- public、protected这些关键字都已经被定义到了一个javaScopeDecl里面
- 鼠标放到 javaScopeDecl 上 按下*
- 我们可以发现javaScopeDecl被定义为javaStorageClass
- javaStorageClass被定义为StorageClass
- 回到oeasy.java
- :hi StorageClass=cyan
- 修改成功
- sudo vi /usr/share/vim/vim81/colors/murphy.vim
- 在最后添加 :hi StorageClass=cyan
- 然后再打开oeasy.java
- 试验成功!!!
- 我们这次研究了一下配色方案 murphy虽然配色好看 但是对于java的支持并不好 我们对于murphy进行了修改 增加了String、StorageClass颜色的定义 整体思路是在syntax中定义组 然后在配色方案中对于组进行颜色设置
- 可是syntax中如何定义组的呢?
- 下次再说!
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com