`
insertyou
  • 浏览: 901770 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Best of VIM Tips(译注) - 连载3 查找(b)

阅读更多

这一节主要是在查找中使用正则表达式。VIM提供了强大的正则表达式机制,灵活的应用它可以显著的提高工作效率。

正则表达式的帮助入口为“:help pattern”。

[翻译]

/^joe.*fred.*bill/ : normal

标准的正则表达式

[注解]

:help /^

:help /.

:help /star

这是一个最简单的正则表达式,查找行首为joe,包含fredbill单词的行

其中,“.”代表任意字符,“*”表示在它之前的字符重复任意次(包括0次),所以“.*”的含义就是任意个任意字符。“*”可以表示0次匹配,也就是它前面的字符允许不出现。

^”字符表示该匹配由行首位置开始。

[翻译]

/^[A-J]\+/ : search for lines beginning with one or more A-J

查找以一个或多个 A-J 中的字母开头的行

[注解]

:help /[]

:help /\+

这个正则表达式匹配以一个或多个A-J中的字母开头的行。

它用到了集合表示法“[]”。任何出现在“[]”中的字母都符合匹配。如果“[]”中的第一个字符是“^”,则表示“[]”中的字母都不符合匹配。

\+”表示它前面的字符出现一次或多次,它与“*”的区别在于“*”允许它前面的字符出现0次。

[翻译]

/begin\_.*end : search over possible multiple lines

查找在 begin end 两个单词之间尽可能多的行

[注解]

:help /\_.

这个正则表达式可以跨行匹配。一般情况下正则表达式只在一行内进行匹配,但如果使用了“\_.”这类标记,它就可以在多行间进行匹配。

\_.”匹配任意单个字符和换行符,它于“.”的区别在于它可以匹配换行符。

[翻译]

/fred\_s*joe/i : any whitespace including newline

查找在 fred joe 两个单词之间任意多的空白字符,包括新

[注解]

:help /\s

:help /\_s

这个正则表达式跨行空白字符。所谓空白字符,包括空格以及制表符。

\_s”匹配空白字符和换行符。“\s”则只匹配空白字符。

现在我们深入一点,“\s”匹配空白字符,而“\_s”匹配空白字符和换行符;“.”匹配任意单个字符,而“\_.”匹配任意单个字符和换行符。总结出规律没有?!

该表达式最后的字符i,没有找到其具体含义。

[翻译]

/fred\|joe : Search for FRED OR JOE

查找 fred joe

[注解]

:help /\bar

这个正则表达查找符合fred或符合joe

\|”用来连接正则表达式的两个子式,两个子式间是或的关系。

[翻译]

/.*fred\&.*joe : Search for FRED AND JOE in any ORDER!

查找同时包含 FRED JOE 的行,不分前后顺序

[注解]

:help /\&

这个正则表达式查找“.*joe”,但同时要求这一行中必须包含“.*fred”。

\&”用来连接正则式的两个子式。它匹配最后一个子式,但要求之前的子式也在同样的位置被匹配,也就是两个子式间是与的关系。这个操作符理解起来可能有些难。

注意,如果你把上面的查找换成“/fred\&joe”,那么它不能匹配到任何东西。因为任何匹配joe的字串,在j的位置,都不可能匹配f

C语言中的&|符类似,VIM中的“\&”优先级要高于“\|”,所以会先计算“\&”子式再计算“\|”子式。

[翻译]

/\<fred\>/i : search for fred but not alfred or frederick

查找 fred, 而不是 alfred 或者 frederick,也就是全字匹

[注解]

:help /\<

:help /\>

:help 'iskeyword'

这个正则表达式匹配完整的fred单词。在VIM中,'iskeyword'选项定义了哪些字符是组成单词的字符。这个正则式要求在fred之前的字符,以及在fred之后的字符,都不在'iskeyword'选项中。

\<”匹配单词的起点,“\>”匹配单词的终点。

[翻译]

/\<\d\d\d\d\> : Search for exactly 4 digit numbers

查找4个数字的全字匹配

[注解]

:help /\d

这个正则式全字匹配4个数字。

\d”匹配0-9间的任一数字。

[翻译]

/\D\d\d\d\d\D : Search for exactly 4 digit numbers

查找4个数字的全字匹配

[注解]

:help /\D

这个正则式和上面一样,也全字匹配4个数字。

\D”匹配非数字。

[翻译]

/\<\d\{4}\> : same thing

同上

[注解]

:help /\{

这个正则式和上面两个一样,全字匹配4个数字。

\{4}”表示匹配它前面的字符4次。

[翻译]

/\([^0-9]\|^\)%.*% : Search for absence of a digit or beginning of line

查找

[注解]

:help /\(

这个正则式组合使用了前面介绍的操作符,理解起来有些复杂。

\( \)”的作用是把括号里面的内容当做一个单一的元字符。括号里可以包含正则式,但用这种转义括号包起来时,会把这个正则式当做一个元字符。例如,“*”字符的含义它前面的字符出现任意次。如果“*”用在“\( \)”后面时,就会表示“\( \)”中的正则式出现任意次,也就是把“\( \)”中的内容当做一个元字符来处理。

所以对上面的这个表达式来讲,会把“\( \)”中的表达式和“%.*%”结合起来进行查找,而“\( \)”中的表达式是或的关系,因此这个正则式实际可以拆分为下面两个正则式的或运算:“[^0-9]%.*%”及“^%.*%”。

这样拆分后,我们就很容易搞懂它的含义了。第一个正则式查找%前为非数字,在它后面还有一个%的匹配;第二个正则式查找行首是%,它后面还有另外一个%的匹配;这两个表达式再进行或运算,也就是查找满足第一个正则式的匹配,或者满足第二个正则式的匹配,满足两者中任一个即匹配成功。

[参考文档]

1. http://www.rayninfo.co.uk/vimtips.html

2. http://groups.google.com/group/Vim-cn/msg/f72fba0645955101?

3. VIM帮助文件

4. http://vimcdoc.sourceforge.net/

[尾记]

本文可以自由应用于非商业用途。转载请注明出处。

原文链接:http://blog.csdn.net/easwy

分享到:
评论

相关推荐

    VMware-VIM-all-6.7.0-15976714.txt

    VMware-VIM-all-6.7.0-15976714 原版镜像 .................................................................................................................

    VMware-VIM-all-6.5.0-14020092.txt

    vmware vcenter6.5 for windows版本。 VMware-VIM-all-6.5.0-14020092

    vim键盘图(vi-vim-cheat-sheet)

    vim键盘图 . 键盘布局彩图(打出来参考,很方便) vi-vim-cheat-sheet.gif vi-vim-tutorial-1.gif...vi-vim-tutorial-3.gif vi-vim-tutorial-4.gif vi-vim-tutorial-5.gif vi-vim-tutorial-6.gif vi-vim-tutorial-7.gif

    vim-common-7.4.629-7.el7.x86_64.rpm

    vim-common-7.4.629-7.el7.x86_64.rpm

    vim-powerline-develop

    **vim-powerline-develop** 是一个针对 Vim 编辑器的扩展插件,它属于 Vim 插件中的 **powerline** 家族。Powerline 是一个非常流行的增强型状态栏插件,它为 Vim、Emacs 和其他软件提供了一个美观、信息丰富的状态...

    vim-tmux-focus-events, 使终端vim和tmux更好地协同工作.zip

    vim-tmux-focus-events, 使终端vim和tmux更好地协同工作 tmux-focus-events.vimFocusGained 和 FocusLost 自动命令事件在终端vim中不工作。 这个插件在使用vim内部Tmux时恢复它们。以下是相关内容:vim fugitive插件...

    VMware-VIM-all-6.7.0-9451876.txt

    VMware vSphere 6.7 百度网盘链接及提取 码

    Atom-atom-vim-mode-plus,vim.zip

    Atom-atom-vim-mode-plus是针对Atom文本编辑器的一个扩展插件,主要目的是增强其内置的VIM编辑模式。VIM(Vi Improved)是一种高度可配置的文本编辑器,以其高效的操作方式和丰富的命令集而闻名。在Atom中,VIM模式...

    VMware-VCSA-all-6.7.0 U3b EXSI 6.7 VIM

    VMware-VCSA-all-6.7.0-15132721...VMware-VIM-all-6.7.0-15132721.iso/2.08GB VMware-VirtualSAN-Witness-201912001-15160138.ova/475.94MB VMware-VMvisor-Installer-201912001-15160138.x86_64.iso/335.02MB 等等

    vim-for-server, .vimrc, 简单配置服务器,不带插件.zip

    vim-for-server, .vimrc, 简单配置服务器,不带插件 vim-for-servervimrc,简单配置服务器,不带插件。简介这个存储库是 k-vim的简化版本。只删除所有插件,保留基本配置。屏幕截图 安装 。 如果有必要,备份旧的. ...

    Best+of+VIM+Tips(译注).pdf

    以上就是对文件《Best+of+VIM+Tips(译注).pdf》中的VIM编辑器相关知识点的总结。VIM提供的这些替换命令和操作技巧可以大幅提高文本处理的效率,是学习VIM编辑器时需要掌握的重要内容。在实际使用中,合理运用这些...

    VMware-VIMSetup-all-5.5.0-1312299

    根据提供的文件信息,我们可以推断出这份资料与VMware vCenter Infrastructure Manager (VIM) Setup 5.5.0版本有关。尽管描述部分没有提供太多技术细节,但从标题和其他信息中,我们可以提炼出一系列与VMware ...

    vim-atom-dark, 一个由 Atom 黑暗主题默认启发的vim主题.zip

    vim-atom-dark, 一个由 Atom 黑暗主题默认启发的vim主题 vim-atom-dark一个由 Atom 黑暗主题默认启发的vim主题。 在 .vim 文件夹中克隆这个文件或者将 colors/atom-dark.vim 文件放在 colors/ 中。

    vim-enhanced-7.4.629-8.el7_9.x86_64.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    vim-minimal-8.0.1763-16.el8.x86_64.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    vim-markdown-toc, 用于生成 Markdown 文件目录的vim 7.4 插件.zip

    vim-markdown-toc, 用于生成 Markdown 文件目录的vim 7.4 插件 vim-markdown-toc用于生成 Markdown 文件目录的vim 7.4 插件。中文版使用指南目录特性安装工具使用情况生成内容目录。更新现有目录删除目录选项屏幕...

    vim8.0.zip --Linux-CentOS7离线安装VIM及相关依赖包

    vim-8.0.zip gpm-libs-1.20.7-6.el7.i686.rpm ncurses-5.9-14.20130511.el7_4.x86_64.rpm ncurses-base-5.9-14.20130511.el7_4.noarch.rpm ncurses-devel-5.9-14.20130511.el7_4.x86_64.rpm ncurses-libs-5.9-14....

    vim-minimal-7.4.160-5.el7.x86_64.rpm

    离线安装包,亲测可用

    vim-airline-themes:vim-航空公司的主题集合

    vim-航空公司主题 这是的官方主题库 安装 该插件遵循标准的运行时路径结构,因此可以与各种插件管理器一起安装: 插件管理器 安装... git clone https://github.com/vim-airline/vim-airline-themes ~/.vim/bundle...

Global site tag (gtag.js) - Google Analytics