VIM中常用的查找、替换、删除模式总结.doc_第1页
VIM中常用的查找、替换、删除模式总结.doc_第2页
VIM中常用的查找、替换、删除模式总结.doc_第3页
VIM中常用的查找、替换、删除模式总结.doc_第4页
VIM中常用的查找、替换、删除模式总结.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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/” 来解决这个问题: :%s/4/g如果你在编码,你可能只想替换注释中的 “four”,而保留代码中的。由于这很难指定,可以在替换命令中加一个 “c” 标记,这样,Vim 会在每次替换前提示你: :%s/4/gc2,删除多余的空格要删除这些每行后面多余的空格,可以执行如下命令: :%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”)。例如: /ab3,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 35,多选一匹配在一个查找模式中,”或” 运算符是 “|”。例如: /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 为 skyn 为数字,若 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 为 sky2. :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 为 sky4. 可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符:s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/5. 删除文本中的M问题描述:对于换行,window下用回车换行(0A0D)来表示,Linux下是回车(0A)来表示。这样,将window上的文件拷到Unix上用时,总会有个M.请写个用在unix下的过滤Windows文件的换行符(0D)的shell或c程序。 使用命令:cat filename1 | tr -d “VM” newfile; 使用命令:sed -e “s/VM/” filename outputfilename。需要注意的是在1、2两种方法中,V和M指的是Ctrl+V和Ctrl+M。你必须要手工进行输入,而不是粘贴。 在vi中处理:首先使用vi打开文件,然后按ESC键,接着输入命令:%s/VM/。 :%s/M$/g如果上述方法无用,则正确的解决办法是: tr -d r dest tr -d 015 dest strings AB6. 其它利用 :s 命令可以实现字符串的替换。具体的用法包括::s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1:s/str1/str2/g 用字符串 s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论