首页 > 编程知识 正文

vim命令如何查找字符,查找替换怎么替换不了

时间:2023-05-04 19:33:09 阅读:18365 作者:539

在vi/vim中,可以使用: s命令代替字符串。 该命令有各种细微的使用方法,可以实现复杂的功能。 把几种类型记录在这里,以后很容易就能查到。

: s/vivian/sky/用sky替换当前行中的第一个vivian

: s/vivian/sky/g用sky替换当前行中的所有vivian

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

: n,$s/vivian/sky/g用sky替换从第n行开始到最后一行的所有vivian

n是数字,如果n是.则表示从当前行到最后一行

: % s/vivian/sky/(等效于g/vivian/s//sky/)用sky替换每行中的第一个vivian

: % s/vivian/sky/g (等效于g/vivian/s//sky/g )用sky替换每行中的所有vivian

可以使用#作为分隔符。 在这种情况下,中心显示的/不用作分隔符

: s#vivian/#sky/#将当前行的第一个vivian/转换为sky/

: % s/oradata/apras//use r01/apra S1 (用于替换/) (/Oradata/apras/用于替换/user01/apras1/

1.s/vivian/sky/用sky替换当前行中的第一个vivian

: s/vivian/sky/g用sky替换当前行中的所有vivian

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

: n,$s/vivian/sky/g用sky替换从第n行开始到最后一行的所有vivian

(n是数字,如果n为.则表示从当前行到最后一行) ) ) ) )。

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

: % s/vivian/sky/g (等效于g/vivian/s//sky/g )用sky替换每行中的所有vivian

4 .可以使用#作为分隔符。 此时,在中间显示/不显示的是分隔符

: s#vivian/#sky/#将当前行的第一个vivian/转换为sky/

5 .从文本中删除^M

问题说明:对于换行,在window中用换行(0A0D )表示,在linux中用换行(0A )表示。 因此,在将窗口上的文件复制到unix上使用时,必须有^M。 请编写用于过滤unix下windows文件中换行符(0D )的shell或c程序。 使用命令: catfilename1|tr-d「^v^m”新文件; 命令: sed-e“s/^v ^m//”filenameoutputfilename .必须注意的是,在一两种方法中,^ 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 AB

6 .更换确认

我们经常需要一个选择性操作,当一个字符(字符串)在文章中的一个位置出现时会被替换,而其他位置不会被替换,这需要用户确认,vi的搜索替换也同样支持

例如

: s/vivian/sky/g用sky替换当前行中的所有vivian

在命令后加上c表示s/vivian/sky/gc

xsdbb意,c是confirm的缩写

7 .其他

:可以使用s命令替换字符串。 具体使用方法如下

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

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

请参阅。$ s/str1/str2/g用字符串str2替换从正文当前行到末尾出现的所有字符串str1

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

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

从上面的替换命令可以看出,g位于命令的末尾,表示每次出现搜索字符串都会被替换; 如果不加g,则仅搜索

替换字符串的第一个出现; g位于命令的开头,表示将替换正文中包含搜索字符串的所有行

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。