vim doc: usr_27.txt 查找命令及模式

一、使用正则表达式的命令[/,?, s, g]

实践用法:

1, 模式块作为替换的内容

1~多个#序列后面加上空格

:%s/\(#\+\)/\1 /g

1. 搜索命令

使用正则表达式的命令最常见的就是/, ?(搜索)命令。其格式如下:

/ 正则表达式, 向下搜索

?正则表达式,向上搜索

如:

/\d\d:\d\d:\d\d " 查找如 17:37:01 格式的时间字符串

2. 替换命令s

命令的完整形式: [range]s/from/to/[flags]

把from指定的字符串替换成to指定的字符串,from可以是正则表达式。

[range]的取值列表:

符号 说明
不写range 默认为光标所在的行。
% 所有行(与 1,$ 等价)
. 光标所在的行。
1 第一行。
$ 最后一行。
33 第33行。
'a 标记a所在的行(之前要使用ma做过标记)。
.+1 当前光标所在行的下面一行。
$-1 倒数第二行。(这里说明我们可以对某一行加减某个数值来取得相对的行)。
22,33 第22~33行。
.,$ 当前行 到 最后一行。
'a,'b 标记a所在的行 到 标记b所在的行。
    注意,上面的所有用于range的表示方法都可以通过 +、- 操作来设置相对偏移量。

[flags]

这里可用的flags有:

符号 说明
只对指定范围内的第一个匹配项进行替换。
g 对指定范围内的所有匹配项进行替换。
c 在替换前请求用户确认。
e 忽略执行过程中的错误。

查看匹配yes单词的数量:

:%s/yes//gn

注意:上面的所有flags都可以组合起来使用,比如 gc 表示对指定范围内的

所有匹配项进行替换,并且在每一次替换之前都会请用户确认。

例如对全文替换,且替换前请求确认

:%s/from/to/gc

将所有的four替换成4,但是fourteen中的four不替换

:s/\<four\>/4/g

:%s/ */ /g 把一个或者多个空格替换为一个空格。

:%s/ *$// 去掉行尾的所有空格。

:%s/^/ / 在每一行头上加入一个空格。

3. global 命令形式

global命令格式 : [range]global/{pattern}/{command}

global命令在[range]指定的文本范围内(缺省为整个文件)查找{pattern}可以是正则表达式,

然后对匹配到的行执行命令{command},如果希望对没匹配上的行执行命令,则使用global!或vglobal命令。

一些例子:

1) 删除包含某字段(例如aaa)的行

:g/aaa/d

2) 删除不包含某字段(例如aaa)的行

:g!/aaa/d

3) 删除指定的行

:x,.d #从x行删除到当前行;

:.,xd #从当前行删除到x行;

4) 删除只有空白的行

:g/^\s*$/d

二、正则表达式的用法

表示位置的符号

元字符 说明
$ 匹配行尾
^ 匹配行首
< 匹配单词词首
> 匹配单词词尾

表示数量的元字符

元字符 说明
* 匹配0到任意个
+ 匹配1到任意个
? 匹配0或1个
{n,m} 匹配n-m个
{n} 匹配n个
{n,} 匹配n-任意个
{,m} 匹配0-m个

元字符一览

元字符 说明
. 匹配任意一个字符
[abc] 匹配方括号中的任意一个字符。可以使用-表示字符范围,
[a-z0-9] 匹 配小写字母和阿拉伯数字。
[^abc] 在方括号内开头使用^符号,表示匹配除方括号中字符之外的任意字符。
\d 匹配阿拉伯数字,等同于[0-9]。
\D 匹配阿拉伯数字之外的任意字符,等同于[^0-9]。
\x 匹配十六进制数字,等同于[0-9A-Fa-f]。
\X 匹配十六进制数字之外的任意字符,等同于[^0-9A-Fa-f]。
\w 匹配单词字母,等同于[0-9A-Za-z_]。
\W 匹配单词字母之外的任意字符,等同于[^0-9A-Za-z_]。
\t 匹配字符。
\s 匹配空白字符,等同于[ \t],或[ ]。
\S 匹配非空白字符,等同于[^ \t]。

另外,如果要查找字符 *、.、/等,它们不在方括号之内时,则需要在前面用 \ 符号,表示这不是元字符,而只是普通字符而已。

