Linux中Vim,Vi文本编辑器中的文本查找和替换
2016-09-22 00:00
267 查看
最近在工作中需要在Linux机器上写一些shell脚本部署项目,其中写脚本需要对字符文本的操作,这当中就需要用到Vim/Vi文本编辑器(Vim是Vi的增强,会比Vi功能更强大一些)。自己在做的时候也参考了其他很多的文章和教程,下面的内容是翻译加上整理的后的内容,原文地址为http://go2linux.garron.me/linux/2011/02/vim-search-and-replace-tips-902/。希望自己能够记录一下,方便以后复习,同时也希望能够对学习linux的同学给予一些帮助。
这里主要记录一下Vim中的文本查找和替换。
一、查找
如果只需要查找文档中出现的单词,可以按如下语法(word为需要查找的单词):
:/word
如果需要查找下一个出现的word,只需要输入如下:
:/
另外查找是可以使用通配符的,如下是常用的几种通配符:
^ (caret)匹配一行的开始
$ (dollar sign)匹配一行的结束
\s (white spaces)匹配空格
\S (non-white spaces)匹配非空格
\d (digit)匹配数字
\D (non-digit)匹配非数字
\u (uppercase)匹配大写字母
\l (lowercase)匹配小写字母
假如你想查找所有以字母a开头的行,你可以这样用:
:/^a
或者你想匹配所有以a结尾的行,你可以这样用:
:/a$
下面是匹配特殊字符的例子,假如你在编辑html文档时,你不想文档中出现以“>”开始和“<”结束的行,你可以这样查找:
:/^>
和
:/<$
二、查找和替换
1)只查找和替换当前行
:s/old-words/new-words
Vim会在光标所在的当前行查找old-words,如果找到则将其替换成new-words
2)查找和替换指定的多行
假如你只想在5到20行查找old-words,然后替换成new-words
:5,20s/old-words/new-words
同样的,如果你想从第5行到文件末尾进行查找和替换($符号用作匹配文件最后一行)
:5,$s/old-words/new-words
或者你也可以这么用,匹配当前行到指定的行20行(.用作匹配当前行)
:.,20s/old-words/new-words
假如你想匹配整个文档所有行
:1,$s/old-words/new-words
上面这个表达式有一个更短的写法,可以达到同样的后果(%代表“1,$”的别名)
:%s/old-words/new-words
同样你也可以使用+、-符号来向上和向下指定行数(相对于当前行而言)查找和替换
:-2,+4s/old-words/new-words
上面的例子会在当前行的上面2行和下面4行范围内查找
同理,你也可以像下面这样使用来查找和替换当前行的上面5行到文档结束
:-5,$s/old-words/new-words
或者查找和替换当前行到下面10行
:.,+10s/old-words/new-words
三、Global和Confirmation修饰符
如果你想要作用于所有行,你可以用g(g代表global)修饰符,如果你想要替换的时候提示你确认,使用c(c代表confirmation)修饰符,下面的例子是搜索和替换整个文档,并且会提示你确认
:%s/old-words/new-words/gc
四、Vim查找和替换的小贴士和技巧
假如你像下面这样用:
:%s/old/new/gc
这样会替换old old2 111old222为new new2 111new222,但是有时候我们只是想要精确的替换new这个单词,而不是所有包含old的都替换为new。然而你可以这样用:
:%s/\<old\>/new/gc
倘若你还要大小写不敏感的话
:%s/\<old\>/new/gci
相反,你要大小写敏感的话(默认是大小写敏感)
:%s/\<old\>/new/gcI
五、最后几个常用的匹配、删除的例子
1)删除1到10行的所有精确匹配到的单词old
:1,10s/\<old\>//
2) 删除1到10行出现的old和后面的n个字符,其中n为正整数
:1,10s/\<old\>.\{n}//
3)删除1到10行old后面的所有单词
:1,10s/\<old\>\zs.*//
4)删除1到10行old和old前面的所有内容
:1,10s/.*\<old\>//
5))删除1到10行old前面的所有单词
:1,10s/.*\ze\<old\>//
这里主要记录一下Vim中的文本查找和替换。
一、查找
如果只需要查找文档中出现的单词,可以按如下语法(word为需要查找的单词):
:/word
如果需要查找下一个出现的word,只需要输入如下:
:/
另外查找是可以使用通配符的,如下是常用的几种通配符:
^ (caret)匹配一行的开始
$ (dollar sign)匹配一行的结束
\s (white spaces)匹配空格
\S (non-white spaces)匹配非空格
\d (digit)匹配数字
\D (non-digit)匹配非数字
\u (uppercase)匹配大写字母
\l (lowercase)匹配小写字母
假如你想查找所有以字母a开头的行,你可以这样用:
:/^a
或者你想匹配所有以a结尾的行,你可以这样用:
:/a$
下面是匹配特殊字符的例子,假如你在编辑html文档时,你不想文档中出现以“>”开始和“<”结束的行,你可以这样查找:
:/^>
和
:/<$
二、查找和替换
1)只查找和替换当前行
:s/old-words/new-words
Vim会在光标所在的当前行查找old-words,如果找到则将其替换成new-words
2)查找和替换指定的多行
假如你只想在5到20行查找old-words,然后替换成new-words
:5,20s/old-words/new-words
同样的,如果你想从第5行到文件末尾进行查找和替换($符号用作匹配文件最后一行)
:5,$s/old-words/new-words
或者你也可以这么用,匹配当前行到指定的行20行(.用作匹配当前行)
:.,20s/old-words/new-words
假如你想匹配整个文档所有行
:1,$s/old-words/new-words
上面这个表达式有一个更短的写法,可以达到同样的后果(%代表“1,$”的别名)
:%s/old-words/new-words
同样你也可以使用+、-符号来向上和向下指定行数(相对于当前行而言)查找和替换
:-2,+4s/old-words/new-words
上面的例子会在当前行的上面2行和下面4行范围内查找
同理,你也可以像下面这样使用来查找和替换当前行的上面5行到文档结束
:-5,$s/old-words/new-words
或者查找和替换当前行到下面10行
:.,+10s/old-words/new-words
三、Global和Confirmation修饰符
如果你想要作用于所有行,你可以用g(g代表global)修饰符,如果你想要替换的时候提示你确认,使用c(c代表confirmation)修饰符,下面的例子是搜索和替换整个文档,并且会提示你确认
:%s/old-words/new-words/gc
四、Vim查找和替换的小贴士和技巧
假如你像下面这样用:
:%s/old/new/gc
这样会替换old old2 111old222为new new2 111new222,但是有时候我们只是想要精确的替换new这个单词,而不是所有包含old的都替换为new。然而你可以这样用:
:%s/\<old\>/new/gc
倘若你还要大小写不敏感的话
:%s/\<old\>/new/gci
相反,你要大小写敏感的话(默认是大小写敏感)
:%s/\<old\>/new/gcI
五、最后几个常用的匹配、删除的例子
1)删除1到10行的所有精确匹配到的单词old
:1,10s/\<old\>//
2) 删除1到10行出现的old和后面的n个字符,其中n为正整数
:1,10s/\<old\>.\{n}//
3)删除1到10行old后面的所有单词
:1,10s/\<old\>\zs.*//
4)删除1到10行old和old前面的所有内容
:1,10s/.*\<old\>//
5))删除1到10行old前面的所有单词
:1,10s/.*\ze\<old\>//
相关文章推荐
- Linux下文本的vim文本替换
- Linux下VIM文本内容替换
- linux下批量查找/替换文本内容
- Linux —— Vim查找替换
- vim:映射+查找替换:整理文本
- (转)Linux中vim查找替换
- Linux——批量查找替换方法(VIM和sed)
- Linux VIM编辑器的查找替换
- linux vim的使用快捷键之查找与替换
- Linux使用vim进行多文件查找和替换的方法
- vim替换、缩进、调整文本、查找(三)
- Linux-Vim编辑器之查找与替换
- Linux替换文本字符串(Vim编辑器中使用)
- 一、工具的使用 1、学会使用vim/emacs,vim/emacs是linux下最常用的源码编辑具,不光要学会用它们编辑源码,还要学会用它们进行查找、定位、替换等。新手的话推荐使用vim,这也是我目
- linux常见问题之vim 查找替换命令
- linux中在多个文件中查找替换文本的shell脚本
- 使用vim在选中的文本中查找替换
- Vim多文件查找与替换
- 从HTML文本中查找IMG 并替换
- Vim实现多文件的查找和替换