本文出自   http://blog.csdn.net/shuangde800

------------------------------------------------------------------------------------------------


本文的例子都是实践过的,如有错误,请指正 

本文约定:
$ + 命令 表示在普通的bash的命令行下
:  + 命令 表示在vim的ex(命令)模式, 按"Ctrl" + ":" 进入


修改文件中路径名列表

:s/\/home\/tim/\/home\/linda/g  把/home/tim改为/home/linda
上面不太好看,可以使用不同的字符作为模式分割符(可以使用除反斜杆,双引号和竖直线(\、"和|) 之外的任何非字母表、非空白字符作为分隔符):
:s :/home/tim:/home/linda : g
这样可读性更加强,也不容易出错



把HTML斜字体代码标签(<I><I>)放到单词hello world!的周围

:%s/hello world!/<I>&<I>/g



把所有单词help或Help都改为大写的HELP

:%s/[Hh]elp/HELP/g
或者
:%s/[Hh]elp/\U&/g



使用单个空格替换一个或多个空格

:%s/  */ /g
 


使用两个空格替换冒号或逗号后面的一个或多个空格

:%s/\([,:]\)  */\1  /g
先把冒号或逗号保存到缓冲区中,然后匹配冒号或逗号加上一个或多个空格的模式,再把这个模式替换成缓冲区的逗号或冒号,以及加上一个空格


删除所有空行(没有任何字符,除了一个回车符)

:g/^$/d



删除所有空行或者任何只包行空白的行

:g/^[ tab]*[ tab]*$/d

tab代表制表符



删除每行的所有的前导空格

:%s/^  *//g
或者
:%s/^  *\(.*\)/\1/



删除每行尾部的所有空格

:%s/  *$//
 


在文件中的每一行的开始插入 ->(或者其它字符)

:%s/^/->/
或者
:%s/^\(.*\)/->\1/
单独一个^,可以看作是指向一行的最左边的光标,替换一个字符串就相当于在光标处插入字符串


在每一行的尾部加上一个句号

:%s/$/。/
或者
:%s/\(.*\)/\1。/

同样, 单独一个$,可以看作是指向一行的最右边的光标,替换一个字符串就相当于在光标处插入字符串



交换列表中所有连字符分隔的条目的顺序

例如一个文件的内容是:
ABC : XYZ
haha : hehe
Alice : Bob
把冒号两边的字符串交换,只要下面的命令
:%s/\(.*\) : \(.*\)/\2 : \1/


颠倒文件中的行序

例如,一个文件内容是
1
2
3
要改为:
3
2
1

命令如下:
:g/.*/ m 0
或者
:g/^/ m 0





vim的正则表达式(二)应用实例的更多相关文章

  1. VIM 用正则表达式

    VIM 用正则表达式 批量替换文本,多行删除,复制,移动 在VIM中 用正则表达式 批量替换文本,多行删除,复制,移动 :n1,n2 m n3     移动n1-n2行(包括n1,n2)到n3行之下: ...

  2. VIM 用正则表达式,非贪婪匹配,匹配竖杠,竖线, 匹配中文,中文正则,倒数第二列, 匹配任意一个字符 :

    VIM 用正则表达式 批量替换文本,多行删除,复制,移动 在VIM中 用正则表达式 批量替换文本,多行删除,复制,移动 :n1,n2 m n3     移动n1-n2行(包括n1,n2)到n3行之下: ...

  3. [.net 面向对象程序设计进阶] (3) 正则表达式 (二) 高级应用

    [.net 面向对象程序设计进阶] (2) 正则表达式 (二)  高级应用 上一节我们说到了C#使用正则表达式的几种方法(Replace,Match,Matches,IsMatch,Split等),还 ...

  4. VIM 及正则表达式

    VIM及正则表达式 一.查找/Search + 统计 1.统计某个关键字 方法是:%s:keyword:&:gn. 其中,keyword是要搜索的关键字,&表示前面匹配的字符串,n表示 ...

  5. Vue源码分析(二) : Vue实例挂载

    Vue源码分析(二) : Vue实例挂载 author: @TiffanysBear 实例挂载主要是 $mount 方法的实现,在 src/platforms/web/entry-runtime-wi ...

  6. java基础---->java中正则表达式二

    跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下 ...

  7. PHP正则表达式笔记和实例

    转自:  https://www.cnblogs.com/yafei236/p/4168290.html 本文主要介绍如何在PHP使用正则表达式,并附带几个实例. 这两天工作用到了正则表达式,发现自己 ...

  8. 第五篇、javascript正则表达式二

    一.内容概要 1)创建着呢规则表达式对象的两种方法 2)正则表达式的常用属性和方法 3)string对象常用方法中可以使用正则表达式 4)ES中其他预定义的对象:Math.Date.Number.Bo ...

  9. Python:Scrapy(二) 实例分析与总结、写一个爬虫的一般步骤

    学习自:Scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250 - 知乎 Python Scrapy 爬虫框架实例(一) - Blue·Sky - 博客园 1.声明Item 爬虫爬取的目标是从非 ...

随机推荐

  1. hdu4756 Install Air Conditioning(MST + 树形DP)

    题目请戳这里 题目大意:给n个点,现在要使这n个点连通,并且要求代价最小.现在有2个点之间不能直接连通(除了第一个点),求最小代价. 题目分析:跟这题一样样的,唉,又是原题..先求mst,然后枚举边, ...

  2. [MongoDB] Remove, update, create document

    Remove: remove the wand with the name of "Doom Bringer" from our wandscollection. db.wands ...

  3. [Redux] Extracting Container Components -- Complete

    Clean TodoApp Component, it doesn't need to receive any props from the top level component: const To ...

  4. mount USB Device(U disk) on crux based on vmware

    1. 在 /mnt 下建立一个名叫USB的文件夹,文件夹名自定 cd /mnt mkdir USB 2. 查看一下磁盘分区情况 fdisk –l 3. 插入U盘 4. 再次查看磁盘分区情况,对比第一次 ...

  5. Linux的启动流程

    1.首先是bios加电自检.初始化,这个过程会检测相关硬件(cpu.内存.硬盘等),然后会读取硬盘中的MBR:2.加载内核,读取/boot里边的配置文件:3.启动初始化进程,开始运行/sbin/ini ...

  6. Fedora安装VirtualBox时出现错误Kernel driver not installed (rc=-1908)的解决办法

    新建虚拟机后启动时出现如下错误: Kernel driver not installed (rc=-1908) The VirtualBox Linux kernel driver (vboxdrv) ...

  7. 无法连接到ASP.NET Development Server 解决办法

    右击项目名称 ->  属性 -> Web -> 选特定端口 -> 输入一个端口值.

  8. Ajax:Cross-Origin Resource Sharing(转)

    实例:http://blog.csdn.net/hongweigg/article/details/39054403 通过XHR实现Ajax通信的一个主要限制,来源于跨域安全策略.默认情况下,XHR对 ...

  9. 三、服务解析(Resolving Services)

    当你完成组件注册,并将组件暴露为适当的服务后你就可以通过容器或者容器的子生命周期域来解析服务(After you have your components registered with approp ...

  10. 【android】android下的junit

    <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPa ...