`

VIM中常用的查找、替换、删除模式总结

 
阅读更多

 删除以某个字节开始的同一行: s/^#.*\n$//g

 删除行首空格  %s/^\s\+//

 

1,简单替换表达式

去掉所有的行尾空格:   %s/\s\+$//

去掉所有的空白行:       %s/\(\s*\n\)\+/\r/

去掉所有的"//"注释:     %s!\s*//.*!!

去掉所有的"/*...*/"注释:     %s!\s*/ \*\_.\{-}\*/\s*! !g

删除DOS方式的回车^M :%s/r//g 
:%s= *$== 删除行尾空白:
:%s/^(.*)n1/1$/ 删除重复行:
:%s/^.{-}pdf/new.pdf/ 只是删除第一个pdf:
:%s/<!--_.{-}-->// 又是删除多行注释(咦?为什么要说「 」呢?)
:g/s* ^ $/d 删除所有空行 :这个好用有没有人用过还有其他的方法吗?
:g!/^dd/d 删除不含字符串'dd'的行 
:v/^dd/d 同上 (译释:v == g!,就是不匹配!) 
:g/str1/,/str2/d 删除所有第一个含str1到第一个含str2之间的行
:v/./.,/./-1join 压缩空行 
:g/^$/,/./-j 压缩空行

 

2,简单删除命令 
ndw 或 ndW 删除光标处开始及其后的 n-1 个字符。 
d0 删至行首。 
d$ 删至行尾。 
ndd 删除当前行及其后 n-1 行。 
x 或 X 删除一个字符。 
Ctrl+u 删除输入方式下所输入的文本。 
^R 恢复u的操作 
J 把下一行合并到当前行尾 
V 选择一行 
^V 按下^V后即可进行矩形的选择了 
aw 选择单词 
iw 内部单词(无空格) 
as 选择句子 
is 选择句子(无空格) 
ap 选择段落 
ip 选择段落(无空格) 
D 删除到行尾 
x,y 删除与复制包含高亮区 
dl 删除当前字符(与x命令功能相同) 
d0 删除到某一行的开始位置 
d^ 删除到某一行的第一个字符位置(不包括空格或TAB字符) 
dw 删除到某个单词的结尾位置 
d3w 删除到第三个单词的结尾位置 
db 删除到某个单词的开始位置 
dW 删除到某个以空格作为分隔符的单词的结尾位置 
dB 删除到某个以空格作为分隔符的单词的开始位置 
d7B 删除到前面7个以空格作为分隔符的单词的开始位置 
d) 删除到某个语句的结尾位置 
d4) 删除到第四个语句的结尾位置 
d( 删除到某个语句的开始位置 
d) 删除到某个段落的结尾位置 
d{ 删除到某个段落的开始位置 
d7{ 删除到当前段落起始位置之前的第7个段落位置 
dd 删除当前行 
d/text 删除从文本中出现“text”中所指定字样的位置, 
一直向前直到下一个该字样所出现的位置(但不包括该字样)之间的内容 
dfc 删除从文本中出现字符“c”的位置,一直向前直到下一个该字符所出现的位置(包括该字符)之间的内容 
dtc 删除当前行直到下一个字符“c”所出现位置之间的内容 
D 删除到某一行的结尾 
d$ 删除到某一行的结尾 
5dd 删除从当前行所开始的5行内容 
dL 删除直到屏幕上最后一行的内容 
dH 删除直到屏幕上第一行的内容 
dG 删除直到工作缓存区结尾的内容 
d1G 删除直到工作缓存区开始的内容

:s/str1/str2/       用字符串 str2 替换行中首次出现的字符串 str1

:s/str1/str2/g      用字符串 str2 替换行中所有出现的字符串 str1

:.,$ s/str1/str2/g  用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1

:1,$ s/str1/str2/g  用字符串 str2 替换正文中所有出现的字符串 str1

:g/str1/s//str2/g   功能同上

从上述替换命令可以看到:g 放在命令末尾,表示对搜索字符串的每次出现进行替换;不加 g ,表示只对搜索

字符串的首次出现进行替换;g 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。

给出一个字符串,可以通过搜索该字符串到达指定行。如果希望进行正向搜索,将待搜索的字符串置于两个“

/” 之间;如果希望反向搜索,则将字符串放在两个“?” 之间。例如:

:/str/                      正向搜索,将光标移到下一个包含字符串 str 的行

:?str?                      反向搜索,将光标移到上一个包含字符串 str 的行

:/str/w file                正向搜索,并将第一个包含字符串 str 的行写入 file 文件

:/str1/,/str2/w file        正向搜索,并将包含字符串 str1 的行至包含字符串 str2 的行写入 file 文件

 

 

 

 

1,简单替换表达式

替换命令可以在全文中用一个单词替换另一个单词:

:%s/four/4/g

“%” 范围前缀表示在所有行中执行替换。最后的 “g” 标记表示替换行中的所有匹配点。如果仅仅对当前行进行操作,那么只要去掉%即可

   如果你有一个象 “thirtyfour” 这样的单词,上面的命令会出错。这种情况下,这个单词会被替换成”thirty4″。要解决这个问题,用 “\<” 来指定匹配单词开头:

        :%s/\<four/4/g

显然,这样在处理 “fourty” 的时候还是会出错。用 “\>” 来解决这个问题:

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

如果你在编码,你可能只想替换注释中的 “four”,而保留代码中的。由于这很难指定,可以在替换命令中加一个 “c” 标记,这样,Vim 会在每次替换前提示你:

        :%s/\<four\>/4/gc

2,删除多余的空格

要删除这些每行后面多余的空格,可以执行如下命令:

        :%s/\s\+$//

命令前面指明范围是 “%”,所以这会作用于整个文件。”substitute” 命令的匹配模式是

“\s\+$”。这表示行末($)前的一个或者多个(\+)空格(\s)。替换命令的 “to” 部分是空的:”//”。这样就会删除那些匹配的空白字符。

3,匹配重复性模式

星号项 “*” 规定在它前面的项可以重复任意次。因此:

        /a*

匹配 “a”,”aa”,”aaa”,等等。但也匹配 “” (空字串),因为零次也包含在内。星号 “*” 仅仅应用于那个紧邻在它前面的项。因此 “ab*” 匹配 “a”,”ab”,”abb”,”abbb”,等等。如要多次重复整个字符串,那么该字符串必须被组成一个项。组成一项的方法就是在它前面加 “\(”,后面加 “\)”。因此这个命令:

        /\(ab\)*

匹配: “ab”,”abab”,”ababab”,等等。而且也匹配 “”。

要避免匹配空字串,使用 “\+”。这表示前面一项可以被匹配一次或多次。

        /ab\+

匹配 “ab”,”abb”,”abbb”,等等。它不匹配 后面没有跟随 “b” 的 “a”。

要匹配一个可选项,用 “\=”。 例如:

        /folders\=

匹配 “folder” 和 “folders”。

4,指定重复次数

要匹配某一项的特定次数重复,使用 “\{n,m}” 这样的形式。其中 “n” 和 “m” 都是数字。在它前面的那个项将被重复 “n” 到 “m” 次 (|inclusive| 包含 “n” 和 “m”)。例如:

        /ab\{3,5}

匹配 “abbb”,”abbbb” 以及 “abbbbb”。

   当 “n” 省略时,被默认为零。当 “m” 省略时,被默认为无限大。当 “,m” 省略时,就表示重复正好 “n” 次。例如:

        模式           匹配次数

        \{,4}            0,1,2,3 或 4

        \{3,}            3,4,5,等等

        \{0,1}           0 或 1,同 \=

        \{0,}            0 或 更多,同 *

        \{1,}            1 或 更多,同 \+

        \{3}             3

5,多选一匹配

在一个查找模式中,”或” 运算符是 “\|”。例如:

        /foo\|bar

这个命令匹配了 “foo” 或 “bar”。更多的抉择可以连在后面:

        /one\|two\|three

匹配 “one”,”two” 或 “three”。

   如要匹配其多次重复,那么整个抉择结构须置于 “\(” 和 “\)” 之间:

        /\(foo\|bar\)\+

这个命令匹配 “foo”,”foobar”,”foofoo”,”barfoobar”,等等。

   再举个例子:

        /end\(if\|while\|for\)

这个命令匹配 “endif”,”endwhile” 和 “endfor”。

 

vi/vim 中可以使用 :s 命令来替换字符串。以前只会使用一种格式来全文替换,今天发现该命令有很多种写法(vi 真是强大啊,还有很多需要学习),记录几种在此,方便以后查询。

 

:s/vivian/sky/ 替换当前行第一个 vivian 为 sky

:s/vivian/sky/g 替换当前行所有 vivian 为 sky

 

:n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky

:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky

n 为数字,若 n 为 .,表示从当前行开始到最后一行

 

:%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky

:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky

 

可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符

:s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/

 

:%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/

 

1.:s/vivian/sky/ 替换当前行第一个 vivian 为 sky

:s/vivian/sky/g 替换当前行所有 vivian 为 sky

 

2. :n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky

:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky

(n 为数字,若 n 为 .,表示从当前行开始到最后一行)

 

3. :%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky

:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky

 

4. 可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符

:s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/

 

5. 删除文本中的^M

问题描述:对于换行,window下用回车换行(0A0D)来表示,Linux 下是回车(0A)来表示。这样,将window上的文件拷到Unix 上用时,总会有个^M.请写个用在unix下的过滤Windows 文件的换行符(0D)的shell或c程序。

· 使用命令:cat filename1 | tr -d “^V^M” > newfile;

· 使用命令:sed -e “s/^V^M//” filename > outputfilename。需要注意的是在1、2两种方法中,^V和^M指的是Ctrl+V和Ctrl+M。你必须要手工进行输入,而不是粘贴。

· 在vi中处理:首先使用vi打开文件,然后按ESC键,接着输入命令:%s/^V^M//。

· :%s/^M$//g

如果上述方法无用,则正确的解决办法是:

· tr -d "\r" < src >dest

· tr -d "\015" dest

· strings A>B

 

6. 其它

利用 :s 命令可以实现字符串的替换。具体的用法包括:

:s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1

:s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1

:.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1

:1,$ s/str1/str2/g 用字符串 str2 替换正文中所有出现的字符串 str1

:g/str1/s//str2/g 功能同上

从上述替换命令可以看到:g 放在命令末尾,表示对搜索字符串的每次出现进行替换;不加 g,表示只对搜索

字符串的首次出现进行替换;g 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。

分享到:
评论

相关推荐

    VIM常见命令总结vim常见命令总结

    以下是对VIM常见命令的详细总结: 1. **启动与退出** - `vim filename`:启动VIM并打开指定的文件。 - `:q`:在正常模式下退出,如果未保存修改,VIM将拒绝退出。 - `:q!`:强制退出,不保存任何修改。 - `:wq`...

    vim 全文字符串替换

    - **字符串替换**:指的是在文本中查找特定的字符串,并将其替换为新的字符串的过程。 - **全文范围**:指在整个文件内进行字符串替换,而非仅仅局限于当前可见的屏幕范围内。 #### 二、Vim中的字符串替换命令 Vim...

    vim常用命令总结

    ### vim常用命令总结 #### 一、概述 `vim`是一款功能强大的文本编辑器,在Linux环境中广泛使用。本文档旨在总结`vim`编辑器中常用的命令,这些命令可以帮助用户高效地进行文本编辑工作。总结包括查找命令、修改...

    vim命令学习笔试总结总结总结

    #### Vim常用命令详解 接下来,我们将详细介绍vim中的一些常用命令。 ##### 命令模式下的操作 1. **移动光标** - `h`:向左移动一个字符。 - `j`:向下移动一行。 - `k`:向上移动一行。 - `l`:向右移动一个...

    vim 常用快捷键笔记

    1. **正常模式**:这是 Vim 的初始模式,也是最常用的模式。在这个模式下,用户可以通过键盘上的快捷键来控制 Vim 执行各种操作。 - **启动 Vim**:在终端中输入 `vim` 后按 Enter 键即可启动 Vim。 - **打开文件*...

    Vi、vim 常用命令总结

    以上总结了Vi和Vim编辑器中的常用命令,涵盖了初始化配置、光标操作、编辑、查找、窗口管理、文件对比、缓冲区操作、编译调试以及一些实用的杂项命令。熟练掌握这些命令能够显著提升在Linux环境下的文本编辑效率。

    VIM中文手册完整版

    VIM的高级编辑功能包括启动VIM、编辑和写入文件、有关移动的命令、在窗口中滚动文本、插入模式和替换模式、删除和替换文本、自动缩进、撤消和重做等。例如,可以使用":help starting.txt"命令查看如何启动VIM并设置...

    VIM代码编辑常用操作技术

    ### VIM代码编辑常用操作技术知识点总结 #### 1. VIM编辑基础操作 VIM是一个高级文本编辑器,常用于编写和编辑代码。它支持多种模式,包括普通模式、插入模式、命令模式等。普通模式下可以快速执行编辑命令,插入...

    Linux中vim安装包

    以下是在几种常见的Linux发行版中安装Vim的方法: 1. **Ubuntu/Debian**: 使用`apt`命令 ``` sudo apt-get update sudo apt-get install vim ``` 2. **Fedora/CentOS/RHEL**: 使用`yum`或`dnf`命令 ``` sudo...

    vim实验报告.docx

    通过这次实验,参与者不仅熟悉了Vim的基本操作,如移动、查找、替换、复制、粘贴、删除等,还学习了如何在Vim中进行文件的保存、另存以及撤销修改等高级操作,增强了对Vim编辑器的理解和应用能力。这些基本技能对于...

    一张图记住 Vim 常用命令

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

    linux系统vim实验报告.doc

    Linux系统中的vim编辑器是一个强大的文本编辑工具,广泛应用于各种Unix和Linux环境下。vim是vi的增强版,提供了更多的功能和便利性,尤其适合程序员进行代码编写。在使用vim时,掌握其三种基本模式——编辑模式、...

    Vim中文手册

    例如,在普通模式中,用户可以通过输入特定字符来执行命令,比如使用“d”删除选中的文本。可视模式允许用户选择文本区域进行操作。插入模式则是编辑文本时输入文本的模式。命令行模式则用于执行一些复杂的命令,如...

    Vim实用技巧:使用模式入门篇(第2版)

    3. **命令行模式**:通过在正常模式下输入`:`, Vim会进入命令行模式,允许你执行保存、查找替换、跳转到特定行等全局操作。 本书中,作者可能详细讲解了如何在这些模式间切换,以及如何高效地利用Vim的命令和宏功能...

    含有vim常用命令的桌面背景图片

    **vim常用命令** 1. **启动与退出** - `vim filename`:打开名为`filename`的文件。 - `:q`:在正常模式下退出vim,如果文件被修改过,vim将阻止退出。 - `:wq`:保存并退出。 - `:q!`:不保存强制退出。 2. *...

    vim常用命令.docx

    在使用Vim时,了解并熟练掌握一些常用的命令至关重要。以下是对标题和描述中涉及的Vim命令的详细解释: ### 命令模式 在命令模式下,用户可以移动光标、删除文本、复制和粘贴等。以下是一些常见的操作: 1. **...

    VIM常用命令大全

    ### VIM常用命令详解 #### 一、简介 VIM(Vi IMproved)是一款功能强大的文本编辑器,它基于原始的vi编辑器进行了大量的改进和扩展。VIM因其高效的文本编辑能力和广泛的系统兼容性,在程序员和技术人员中非常受欢迎...

    vim常用命令整理

    ### Vim常用命令详解 #### 一、模式切换 Vim具备三种主要的工作模式:命令模式(Command mode)、插入模式(Insert mode)以及可视模式(Visual mode)。掌握这些模式之间的切换是高效使用Vim的基础。 - **切换到插入...

Global site tag (gtag.js) - Google Analytics