欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

vim 查找 搜索 替换 有大用 有大大用 有大大大用 有大大大大用

vim  文件   这里 OK

输入“:%s/\r//g”,然后按 " Enter "键  见    /node-admin/12577


image.png

image.png

:1,$s@-rf@-rfi@g            这个表示全局搜索 -rf 替换为-rfi

s 表示 switch替换


image.png

:%s@mageedu.com@fin.mageedu.com@g  这个也是全局查找替换 %百分号表示全局范围,表示所有行的第一个匹配项,,,,,,g也表示全局,只是表示某一行的所有匹配项.




:^[^#]            表示不是以井号#开头的字符


关于在vim中的查找和替换

1,查找        

在normal模式下按下/即可进入查找模式,输入要查找的字符串并按下回车。 Vim会跳转到第一个匹配。按下n查找下一个,按下N查找上一个。

Vim查找支持正则表达式,例如/vim$匹配行尾的"vim"。 需要查找特殊字符需要转义,例如/vim\$匹配"vim$"

2,大小写敏感查找          大写小写

在查找模式中加入\c表示大小写不敏感查找,\C表示大小写敏感查找。例如:

/foo\c
           

将会查找所有的"foo","FOO","Foo"等字符串。

3,大小写敏感配置        

Vim 默认采用大小写敏感的查找,为了方便我们常常将其配置为大小写不敏感:

" 设置默认进行大小写不敏感查找
set ignorecase
" 如果有一个大写字母,则切换到大小写敏感查找
set smartcase 
 

:set ignorecase(set  ic) 忽略大小写  (比如编辑模式下 搜索的时候  /aaa 会搜出aaa 和 Aaa AAA 等等吧  ) 大小写不敏感

:set noignorecase (set noic  ) 忽略大小写 (这个用得不多)  大小写敏感

         

将上述设置粘贴到你的~/.vimrc,重新打开Vim即可生效

4,查找当前单词        

在normal模式下按下*即可查找光标所在单词(word), 要求每次出现的前后为空白字符或标点符号。例如当前为foo, 可以匹配foo bar中的foo,但不可匹配foobar中的foo。 这在查找函数名、变量名时非常有用。

按下g*即可查找光标所在单词的字符序列,每次出现前后字符无要求。 即foo barfoobar中的foo均可被匹配到。

5,查找与替换        

:s(substitute)命令用来查找和替换字符串。语法如下:

:{作用范围}s/{目标}/{替换}/{替换标志}
           

例如:%s/foo/bar/g会在全局范围(%)查找foo并替换为bar,所有出现都会被替换(g

6,作用范围        

作用范围分为当前行、全文、选区等等。

当前行:

:s/foo/bar/g
           

全文:

:%s/foo/bar/g
           

选区,在Visual模式下选择区域后输入:,Vim即可自动补全为 :'<,'>

:'<,'>s/foo/bar/g
           

2-11行:

:5,12s/foo/bar/g
           

当前行.与接下来两行+2

:.,+2s/foo/bar/g
           

替换标志

上文中命令结尾的g即是替换标志之一,表示全局global替换(即替换目标的所有出现)。 还有很多其他有用的替换标志:

空替换标志表示只替换从光标位置开始,目标的第一次出现:

:%s/foo/bar
           

i表示大小写不敏感查找,I表示大小写敏感:

:%s/foo/bar/i
# 等效于模式中的\c(不敏感)或\C(敏感)
:%s/foo\c/bar
           

c表示需要确认,例如全局查找"foo"替换为"bar"并且需要确认:

:%s/foo/bar/gc
           

回车后Vim会将光标移动到每一次"foo"出现的位置,并提示

replace with bar (y/n/a/q/l/^E/^Y)?
           

按下y表示替换,n表示不替换,a表示替换所有,q表示退出查找模式, l表示替换当前位置并退出。^E^Y是光标移动快捷键,参考: Vim中如何快速进行光标移        

 

 来自  https://www.cnblogs.com/huxinga/p/7942194.html

 

大小写敏感查找

在查找模式中加入\c表示大小写不敏感查找,\C表示大小写敏感查找。例如:

/foo\c
           

将会查找所有的"foo","FOO","Foo"等字符串。

标签: shell        




vim中末行去掉^M   尖括号M


参见 http://vim.wikia.com/wiki/Search_and_replace

搜索时:\n 是换行符,\r 是CR(回车 = Ctrl-M = ^M)
替换时:\r 是换行符,\n 是空字节 (0x00).



如下图 ,把尖括号M ( ^M )  替换成  换行    这里 OK

就是    :%s@\r@\r@g


image.png

结果如下


image.png


在Ubuntu系统中打开文件,发现文件中每一个末行都有^M,我们要做的是知道这一个无关的字符是什么作用,然后删除掉这一个无关的字符。

工具/原料
           

  • ubuntu操作系统
  • Vim编辑器

方法/步骤
           

  1. 1

    在VM编辑器打开相应的文件,发现文件中每一行都有一个^M字符

    vim中末行去掉^M                        
  2. 2

    ^M字符的来历和作用:在DOS/Windows里,文本文件的换行符为\r\n,而在*nix系统里则为\n,所以DOS/Windows里编辑过的文本文件到了*nix里,每一行都多了个^M。所以^M只是一个换行符号,没有实际的用处,我们可以将它保留,也可以将它删除。下面我们介绍如何在ubuntu中删除掉掉^M.

  3. 3

    在vim编辑器中,按住 " shift + : " 进入vim的编辑模式

    vim中末行去掉^M                        
  4. 这里 OK4

  5. 输入“:%s/\r//g”,然后按 " Enter "键

    vim中末行去掉^M                        
  6. 5

    替换成功!

    vim中末行去掉^M                        
    END                    
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
举报        

作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。   


       

来自  https://jingyan.baidu.com/article/19020a0a041d61529d28423d.html         



Vi/Vim查找替换使用方法

vi/vim 中可以使用 :s 命令来替换字符串。该命令有很多种不同细节使用方法,可以实现复杂的功能,记录几种在此,方便以后查询。 
  
  :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 
  
  如果上述方法无用,则正确的解决办法是: [Page]
  
  。 tr -d \"\\r\" < src >dest 
  
  。 tr -d \"\\015\" dest 
  
  。 strings A>B 
      6. 替换确认
         我们有很多时候会需要某个字符(串)在文章中某些位置出现时被替换,而其它位置不被替换的有选择的操作,这就需要用户来进行确认,vi的查找替换同样支持
       例如
      :s/vivian/sky/g 替换当前行所有 vivian 为 sky 
      在命令后面加上一个字母c就可以实现,即:s/vivian/sky/gc
      顾名思意,c是confirm的缩写
  
  7. 其它 
  
  利用 :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 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作

来自  https://www.cnblogs.com/logsharing/p/8182920.html

普通分类: