`

vim的替换命令

 
阅读更多

天学一个VIM的命令,一个用法,慢慢熟悉VIM……

<wbr></wbr>

本文转载

<wbr></wbr>

一、使用正则表达式的命令

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

/正则表达式

另一个很有用的命令就是:s(替换)命令,将第一个//之间的正则表达式替换成第二个//之间的字符串。

:s/正则表达式/替换字符串/选项

在学习正则表达式时可以利用/命令来练习。

二、元字符

元字符是具有特殊意义的字符。使用元字符可以表达任意字符行首行 尾某几个字符等意义。

元字符一览

元字符 说明
. 匹配任意一个字符
[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 匹配<TAB>字符。
\s 匹配空白字符,等同于[ \t]
\S 匹配非空白字符,等同于[^ \t]

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

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

表示数量的元字符

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

表示位置的符号

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

使用例

/char\s\+[A-Za-z_]\w*; " 查找所有以char开头,之后是一个以上的空白,
" 最后是一个标识符和分号
/\d\d:\d\d:\d\d " 查找如 17:37:01 格式的时间字符串
:g/^\s*$/d " 删除只有空白的行
:s/\<four\>/4/g " 将所有的four替换成4,但是fourteen中的four不替换

三、替换变量

在正规表达式中使用\(\)符号括起正规表达式,即可在后面使用\1\2等变量来访问\(\)中的内容。

使用例

/\(a\+\)[^a]\+\1 " 查找开头和结尾处a的个数相同的字符串,
" 如 aabbbaa,aaacccaaa,但是不匹配 abbbaa
:s/\(http:\/\/[-a-z\._~\+%\/]\+\)/<a href="\1">\1<\/a>/ " 将URL替换为<a href="http://url">http://url</a>的格式
:s/\(\w\+\)\s\+\(\w\+\)/\2\t\1 " 将 data1 data2 修改为 data2 data1

四、函数式

在替换命令s///中可以使用函数表达式来书写替换内容,格式为

:s/替换字符串/\=函数式

在函数式中可以使用 submatch(1)、submatch(2) 等来引用\1\2等的内容,而submatch(0)可以引用匹配的整个内容。

使用例

:%s/\<id\>/\=line(".") " 将各行的 id 字符串替换为行号
:%s/^\<\w\+\>/\=(line(".")-10) .".". submatch(1) " 将每行开头的单词替换为 (行号-10).单词 的格式,
" 如第11行的 word 替换成 1. word

五、与Perl正则表达式的区别

元字符的区别

Vim语法 Perl语法 含义
\+ + 1-任意个
\? ? 0-1个
\{n,m} {n,m} n-m个
\(和\) (和) 分组


六、vi 正则表达式练习


闲言碎语不要讲…例子说明一切,比如下面这段我需要换成 ubb 标签

vim 命令模式,输入

:%s/.*src=”([^"]*)”[^>]*>/[img]1[/img]/g

替换为

[img ]gu.jpg[ /img]

[img ]os.jpg[ /img]

[img ]hu.jpg[ /img]

[img ]ang.jpg[ /img]

解释如下:

:

命令执行状态

%s

表示查找并替换

%s/a/b/g

a被查找的字符串(正则匹配);b要替换成的文字;g表示全局搜索替换(否则只处理找到的第一个结果)

([^"]*)

表示非引号的字符N个;外面()表示后面替换要用(用 1,…,9等引用)

[/img]

/ 需要被 转义

与其它工具正则不一样的地方在于 () 也必须 (),怪不得我老是弄不出来。

相关资料:

viahttp://net.pku.edu.cn/~yhf/tao_regexps_zh.html

vi 命令 作用

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

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

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

:%s/^[0-9][0-9]* // 去掉行首的所有数字字符。

:%s/b[aeio]g/bug/g 将所有的bag、beg、big和bog改为bug。

:%s/t([aou])g/h1t/g 将所有tag、tog和tug分别改为hat、hot和hug(注意用group的用法和使用1引用前面被匹配的字符)。

Sed

Sed是Stream EDitor的缩写,是Unix下常用的基于文件和管道的编辑工具,可以在手册中得到关于sed的详细信息。

这里是一些有趣的sed脚本,假定我们正在处理一个叫做price.txt的文件。注意这些编辑并不会改变源文件,sed只是处理源文件的每一行并 把结果显示在标准输出中(当然很容易使用重定向来定制):

sed脚本 描述

sed ’s/^$/d’ price.txt 删除所有空行

sed ’s/^[ ]*$/d’ price.txt 删除所有只包含空格或者制表符的行

sed ’s/”//g’ price.txt 删除所有引号v

分享到:
评论

相关推荐

    vim_命令手册

    命令 替换操作 rchar 用char替换当前字符 R text escape 用text替换当前字符直到换下Esc键 stext escape 用text代替当前字符 S或cctext escape 用text代替整行 cwtext escape 将当前字改为text Ctext escape 将当前...

    vim 基本命令总结表

    对vim操作的命令 分类总结 1.打开文件操作... 2.存储及退出文件... 3.模式转换... 4.光标移动... 5.插入... 6.删除... 7.复制和黏贴... 8.查找... 9.替换... 10.编辑多个文件... 11.其他命令... 12分屏操作... 13 ...

    一张图记住 Vim 常用命令

    本来不算写 Vim 使用教程的,因为我想网上应该会有很多,然后我去搜了一下看到别人写的好丑好乱啊,于是... 跳至指定行4、Last line mode下命令简介A) 列出行号B) 跳到文件中的某一行C) 查找字符D) 保存文件E) 离开 Vim

    vim命令.docxVim 是一款强大的文本编辑器,具有许多命令和功能 以下是一些常用的 Vim 命令: 1. **编辑文本*

    vim命令 Vim 是一款强大的文本编辑器,具有许多命令和功能。以下是一些常用的 Vim 命令: 1. **编辑文本**: - `i` 进入插入模式,在当前光标位置之前插入文本。 - `a` 进入插入模式,在当前光标位置之后插入文本...

    vim 技巧和插件

    每个录制文件包含了time_*和vim_*两个文件,其中time文件记录时间,vim命令记录的是命令,它们内容是script工具生成的。 查看演示方法,如查看第二个(time和vim两个文件中去有2的文件): scriptreplay time_...

    Vim编辑器的快捷键命令

    Vim 编辑器的核心理念:手尽量...Vim 常用命令 创建与模式切换 命令模式,创建文件: vim filename, 即可创建一个filename的文件,例如: [path...]$ vim test.txt ~ ~ ~ ~ ~ test.txt [New File] 键盘上输入 i ,进

    Linux常用命令和vim操作手册

    里面有Linux的常用命令:sl、ls、pwd、whoami、cd、cd.....vim中命令模式:H、J、K、L、gg、G、^、$、yy、p、yw、dd、dw、x、u、s、v、V; vim中末行模式:x、w、q、q!、wq; 替换:s/a1/a2/、s/a1/a2/g、%s/a1/a2/g;

    VIM使用讲解.pdf

    vim 的使用 第一讲 • 移动光标 ...• 替换类命令 • 更改类命令 • 使用c指令的其他更改类命令 • 小结 第四讲 • 定位及文件状态 • 搜索类命令 • 配对括号的查找 • 修正错误的方法之一 • 小结

    linux的文本编辑器vim

    vim的常用操作,vim没有菜单,只有命令 插入模式 定位命令 4. 删除命令 5. 复制和剪切 6. 替代和取消 7.搜索与替换 6. 保存与退出 7. 导入命令执行结果. ‘:r ! 命令’ 导入文件。 ‘:r 文件’ 导入该文件到...

    Vim编辑器常用的命令总结

    tips:在linux环境下,可以在命令行输入vimtutor命令学习使用vim,当然前提是你安装上了vim 模式 共有三种模式,分别是命令模式、插入模式和底线命令模式.这三种模式的作用分别是: 命令模式: 用户刚刚启动vim编辑...

    vim常用指令.7z

    vim资料,常用的命令 基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的作用分别是: 命令模式: 用户刚刚启动 vi/vim,便...

    linux系统vim实验报告.doc

    关于文本编辑器 vim 的使用 【注】里面的内容和自己跟着敲敲,文件名字换成自己的,可以套用我的模板和前言结论,代码最好跟着敲敲,里面的操作步骤我也说的非常明白。 1.vi 的三种模式:编辑模式,命令模式,最后行...

    vim命令大全

    正常模式:可以使用快捷键命令,或按:输入命令行。 插入模式:可以输入文本,在正常模式下,按i、a、o等都可以进入插入模式。 可视模式:正常模式下按v可以进入可视模式, 在可视模式下,移动光标可以选择文本。按V...

    vim-easygrep, 在多个文件中快速轻松地查找和替换.zip

    vim-easygrep, 在多个文件中快速轻松地查找和替换 easygrep在多个文件中快速轻松地查找和替换EasyGrep是通过多个文件执行搜索和替换操作的插件。 Vim已经经有内置的支持,可以以使用它的'vimgrep'和'grep'命令搜索...

    在CentOs系统中关于Vim的学习笔记

    撤销和恢复命令备注4)粘贴命令、替换命令、替换模式和修改命令a. 粘贴命令b. 拷贝命令c. 替换命令d. 替换模式e. 修改命令5)文件信息、跳转、定位括号和缩进a. 文件信息b. 文件的跳转c. 定位括号d. 缩进6)搜索...

    vim user manual ---vim用户手册

    请从头至尾细读本章, 本章讲述Vim的基本命令. jusr 01.txtj 关于本手册 j01.1j 两套帮助 j01.2j 关于安装 j01.3j 使用Vim教程 j01.4j 版权 jusr 02.txtj Vim第一步 j02.1j 首次运行Vim j02.2j 插入文本 9 10 第00章...

    Vim命令合集

    命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令。 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vim filename 打开vim并创建名为filename的文件 文件命令 ...

    far.vim:查找并替换Vim插件

    far.vim-查找和替换Vim插件 介绍 Far.vim使得通过多个文件查找和替换文本更加容易。 它受IntelliJ和Eclipse之类的精美IDE的启发,这些IDE为此类任务提供了舒适的工具。 安装 Plug ' brooth/far.vim ' 用法 使用命令...

    Vim的提示 - 新标签替换「Vim Tips - New Tab Replacement」-crx插件

    实用的Vim提示显示在您的新标签页上。 每次打开新选项卡时,都会学习新的vim命令。 支持语言:English

    学习vi和vim编辑器

     ·使用vi的全局搜索与替换功能  ·自定义vi,并执行unix的命令  ·使用vim的扩展文本对象以及威力强大的正则表达式  ·执行多窗口编辑,并设计vim脚本  ·充分利用图形化用户界面版的vim,gvim  ·使用vim的...

Global site tag (gtag.js) - Google Analytics