乐趣区

关于vim:oeasy教您玩转vim-89-高亮细节Highlight

高亮细节 highight

回顾

  • 这个主动命令 autocmd 还是很不便的
  • 关上时、保留时就会有主动执行的操作
  • 主动命令有这么几大元素

    • {event} 触发事件
    • {pattern} 文件模式
    • {cmd} 具体执行命令
    • {augroup} 命令组
  • 主动命令能够新建、删除、列表、查问
  • 还能够强制执行
  • 有这个咱们能够

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

    • 为什么 publicjava文件外面就能够扭转色彩呢??🤔

色彩计划

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

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

  • 咱们发现在 murphy 色彩计划下
  • 字符串不变色了
  • publicvoid也不变色了

查看配色

  • :hi

  • 查看不到为什么 public 没有扭转色彩

语法文件 syntax

  • 我要找到对于 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

  • /String

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

    • 找到 3 个匹配

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

设置高亮

  • :colorscheme murphy
  • :hi String ctermfg=brown

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

  • String 的高亮设置胜利
  • 咱们来剖析一下什么是 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 区域的色彩定义么?

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 配色
  • 设置胜利
  • 咱们再来看看 public 等关键字

找到 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 进行了批改
    • 减少了 StringStorageClass 色彩的定义
    • 整体思路是在 syntax 中定义组
    • 而后在配色计划中对于组进行色彩设置
  • 可是 syntax 中如何定义组的呢?🤔
  • 下次再说!
退出移动版