oeasy教您玩转vim - 89 - # 高亮细节Highlight
高亮细节 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没有改变颜色
语法文件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.vimvi /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进行了修改
- 增加了
String、StorageClass颜色的定义 - 整体思路是在syntax中定义组
- 然后在配色方案中对于组进行颜色设置
- 可是syntax中如何定义组的呢?
- 下次再说!
oeasy教您玩转vim - 89 - # 高亮细节Highlight的更多相关文章
- oeasy教您玩转vim - 56 - # 字符可视化模式
可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...
- oeasy教您玩转vim - 57 - # 行可视化
可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...
- oeasy教您玩转vim - 53 - # 批量替换
查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...
- oeasy教您玩转linux010203显示logo
我们来回顾一下 上一部分我们都讲了什么?
- oeasy 教您玩转linux010101查看内核uname
linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...
- oeasy教您玩转linux010202软件包管理apt
顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010201持续输出yes
我们来回顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010108到底哪个which
到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?
- oeasy教您玩转python - 006 - # hello world
Hello World! 回忆上次内容 python3 的程序是一个 5.3M 的可执行文件 python3 里面全都是 cpu 指令 可以执行的那种指令 我们可以把指令对应的汇编找到 objdu ...
- oeasy教您玩转linux-010110内容回顾
我们来回顾一下 我们都讲了什么?
随机推荐
- 从需求角度介绍PasteSpider(K8S平替部署工具适合于任何开发语言)
你是否被K8S的强大而吸引,我相信一部分人是被那复杂的配置和各种专业知识而劝退,应该还有一部分人是因为K8S太吃资源而放手! 这里介绍一款平替工具PasteSpider,PasteSpider是一款使 ...
- 大数据之Hadoop集群中Yarn常用命令
Yarn状态的查询,除了可以在hadoop103:8088页面查看以外,还可以通过命令操作.常见的命令操作如下所示. 需求:执行WordCount案例,并通过Yarn命令查看任务运行情况.原文:sw- ...
- 【winform】【Socket】实现你画我猜一:核心功能开发
我认为得核心:是把客户端画的图画实时传递给其他的客户端. 我的思路是: 1.GDI+绘图加鼠标事件,实现客户端绘图. 2.每记录鼠标有效绘图10个点,就把这10个点通过socket传递给服务器. ...
- 前端使用 Konva 实现可视化设计器(12)- 连接线 - 直线
这一章实现的连接线,目前仅支持直线连接,为了能够不影响原有的其它功能,尝试了2.3个实现思路,最终实测这个实现方式目前来说最为合适了. 请大家动动小手,给我一个免费的 Star 吧~ 大家如果发现了 ...
- http1.1 的默认长连接 Connection: keep-alive 与 TCP KeepAlive 之间区别
HTTP 长连接,也称为 HTTP 持久连接(HTTP Persistent Connection)或 HTTP 连接重用,是一种在 HTTP 协议中实现的机制. 在传统的 HTTP 通信中,每个 H ...
- MySQL入门到精通(十):SQL优化第一篇(2021最新发布)
SQL优化 1. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,创建表时N ...
- liquibase常用操作
1.概述 Liquibase是一个用于跟踪.管理和应用数据库变化的开源的数据库重构工具.它将所有数据库的变化(包括结构和数据)都保存在XML文件中,便于版本控制. 本文旨在将平时工作中常用的一些操作进 ...
- C#.NET 读取PFX私钥证书并导出PEM格式私钥
项目nuget引用 BouncyCastle. 读取证书 X509Certificate2 x509 = new X509Certificate2(lblPfxPath.Text, txtPfxPwd ...
- OpenWrt安装配置Tailscale
什么是tailscale? Tailscale就是基于Wireguard的一个联网工具,无需公网地址,通过去中心化,实现各个节点之间点对点的连接.配置简单友好,支持的各类平台和客户端. 相比较其他组网 ...
- nginx rewrite实践
nginx rewrite跳转(高级) 官网 https://nginx.org/en/docs/http/ngx_http_rewrite_module.html 该ngx_http_rewrite ...