oeasy教您玩转vim - 89 - # 高亮细节Highlight

零知识证明
• 阅读 889

高亮细节 highight

回忆

  • 这个自动命令 autocmd 还是很方便的
  • 打开时、保存时就会有自动执行的操作
  • 自动命令有这么几大元素

    • {event} 触发事件
    • {pattern} 文件模式
    • {cmd} 具体执行命令
    • {augroup} 命令组
  • 自动命令可以新建、删除、列表、查询
  • 还可以强制执行
  • 有这个我们可以

    • 针对每种不同的文件的类型
    • 定义相应的触发事件
    • 然后执行各种各样的命令
    • 方便操作
  • 不过关于文件类型的高亮显示还是没有讲的特别清楚

    • 为什么publicjava文件里面就可以改变颜色呢??🤔

颜色方案

git clone http://gitee.com/overmind1980/oeasyvim.git
cd oeasyvim
vi oeasy.java

oeasy教您玩转vim - 89 - #  高亮细节Highlight

  • 字符串是棕色的
  • publicvoid是绿色的
  • :colorscheme murphy

oeasy教您玩转vim - 89 - #  高亮细节Highlight

  • 我们发现在murphy颜色方案下
  • 字符串不变色了
  • publicvoid也不变色了

查看配色

  • :hi

oeasy教您玩转vim - 89 - #  高亮细节Highlight

  • 查看不到为什么public没有改变颜色

语法文件syntax

  • 我要找到关于java语法定义Syntax的文件java.vim
  • 于是我搜索一下
  • sudo find / -name java.vim

oeasy教您玩转vim - 89 - #  高亮细节Highlight

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

oeasy教您玩转vim - 89 - #  高亮细节Highlight

  • vi /usr/share/vim/vim81/syntax/java.vim

查找String

  • /String

    • 找到41个匹配
  • /\<String\>

    • 找到3个匹配

oeasy教您玩转vim - 89 - #  高亮细节Highlight

  • 大概率String本身就是那个高亮元素
  • :q 退回到oeasy.java

设置高亮

  • :colorscheme murphy
  • :hi String ctermfg=brown

    • hi 是highlight
    • String是需要定义颜色的组名称
    • cterm是color terminal foreground
    • brown 是棕色

oeasy教您玩转vim - 89 - #  高亮细节Highlight

  • String的高亮设置成功
  • 我们来分析一下什么是String

String的定义

  • :e /usr/share/vim/vim81/syntax/java.vim
  • /\<String\>

oeasy教您玩转vim - 89 - #  高亮细节Highlight

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

oeasy教您玩转vim - 89 - #  高亮细节Highlight

  • 大致是定义了一个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

oeasy教您玩转vim - 89 - #  高亮细节Highlight

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

oeasy教您玩转vim - 89 - #  高亮细节Highlight

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

找到public

  • vi /usr/share/vim/vim81/syntax/java.vim
  • /public

oeasy教您玩转vim - 89 - #  高亮细节Highlight

  • public、protected这些关键字都已经被定义到了一个javaScopeDecl里面
  • 鼠标放到 javaScopeDecl 上 按下*

oeasy教您玩转vim - 89 - #  高亮细节Highlight

  • 我们可以发现javaScopeDecl被定义为javaStorageClass
  • javaStorageClass被定义为StorageClass

尝试修改

  • 回到oeasy.java
  • :hi StorageClass=cyan

oeasy教您玩转vim - 89 - #  高亮细节Highlight

  • 修改成功
  • sudo vi /usr/share/vim/vim81/colors/murphy.vim
  • 在最后添加 :hi StorageClass=cyan
  • 然后再打开oeasy.java
  • 试验成功!!!

总结

  • 我们这次研究了一下配色方案

    • murphy虽然配色好看
    • 但是对于java的支持并不好
    • 我们对于murphy进行了修改
    • 增加了StringStorageClass颜色的定义
    • 整体思路是在syntax中定义组
    • 然后在配色方案中对于组进行颜色设置
  • 可是syntax中如何定义组的呢?🤔
  • 下次再说!
