本文出自   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. Android Action Bar 详解篇 .

    作者原创,转载请标明出处:http://blog.csdn.net/yuxlong2010 作为Android 3.0之后引入的新的对象,ActionBar可以说是一个方便快捷的导航神器.它可以作为活 ...

  2. Java第四周学习日记

    Day01 双列集合: 在现实生活中有些数据是以映射关系存在的,也就是成对存在的,比如夫妻等.单例集合无法表现出映射关系,所以学习双列集合. 双列集合无迭代器. 1.Map 双列集合: ——————— ...

  3. C++格式化字符函数

    格式化有很多种方法,啊,1,sprintf函数可以实现格式化字符串,并保存到一个字符数组2,snprintf也能实现但比起sprintf函数稍微要安全一些了啊3,ostringstream对象也能实现 ...

  4. django解决跨域请求的问题

    跨域请求可以用jsonp来解决,不过今天我发现一个很好用的包:django-cors-headers 只需要简单地配置一下就可 被请求方的setting.py中的配置如下: INSTALLED_APP ...

  5. 更改AngularJS的语法解析符号

    // 更改AngularJS的语法解析符号 app.config(function ($interpolateProvider) { $interpolateProvider.startSymbol( ...

  6. 异步编程设计模式 - IronPythonDebugger

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsof ...

  7. nginx日志管理与限速

    1.日志简介nginx日志主要有两种:访问日志和错误日志.访问日志主要记录客户端访问nginx的每一个请求,格式可以自定义:错误日志主要记录客户端访问nginx出错时的日志,格式不支持自定义.两种日志 ...

  8. DJANGO的HTTPRESPONSE流式输出

    在项目当中遇到的问题,网上有样例代码,但都不行,后来,发现在了1.5版本之后,新的STREAMHTTPRESPONSE对象, 搞定. from django.http import HttpRespo ...

  9. vs 自动生成core dump文件

    一直以来觉着core dump这个东西很神奇,在初步学习的时候也没有个大方向,最近项目需要记录程序崩溃时的日志信息,因此在网上寻找相关的信息,此时core dump也成为了我重点关注的东西. 说说我的 ...

  10. WinDriver的一些

    http://blog.csdn.net/chuajiang/article/details/2115508