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

vim中文教程(oeasy教您玩转vim-89)(1)

vim中文教程(oeasy教您玩转vim-89)(2)

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

vim中文教程(oeasy教您玩转vim-89)(3)

vim中文教程(oeasy教您玩转vim-89)(4)

vim中文教程(oeasy教您玩转vim-89)(5)

  • 我们发现在murphy颜色方案下
  • 字符串不变色了
  • public、void也不变色了
查看配色
  • :hi

vim中文教程(oeasy教您玩转vim-89)(6)

vim中文教程(oeasy教您玩转vim-89)(7)

  • 查看不到为什么public没有改变颜色
语法文件syntax
  • 我要找到关于java语法定义Syntax的文件java.vim
  • 于是我搜索一下
  • sudo find / -name java.vim

vim中文教程(oeasy教您玩转vim-89)(8)

vim中文教程(oeasy教您玩转vim-89)(9)

  • 这三个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

vim中文教程(oeasy教您玩转vim-89)(10)

vim中文教程(oeasy教您玩转vim-89)(11)

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

vim中文教程(oeasy教您玩转vim-89)(12)

vim中文教程(oeasy教您玩转vim-89)(13)

  • 大概率String本身就是那个高亮元素
  • :q 退回到oeasy.java
设置高亮
  • :colorscheme murphy
  • :hi String ctermfg=brown hi 是highlight String是需要定义颜色的组名称 cterm是color terminal foreground brown 是棕色

vim中文教程(oeasy教您玩转vim-89)(14)

vim中文教程(oeasy教您玩转vim-89)(15)

  • String的高亮设置成功
  • 我们来分析一下什么是String
String的定义
  • :e /usr/share/vim/vim81/syntax/java.vim
  • /\<String\>

vim中文教程(oeasy教您玩转vim-89)(16)

vim中文教程(oeasy教您玩转vim-89)(17)

  • /javaString
  • /\<javaString\>
  • :set wrap

vim中文教程(oeasy教您玩转vim-89)(18)

vim中文教程(oeasy教您玩转vim-89)(19)

  • 大致是定义了一个region区域javaString
  • 然后和让javaString连接到了String上
  • 在syntax/java.vim定义了各种区域region 有些是关键字keywords 有些是字符串String
  • 不过具体给这些定义好的区域上什么颜色
  • 还是得配色文件来完成 比如murphy.vim
  • 在murphy.vim目前没有定义String这个区域的颜色
  • 但是我们在最后强行hi String ctermfg=brown了
  • 难道murphy.vim就真没有String区域的颜色定义么?
murphy.vim
  • sudo find / -name murphy.vim
  • vi /usr/share/vim/vim81/colors/murphy.vim
  • /String

vim中文教程(oeasy教您玩转vim-89)(20)

vim中文教程(oeasy教您玩转vim-89)(21)

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

vim中文教程(oeasy教您玩转vim-89)(22)

vim中文教程(oeasy教您玩转vim-89)(23)

  • 保存murphy.vim并退出
  • vi oeasy.java 再切换到murphy配色
  • 设置成功
  • 我们再来看看 public 等关键字
找到public
  • vi /usr/share/vim/vim81/syntax/java.vim
  • /public

vim中文教程(oeasy教您玩转vim-89)(24)

  • 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

    分享
    投诉
    首页