点赞
收藏
评论区
推荐文章
虾米大王 虾米大王
3年前
java代码027
code027.jsp自动刷新当前时间:
Wesley13 Wesley13
3年前
VS Code 中的代码自动补全和自动导入包
原文链接:VSCode中的代码自动补全和自动导入包(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fmaiyang.me%2Fpost%2F20180914tipsvscode%2F)
Wesley13 Wesley13
3年前
Android中_TextView属性的XML详解 包括单行显示等等。
<prename"code"class"html"属性名称描述android:autoLink设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web/email/phone/map/all)android:autoText如果设置,将自动执行输入值的拼写纠正。此
Stella981 Stella981
3年前
Linux中vim编辑器常用命令、文件查找、磁盘挂载、用户管理
Vim介绍Vim是全屏幕纯文本编辑器,是vi编辑器的升级版。vim不仅仅兼容vi所有的命令,而且高亮显示,vi只能运行在UNIX和Linux中,而vim可以跨平台运行在Windows,MACOS中。vim号称“编辑器之神”,具有无可匹敌的可扩展性。大部分Linux系统中,默认都会安装vim,在L
Wesley13 Wesley13
3年前
Vs code自动生成Doxygen格式注释
前言​程序中注释的规范和统一性的重要性不言而喻,本文就推荐一种在用vscode编写代码时自动化生成标准化注释格式的方法,关于Doxygen规范及其使用可查看博文代码注释规范之Doxygen(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2F
Stella981 Stella981
3年前
Linux下非常强大的MySQL命令行客户端工具(支持自动补全)
01 摘要,支持语法高亮当你输入SQL关键字,数据库的表格和列时可自动补全。智能补全(默认启用),会提示文本感应的(contextsensitive)补全。02安装,Linux下,一行命令搞定pipinstallmycli补充,
Stella981 Stella981
3年前
JQuery中对option的添加、删除、取值
jQuery获取Select选择的Text和Value:1\.$("select\_id").change(function(){//code...});  //为Select添加事件,当选择其中一项时触发2\.varcheckText$("select\_id").find("option:selected").text();  
Wesley13 Wesley13
3年前
5.1 vim介绍 5.2 vim颜色显示和移动光标 5.3 vim一般模式下移动光标 5.4 vim一般模式下复制、剪切和粘贴 5.5 进入编辑模式 5.6 vim命令
vim命令vim和vi几乎是一样的,唯一的区别就是当编辑一个文本时,使用vi不会显示颜色,而使用vim会显示颜色。vim有三个模式:一般模式,编辑模式,命令模式。系统最小化安装时没有安装vim命令,需要自己使用yum进行安装:root@cham2~yuminstallyvimenhanced
Stella981 Stella981
3年前
Linux基本命令 vim命令(二)
LinuxVim显示行号在命令模式下输入":"进入编辑模式后执行setnu命令即可显示每一行的行号,如果想要取消行号,则再次输入":setnonu"即可。如果希望每次打开文件都默认显示行号,则可以编辑Vim的配置文件。每次使用Vim打开文件时,Vim都会到当前登录用户的宿主目录(用户配置文件所在地)中读取.vi
Stella981 Stella981
3年前
PowerDesigner列名、注释内容互换
在用PowerDesigner时,常常在NAME或Comment中写中文在Code中写英文,Name只会显示给我们看,Code会使用在代码中,但Comment中的文字会保存到数据库TABLE的Description中,有时候我们写好了Name再写一次Comment很麻烦,以下两段代码就可以解决这个问题。在PowerDesigner中PowerDesig
Stella981 Stella981
3年前
PostgreSQL 主键自动增长
建立主键并设置自动增加的办法好好几种,这里记录我测试过的:droptablepro_process;CREATETABLE"public"."pro_process"("id"SERIALprimarykey,//设置主键并自动增长"county_code"varchar(6)COLLATE
零知识证明
零知识证明
Lv1
月下飞天镜,云生结海楼。
文章
3
粉丝
0
获赞
0