本文见介绍linux vi命令替换的使用。

vi/vim 中可以使用 :s 命令来替换字符串。以前只会使用一种格式来全文替换,今天发现该命令有很多种写法(linux 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.你必须要手工进行输入,而不是粘贴。

。 在linux vi命令中处理:首先使用linux 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的多行注释和替换

作者:niutian365 日期:2009-09-15

字体大小: 小 中 大

以前学vim时是用的vim tutor,记得那里面好像有关于多行注释的教程,不过刚才要用时发现自己以前学得一点都不扎实,除了最常用的一些命令外,其他命令一概不记得,看来好记性确实不赶烂笔头,还是得记下来啊。。。

ctrl+v 进入列模式,向下或向上移动光标,把需要注释的行的开头标记起来,然后按大写的I,再插入注释符,比如#,再按Esc,就会全部注释。或者也可以运行下面这些命令:

:s/^/#                  #用"#"注释当前行

:2,50s/^/#              #在2~50行首添加"#"注释

:.,+3s/^/#              #用"#"注释当前行和当前行后面的三行

:%s/^/#                 #用"#"注释所有行

顺便说一下vim的替换,这个常用,已经牢记,其实和上面用命令注释多行是一样的,只不过是上面注释的命令里的"^"符号代表开始位置而已,在下面这些命令中,"s"代表替换,part1代表查找的内容,part2代表替换的内容,"%"代表所有行,"g"代表替换整行里所有的内容(如果不加"/g"则只替换每行第一个匹配part1的地方)。

:s/part1/part2          #用part2替换当前行中第1个part1

:s/part1/part2/g        #用part2替换当前行中所有的part1

:%s/part1/part2         #用part2替换所有行中每行第1个part1

:%s/part1/part2/g       #用part2替换所有行中所有的part1

:2,50s/part1/part2      #用part2替换第2行到第50行中每行第1个part1

:2,50s/part1/part2/g    #用part2替换第2行到第50行中所有的part1

:.,+3s/part1/part2      #用part2替换当前行以及当前行后面的三行中每行第1个part1

:.,+3s/part1/part2/g    #用part2替换当前行以及当前行后面的三行中所有的part1

BTW:在替换时要注意,某些字符是需要转译的,如空格、括号等。

 四月 4, 2009 | Posted by 老蒋

几乎每天都用vim,但是还是有些小常识需要学习。看到一篇有用的文章,就记录下来。原来文章参考http://freetravel.blog.sohu.com/106769983.html

VIM是被誉为非常高效的文本编辑软件。但是掌握并高效的使用是件有难度的事情。在VIM中进行快速的查找和替换是提高VIM使用效率的重要方法。下面是我在阅读VIM用户手册时整理的一些资料:

行内搜索。f命令可以进行行内搜索。输入fx可以找到下一个x字符。

F命令可以在反方向进行行内搜索,输入Fx可以找到上一个x字符。

t命令同样是进行行内搜索,但是光标停留在符合条件的字符的前面。输入tx使光标停留在下一个x字符的前面。

T命令可以在反方向进行行内搜索,但是光标停留在符合条件的字符的下一个字符上。输入tx使光标停留在上一个x的后面的字符上。

%可以搜索与之匹配的对应的()[]{}。这个功能对于书写程序特别有用。

全文的搜索。键入/后,光标进入VIM底部的命令行,这时就可以输入以/为开始的/搜索命令了。最简单的查找。输入/string就可以查找string字符串。

继续查找。在第一次搜索后输入n将会继续进行上一次搜索,如果输入3n那么会找到后面第三个符合的字符串。大写的N会在反方向,也就是向上进行搜索。

向上搜索。输入?可以向上搜索。随后的n命令将会继续向上搜索,N向下搜索,其他和/一样。

对大小写的匹配。在命令行输入:set ignorecase可以设置搜索以忽略大小写的方式进行。输入:set noignorecase可以设置搜索以匹配大小写的方式进行。默认的,将匹配大小写。这个默认设置可以在.vimrc中修改。

大小写智能匹配模式。输入命令:set ignorecase smartcase可以设置为智能大小写匹配模式。在这种模式下,如果你输入的字符串中至少包含一个大写字母,那么就会以大小写敏感模式进行搜索,否则以忽略大小写模式进行搜索。

在搜索命令中指定大小写。在几种大小写搜索模式中进行转换总要输入长长的一串指令,如果需要不断地转换模式,确实有些麻烦。所以你可以直接在搜索命令中指定大小写匹配模式。\c表示忽略大小写,而\C表示对大小写敏感。

查找当前词。一个简单的方法可以让你查找下一个和当前词一样的词,你不比输入/currentword,你可以直接按下*就可以查找下一个currentword。#可以让你向上查找同一个单词。

调整查找后的光标位置。使用/string/3会使在光标转到找到string字符串的行下面的第3行。第1行从包含string的行算起。同样可以使用/string/-2来使光标停留在包含string的行的前面2行。

使用/string/e可以使光标停留在string字符串的末尾而不是默认的第一个字符位置。/string/b则表示停留在string第一个字符的位置,不过默认就是如此,我们不比多此一举。但是/string/b+2却可以使光标停留在string字符串的第二个字符的位置,这里是r。在e或者b的后面+或者-数字,可以进一步调整光标的位置。

特殊字符。在搜索命令中,  .*[]^%/?~$这10个字符有着特殊意义,所以在使用这些字符的时候要在前面加上一个反斜杠/。而\e表示;\t表示;\r表示;\b表示。

匹配换行或空格。使用\n可以表示一个换行;而\s表示匹配空白,注意是空白不是空格。\_s表示匹配换行或者空格;\_a表示匹配换行或者一个字母。比如:/the\nword查找以the结束并且下一行以word开始的行的位置。/the\_sword查找the和word之间以空白或者换行分割的位置。/the\_s\+word表示the和word之间可以有多个空白。\+的含义可以在后面找到。

限定词首或者词尾。\则是限定必须是以指定字符串结尾的单词。

行首和行尾。输入/^string查找以string开始的行,并且光标停留在这个string的第一个字符。输入/string$则查找以string结束的行,并将光标停留在这个string的第一个字符。这个模式不会忽略前导或者后置的空格。

匹配任何一个字符。句号.可以匹配任何一个字符。例如/t.e可以找到the或者tae或者tue。

更加复杂的匹配模式。实际上,/搜索可以使用非常复杂的匹配模式。下面列出了其中一些复杂的匹配模式。可重复的字符。使用*表示它前面的字符可以重复多次或者0次。比如/be*可以匹配b,be,bee,beee等等。但是这也会包含b,因为e重复0后是空。如果要匹配诸如be,bebe,bebebe的字符串可以使用\(和\)把他们包括起来,形如:/\(be\)*。

使用\+来限定为重复至少一次到无数次。如:/be\+可以匹配be,bee,bee等等。

重复0次或者一次。\=可以指定重复0次或者一次。/strings\=表示匹配string或者strings。这在查找单词的复数形式特别有用.

指定重复的次数。\{n,m}可以指定重复n到m次。比如:/be\{2,4}将会匹配bee,beee,beeee。同样可以使用\{,4}表示匹配0到4次;\{4,}表示4次到无数次;\{4}表示重复4次。

匹配列表中的一个。使用一个以\|分割的列表,可以表示匹配列表中任何一项。比如/one\|two表示查找one或者two;/one\|two\|three表示查找one或者two或者three。一个复杂的实例:/end\(if\|while\|for\)将会查找endif,endwhile以及endfor。

字符列表。使用[0-9]可以表示一个0到9范围的字符。比如/string[1-5]表示查找string1,string2,string3,string4,string5。当然也可以使用[a-z]表示字符a到z中间的一个。

特殊的字符集合。使用\d也可以表示0到9的数字,这个选项可以代替[0-9]。\D表示非数字代替[^0-9];\x表示十六进制数代替[0-9a-fA-F];\X表示非十六进制数代替[^0-9a-fA-F];\s表示空白字符代替[ ] (和);\S表示非空白字符代替[^ ] (除和之外);\l表示小写字母代替[a-z];\L表示非小写字母代替[^a-z];\u表示大写字母代替[A-Z];\U表示非大写字母代替[^A-Z]

搜索并替换。输入:[range]s/from/to/[flags]命令可以搜索匹配的字符串并且替换为指定的字符串。这是一个稍微复杂的命令。其中[range]是一个可选项,用来指定搜索替换的范围。[flags]也是一个可选项,用来指定搜索替换的处理方式。所以这个命令的简单形式是:s/from/to/。搜索替换的范围。如果没有指定范围,则只在当前行进行搜索替换。在所有行进行搜索替换。范围符号%表示在所有行进行搜索替换。:%s/from/to/就是在全文查找from并替换为to。

在指定的行上进行搜索替换。:1,50s/from/to/表示在第1行和第50行之间(包括1和50行)进行搜索和替换。:45s/from/to/表示仅仅在第45行进行搜索和替换。而"1,$"行号范围和“%“是等价的。

处理方式。我现在使用的VIM默认的方式是无须确认。不过好像不同版本的默认的处理方式是不同的。无须确认。方式符号g表示直接替换无须进行确认。:%s/from/to/g表示在全文中查找from并且直接全部替换为to。

列印。处理方式符号p表示在替换时列出每个被改变的行。手册中这么说,但是实际效果却让我很迷惑。

确认后处理。处理方式符号c表示在进行替换前需要用户进行确认。这时你可以选择(y/n/a/q/1/^E/^Y):y表示同意当前替换;n表示不同意当前替换;a表示替换当前和后面的并且不再确认;q表示立即结束替换操作;1表示把当前的替换后结束替换操作;^E向上滚屏^Y向下滚屏,用来帮助查看前后内容以决定进行操作。

[转载]VIM替换文本

vim替换字符串带斜杠_VI中的查找和替换相关推荐

  1. vim替换字符串带斜杠_vim中字符串的替换

    vi/vim 中可以使用 :s 命令来替换字符串 :s/vivian/sky/ 替换当前行第一个 vivian 为 sky :s/vivian/sky/g 替换当前行所有 vivian 为 sky : ...

  2. vim替换字符串带斜杠_Vim、gvim操作替换

    ~  回复 以下关键词  查看更多IC设计教程 ~ 目前支持的关键词有: Innovus                            ICC or IC CompilerDC or Desi ...

  3. vim替换字符串带斜杠_Linux vi/vim最全使用指南

    > 请关注本头条号,每天坚持更新原创干货技术文章.> 如需学习视频,请在微信搜索公众号"智传网优"直接开始自助视频学习. 1. 前言 Linux下的文本编辑器有很多种, ...

  4. vim替换字符串带斜杠_Vim:正则表达式匹配一个字符串

    到目前为止,所有给出的答案对我来说都是错误的,因为它们执行的是贪婪匹配.在多次出现"否"的行中,它们将匹配最后一个: YES YES YES YES no YES YES no Y ...

  5. linux下使用sed批量替换关键词(带斜杠处理+kaggle路径批量替换)

    source string:/kaggle/input destination string:~/File/hyh/data 命令如下: sed -i "s#/kaggle/input#~/ ...

  6. php 网址尾部带斜杠和不带区别,URL路径中带正斜杠/与不带的区别

    简单理解:不带斜杠的URL结尾通常被服务器识别成独立文件,当它去查找这个文件缺失的时候,就会重定向到带斜杠的URL,这个时候带斜杠的URL,可以理解成为是目录. 解读URL结尾斜杠的产生: 举例: - ...

  7. php 网址尾部带斜杠和不带区别,网址中带斜杠和不带斜杠的区别

    关于网址中带"/"和不带"/"有很多讨论.因为在发外链的时候常常纠结到底要不要带上斜杠"/"? 1.域名后需要加斜杠("/&quo ...

  8. 网址最后面不带斜杠与带斜杠有什么区别

    网址最后面不带斜杠与带斜杠有什么区别 文件与文件夹 解析 URL   关于网址中最后面的那个斜杠 /,很多人习惯性的不输入,原因是他们认为有或者没有没有区别.但这要归功于服务器那端的开发人员的努力.实 ...

  9. Linux_Vim编辑器 _ 关于在vim中的查找和替换

    在日常Linux 使用中,我们不可避免的要使用 vim 编辑器. 对于一些查找替换功能,我们在 vim 中要使用 命令的形式完成,具体怎么完成,跟着我们来学习吧.!!! 原文地址: https://w ...

最新文章

  1. 电脑重装系统后提示invalid partition table怎么解决
  2. Python使用LDAP做用户认证
  3. SAP CRM product customizing下载的第三个队列
  4. 批量生成6位数字_太准了,你是Excel高手or小白看这6个操作就知道了
  5. Python入门--字典元素的遍历for-in
  6. SATA SAS SSD 硬盘介绍和评测
  7. diff命令两个服务器文件,LINUX命令diff-文件管理-比较给定的两个文件的不同
  8. Java 面向对象 知识点基础浅谈
  9. (30 gadget day 8) 你爱我有几分 — Mindwave mobile
  10. c语言幼儿园积木游戏,干货来袭!超详细幼儿园游戏活动教案
  11. 开源组件安全漏洞检测主流工具对比
  12. 视频编辑转换 ViscomSoft SDK ActiveX 19.0
  13. Akka Serialization
  14. 2020年个人年终总结
  15. Java day 31 网络编程和简单练习
  16. SQL语法创建及管理数据表结构
  17. python绘制对数函数
  18. Adobe Acrobat 虚拟打印机安装方法
  19. 说话人识别模型finetune
  20. c语言航空订票系统程序设计,航空订票系统C语言版.doc

热门文章

  1. 用javascript分类刷leetcode4.贪心(图文视频讲解)
  2. Codeforces Round #807 (Div. 2)A~E个人题解
  3. WeakHashMap源码解析及使用场景
  4. 【你真的知道?】凤凰、鸳鸯、石狮的雌雄之分
  5. 网页打印宋体不支持加粗效果
  6. 无线数字DR平板探测器维修瓦里安PaxScan 4030X分析
  7. 计算机二级前两周,知道这些,计算机二级两周够了
  8. 工作日,我们又团建了!
  9. 2021-09-07体脂秤模块用来做什么?开发八电极体脂秤方案
  10. 记Git报错-Everything up-to-date