元字符 说明
* 匹配 * 字符。
. 匹配 . 字符。
/ 匹配 / 字符。
\ 匹配 \ 字符。
[ 匹配 [ 字符。

方括号内的特殊字符

键盘上的特殊字符放到方括号中基本都能直接匹配

[!@#$%^&*()_+-=[]\{}|:";'<>?,./~]

例外的情况需要加\的有 -,\.

中划线如果与数字,字母,空格相邻时,又希望它匹配文中的-,就加转意字符

有些情况反斜杠也要加,为了通用性考虑,如果为了匹配 - \ 就使用 [ \- \\]

方括号的用法:

方括号后加* 或+ 匹配任意多个 或 1个以上括号内的任意字符

例如 [a-zA-Z0-9]* 匹配任意多个字母数字组成的字符串。

ref

https://www.cnblogs.com/PegasusWang/p/3153300.html

vim正则表达式的更多相关文章

  1. vim正则表达式~转

    vim正则表达式(转) Vim中的正则表达式功能很强大,如果能自由运用,则可以完成很多难以想象的操作. 如果你比较熟悉Perl的正规表达式,可以直接参照与Perl正则表达式的区别一节. 一.使用正则表 ...

  2. vi/vim正则表达式

    http://www.cnblogs.com/penseur/archive/2011/02/25/1964522.html 毋庸多言,在vim中正则表达式得到了十分广泛的应用. 最常用的 / 和 : ...

  3. [转] vim 正则表达式 很强大

    毋庸多言,在vim中正则表达式得到了十分广泛的应用. 最常用的 / 和 :s 命令中,正则表达式都是不可或缺的. 下面对vim中的正则表达式的一些难点进行说明. 关于magic vim中有个magic ...

  4. Vim正则表达式匹配替换字符串

    /********************************************************************** * Vim正则表达式匹配替换字符串 * 说明: * 用V ...

  5. VIM 正则表达式详解及与 perl 正则的区别

    转载自:http://www.xuebuyuan.com/806332.html:个人进行了一些修正和添加. 下面我们对 VIM 正则表达式进行介绍并会显示指出其与 Perl 正则的不同之处. 字符集 ...

  6. vim 正则表达式获取双引号中的字符

    vim 正则表达式获取双引号中的字符   1.获取双引号中的字符 :%s/.*\".∗\".*/\1/ 2.用字符串建立标签 如 hello  <hello></ ...

  7. vim正则表达式(转)

    Vim中的正则表达式功能很强大,如果能自由运用,则可以完成很多难以想象的操作. 如果你比较熟悉Perl的正规表达式,可以直接参照与Perl正则表达式的区别一节. 一.使用正则表达式的命令 使用正则表达 ...

  8. VIM正则表达式。

    看了那个30分钟正则表达式入门.但是是在VIM使用过程中偶尔会出现达不得想要效果的情况.后面百度了下,确然,VIM的正则还是有点区别的. 转自:http://www.cppblog.com/kefen ...

  9. 终于明白vim 和 grep 中 的正则表达式的用法, vim 正则表达式 和grep基本正则表达式 几乎一样

    要搞清楚 vim中的正则和普通的Perl正则表达式的区别: 因为在perl中所有的元字符 都可以直接使用, 不需要在 元字符的前面加 反斜杠. 但是在vim, 包括grep中就有所区别, 同样是元字符 ...

随机推荐

  1. python pip 安装包报 编码问题

    好久不玩 TF 了, 今天尝试了一个案例,发现要安装module , 就搞了一下, 发现要先安装 base , 安装过程有遇到好多问题, 就写写, 将其中解决过程记录下来. 1. 保存,编码问题 Un ...

  2. 离线环境下安装ansible,借助有网环境下pip工具

    环境 有网的机器(192.168.19.222):rhe65,python2.7.13,pip9.0.1 离线机器(192.168.19.203):rhe65,python2.6 FTP(192.16 ...

  3. WebSocket 理论知识整理

    最近工作用到websocket, 之前虽然也用到了一些简单的东西,但是并没有认真整理一下.所以这次准备了解一下WebSocket. WebSocket产生的背景 WebSocket是一种在单个TCP连 ...

  4. hive hbase区别

    1.hive是sql语言,通过数据库的方式来操作hdfs文件系统,为了简化编程,底层计算方式为mapreduce. 2.hive是面向行存储的数据库. 3.Hive本身不存储和计算数据,它完全依赖于H ...

  5. delphi从TRichEdit获得RTF格式文本(PC版本)

    function GetRTF(RE: TRichedit): string;varstrStream: TStringStream;beginstrStream := TStringStream.C ...

  6. TF常用知识

    命名空间及变量共享 # coding=utf-8 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt; ...

  7. 60cms Cookies欺骗漏洞审计

    源码地址:https://files.cnblogs.com/files/ssooking/60cms.zip 运行60cms目录下的Netbox.exe即可开启Asp Web服务,默认端口80 环境 ...

  8. idea当配置eclipse快捷键时,全局替换的快捷键是什么?

    简介   每次为了新版本新建一个分支的时候,都要改每个maven的版本号,好麻烦,有么有?如下图: 当idea配置eclipse快捷键时,默认是没有全局替换快捷键的,需要设置 步骤 首先打开setti ...

  9. [转]Linux下网络常用命令和工具

    转自:http://int32bit.me/2016/05/04/Linux%E5%B8%B8%E7%94%A8%E7%BD%91%E7%BB%9C%E5%B7%A5%E5%85%B7%E6%80%B ...

  10. 解剖 Elasticsearch 集群 - 之二

    解剖 Elasticsearch 集群 - 之二 本篇文章是一系列涵盖 Elasticsearch 底层架构和原型示例的其中一篇.在本篇文章中,我们会讨论 Elasticsearch 是如何处理 3C ...