`
searun
  • 浏览: 174349 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

[Hacking VIM]之定制:自定义高亮

    博客分类:
  • VIM
阅读更多

VIM 中,高亮的特性被称为 匹配 (matching)

 

使用匹配, VIM 几乎可以标记任何字符,数字,句子和行及其组合,你甚至可以选择让 VIM 来如何标记,比如用红色标记错误,绿色标记重要的单词等等。

 

匹配可以使用下面的命令来实现:

 

:match  Group   / pattern /

 

此命令包含两个参数,第一个参数是在使用高亮的时候所要标记的颜色组 (color group) 的名字。第二个参数是你想要匹配的模式。整个模式是一个正则表达式,根据你想匹配的内容,可能会很简单,也可能会很复杂。一个简单的例子是:

:match ErrorMsg  /^ Error /

 

此命令查找所有行的开头 (^ 标志 ) 是否包含有 Error ,如果找到了匹配,则标记成 ErrorMsg 颜色组的颜色 ( 一般是红底白字 )


: 和可以影响整个颜色设置的颜色配置文件不同,一个颜色组只是一个包含如前景色和背景色的小的组合,用于如匹配等地方。当 VIM 启动的时候,很多颜色组会根据选择的颜色配置文件设置成默认的颜色。

 

使用下面的命令来获得颜色组的完整列表:

 

:so $VIMRUNTIME / syntax / hitest.vim

 
如果你不喜欢已有的任何一个颜色组,则你可以使用下面的命令来定义自己的颜色组:

:highlight MyGroup ctermbg = red guibg = red gctermfg = yellowguifg = yellow term = bold

 

这个命令建立了一个叫 MyGroup 的颜色组,无论是在终端还是在 GUI 中都是红底黄字的。你可以根据自己的喜好来设置下面的选项:

ctermbg : console下的背景颜色
guibg : GVim下的背景颜色
ctermfg : console下的文字颜色
guifg : Gvim下的文字颜色
gui : Gvim的字体描述
term : console 下的字体描述(如bold)
 

如果修改了已有的颜色组,则将会改变会话以后的颜色组显示。

 

但使用一个 match 命令后,将会一直匹配到执行一个新的匹配或者执行下面的命令:

 

:match NONE

 

match 命令一次只能匹配一个模式, vim 提供了可以匹配多于三个模式的命令


 

我们用一些例子来显示匹配的威力:

例子 1

在邮件中,一般来说最好一行不要超过 74 个字符 ( 这种规则也可见于一些比较古老的编程语言如 Fortran-77) 。在 Vim 中,当一行超过给定的字符的时候希望能够警告,这可以通过下面的命令来实现:

 

:match ErrorMsg /\%>73v.\+/

 

这里,超过第 73 个字符的其他字符都会标记成错误。这个匹配的正则表达式可以分解成:

\%> : Match after column with the number right after this

73 : The column number

V : Combined with the previous command, this means that the next part is very magic. See :help magic for more info.

.\+ : Match one or more of any character.

 
  

例子 2

在编程 的时候, tab 仅仅用来缩进代码是一个好的习惯。尽管如此,有时候很难遵守,好了,现在我们可以使用一个简单的匹配来避免这种情况。下面的命令将标记任何不是在行开头的 tab 为错误:

:match errorMsg /[^\t]\zs\t\+/


 

现在你可以使用这个匹配来检查含在代码中的 tab 了,这个正则包含下面几部分:

 

[^ : Begin a group of characters that should not be matched

\t : The tab-character

] : End of character group.

\zs : A zero-width match that places the 'matching' at the beginning of the line

ignoring any whitespaces

\t\+ : One or more tabs in a row.

 

这条命令就是说:不要匹配任何的 tab 字符,而仅仅匹配不是出现在行开头的 tab (去除包含的空格)。


如果你仅仅想使用空格字符用来缩进,则可以用下面的命令 :

 

:match errorMsg /[\t]/

 

这条命令是说匹配所有的 tab 字符。

 

例子 3

如果你输入大量的 IP 地址,有些时候你可能会输入一些错误的值,比如 123.123.123.256 ,为了防止这种错误,你可以将下面的匹配加入到你的 vimrc 文件中:

match errorMsg /\(2[5][6-9]\|2[6-9][0-9]\|[3-9][0-9][0-9]\)[.]

\[0-9]\{1,3\}[.][0-9]\{1,3\}[.][0-9]\{1,3\}\|

\[0-9]\{1,3\}[.]\(2[5][6-9]\|2[6-9][0-9]\|\

\\ \[3-9][0-9][0-9]\)[.][0-9]\{1,3\}[.][0-9]

\\{1,3\}\|\[0-9]\{1,3\}[.][0-9]\{1,3\}[.]\(2[5 ]

\\ \[6-9]\|\2[6-9][0-9]|[3-9][0-9][0-9]\)[.]

[0-9]\{1,3\}

\\|[0-9]\{1,3\}[.][0-9]\{1,3\}[.][0-9]\{1,3\ }[.]

\\(2[5][6-9]\|2[6-9][0-9]\|\[3-9][0-9][0-9]\)/


尽管它看起来为了解决这个小问题而显得有些复杂,但是应该记住的是即使可能只是会有用一次,但是也是值得添加到 vimrc 文件中去的。

 

如果你想匹配一个合法的 IP 地址,则匹配看起来要简单得多了:

match todo /\(\(25[0-5]\|2[0-4][0-9]\|[01]\?[0-9]

[0-9]\?\)\.\)

\\ \{3\}\(25[0-5]\|2[0-4][0-9]\|[01]\?

[0-9][0-9]\?\)/

 

 

  • 大小: 5.6 KB
  • 大小: 7.4 KB
  • 大小: 1.6 KB
分享到:
评论

相关推荐

    Hacking Vim 英文版

    Hacking Vim 高清 英文版 Hacking Vim 高清 英文版 Hacking Vim 高清 英文版

    《Hacking Vim》[PDF]

    除了实现对VI的兼容性外,VIM还扩展了很多的功能,包括语法高亮,代码折迭,脚本扩展等等,Packt Publishing出版社出版的这本书《Hacking VIM》就对VIM使用的一些TIP作了介绍,介绍的内容包括定制篇,移动篇,效率篇...

    hacking vim

    Hacking Vim: A Cookbook to get the Most out of the Latest Vim Editor: From personalizing Vim to productivity optimizations: Recipes to make life easier for experienced Vim users

    Kim_Schulz Hacking Vim.

    Kim_Schulz Hacking Vim 高清英文 Kim_Schulz Hacking Vim 高清英文

    hacking_vim:Hacking Vim 7.2,采用LaTeX放置

    hacking_vim:Hacking Vim 7.2,采用LaTeX放置

    Packtpub.Hacking.Vim.7.2.Apr.2010.rar

    Packtpub.Hacking.Vim.7.2.Apr.2010.rar

    Hacking Vim 7.2 - by Kim Schulz,

    Hacking Vim 7.2 - by Kim Schulz,

    Hacking Vim

    除了实现对VI的兼容性外,VIM还扩展了很多的功能,包括语法高亮,代码折迭,脚本扩展等等,Packt Publishing出版社出版的这本书《Hacking VIM》就对VIM使用的一些TIP作了介绍,介绍的内容包括定制篇,移动篇,效率篇...

    Hacking Vim 7.2

    Hacking Vim 7.2

    vim工具书 hacking vim

    很好的vim学习资料

    Web Hacking 101: How to Make Money Hacking Ethically

    Web Hacking 101: How to Make Money Hacking Ethically By 作者: Peter Yaworski Pub Date: 2018 ISBN: n/a Pages: 255 Language: English Format: PDF Size: 10 Mb With a Foreword written by HackerOne Co-...

    Hacking Vim 7.2.pdf

    Ready-to-use hacks with solutions for common situations encountered by users of the Vim editor -- Kim Schulz 2010

    tstyle:自定义Termux字体和颜色

    tstyle:自定义Termux字体和颜色

    Hacking vim

    vim实用手册,介绍使用 vim 作为开发编辑器时的一些技巧与常用插件,对于vimscript与配置文件也有讲解。

    Hacking Neural Networks: A Short Introduction

    In this article, we give a quick introduction on how deep learning in security works and explore the basic methods of exploita- tion, but also look at the offensive capabilities deep learning enabled ...

    Hacking VIM

    很不錯的一本關於VIM的書。 VIM官方網站也有推薦的書哦!

Global site tag (gtag.js) - Google Analytics