【易客吧】_全网激活码总代_激活码商城

您现在的位置是:首页 > 热门资讯 > 正文

热门资讯

Vim 替换详解:使用模式、范围和正则表达式 (vim替换命令怎么用)

用户投稿2024-04-08热门资讯38

引言

Vim 是一款强大的文本编辑器,以其高度可定制性和丰富的命令集而闻名。替换命令是一种在文本中搜索和替换字符或文本字符串的强大工具。在这个教程中,我们将深入探讨 Vim 的替换命令,包括使用模式、范围和正则表达式的详细信息。

基本语法

Vim 替换命令的基本语法如下:```:s/[source_pattern]/[replacement_string]/[flags]```其中:[source_pattern]:要搜索的模式。[replacement_string]:用于替换匹配模式的文本。[flags]:可选的标志,用于控制替换行为。

使用模式

Vim 提供了多种模式,可以用来指定要替换的文本。无模式 (Normal mode):这是 Vim 的默认模式,用于编辑和命令输入。可视模式 (Visual mode):用于选择文本。块模式 (Block mode):用于选择矩形区域的文本。行模式 (Line mode):用于选择当前行。

指定范围

可以通过指定范围来限制替换操作的作用域。光标下的文本:不指定范围时,替换将应用于光标下的当前字符。当前行:使用 Ctrl-V 或 v 进入可视模式,然后选择要替换的行。指定范围:使用 % 替换整个文件,或使用 '[start_line,end_line]' 指定行范围。选择文本:使用 v、V 或 Ctrl-V 选择要替换的文本。

使用正则表达式

正则表达式是一种强大的模式匹配语言,可以用来匹配复杂的文本模式。 Vim 支持广泛的正则表达式语法,包括:元字符:如 .、、^、$ 等。字符类:如 \d、\w、\s 等。分组和引用:如 (...)、\1、\2 等。 Vim 替换详解:使用模式、范围和正则表达式 (vim替换命令怎么用) 第1张

替换标志

Vim 提供了一些标志,用于控制替换行为:c:确认替换。g:全局替换,替换所有匹配项。i:忽略大小写。n:仅显示替换操作而不实际执行。p:打印替换结果。w:仅在单词边界处匹配。

示例

将所有 "the" 替换为 "The"```:%s/the/The/g```使用正则表达式替换单词开头的小写字母为大写字母```:%s/^\w/\U\0/g```在当前行替换所有出现的数字为 "n/a"```:.,$s/\d+/n\/a/g```在可视模式下替换所选文本为 "Replaced"```v/Replace/s//Replaced/g```使用确认标志替换文件中的所有 "example" 为 "Example"```:%s/example/Example/gc```

结论

Vim 的替换命令是一个功能强大的工具,可以用来执行各种文本替换任务。通过理解不同的模式、范围和正则表达式,您可以充分利用 Vim 的替换功能,提高编辑效率和准确性。

vim 中如何替换选中行或指定几行内的文本

命令格式:

:首行数,末行数s/要替换的字符串/替换的字符串/g

注意:

不加g只替换每行的一个要替换的字符串,后面的不会替换。

如果指定行数,在s前面加上%可以实现全文范围内替换。

具体的步骤:

1、打开文件:vim ,用vim打开文件。

2、按ESC键,进入命令模式。

3、在底部输入: “:1,$s/if/wj/g”,把文件中的所有if都替换成wj。

扩展资料:

1、将文中所有的字符串idiots替换成managers:

:1,$s/idiots/manages/g

也可以这么写:

:%s/idiots/manages/g

2、指定只在第5至第15行间进行替换,把dog替换成cat:

:5,15s/dog/cat/g

3、指定只在当前行至文件结尾间进行替换,把dog替换成cat:

:.,$s/dog/cat/g

4、指定只在后续9行内进行替换,把dog替换成cat:

:.,.+8s/dog/cat/g

vi怎么查找替换

vi查找替换命令详解

一、查找查找命令/patternEnter :向下查找pattern匹配字符串?patternEnter:向上查找pattern匹配字符串使用了查找命令之后,使用如下两个键快速查找:n:按照同一方向继续查找N:按照反方向查找字符串匹配pattern是需要匹配的字符串,例如:

1: /abcEnter #查找abc2: / abc Enter #查找abc单词(注意前后的空格)

除此之外,pattern还可以使用一些特殊字符,包括(/、^、$、*、.),其中前三个这两个是vi与vim通用的,“/”为转义字符。

1: /^abcEnter #查找以abc开始的行 2: /test$Enter #查找以abc结束的行 3: //^testEnter #查找^tabc字符串

二、替换基本替换

1: :s/vivian/sky/ #替换当前行第一个 vivian 为 sky2: :s/vivian/sky/g #替换当前行所有 vivian 为 sky3: :n,$s/vivian/sky/ #替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky4: :n,$s/vivian/sky/g #替换第 n 行开始到最后一行中每一行所有 vivian 为 sky5: (n 为数字,若 n 为 .,表示从当前行开始到最后一行)6: 7: :%s/vivian/sky/ #(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky8: :%s/vivian/sky/g #(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky

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

1: :s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/2: :%s+/oradata/apras/+/user01/apras1+ (3: 使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/

删除文本中的^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//” filenameoutputfilename需要注意的是在1、2两种方法中,^V和^M指的是Ctrl+V和Ctrl+M。你必须要手工进行输入,而不是粘贴。在vi中处理:首先使用vi打开文件,然后按ESC键,接着输入命令:

1: :%s/^V^M//2: :%s/^M$//g

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

1: tr -d “/r”src dest2: tr -d “/015″ dest3: 4: strings AB

其它用法

1: :s/str1/str2/ #用字符串 str2 替换行中首次出现的字符串 str12: :s/str1/str2/g #用字符串 str2 替换行中所有出现的字符串 str13: :.,$ s/str1/str2/g #用字符串 str2 替换正文当前行到末尾所有出现的字符串 str14: :1,$ s/str1/str2/g #用字符串 str2 替换正文中所有出现的字符串 str15: :g/str1/s//str2/g #功能同上

从上述替换命令可以看到:g 放在命令末尾,表示对指定行的搜索字符串的每次出现进行替换;不加 g,表示只对指定行的搜索字符串的首次出现进行替换;g 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。也就是说命令的开始可以添加影响的行,如果为g表示对所有行;命令的结尾可以使用g来表示是否对每一行的所有字符串都有影响。三、简单的vim正则表达式规则在vim中有四种表达式规则:magic(/m):除了$.*^之外其他元字符都要加反斜杠nomagic(/M):除了$^之外其他元字符都要加反斜杠/v(即 very magic 之意):任何元字符都不用加反斜杠/V(即 very nomagic 之意):任何元字符都必须加反斜杠vim默认使用magic设置,这个设置也可以在正则表达式中通过 /m /M /v /V开关临时切换。例如:

1: //m.* # 查找任意字符串2: //M.* # 查找字符串 .* (点号后面跟个星号)3: 4: //v(a.c){3}$ # 查找行尾的abcaccadc5: //m(a.c){3}$ # 查找行尾的(abc){3}6: //M(a.c){3}$ # 查找行尾的(a.c){3}7: //V(a.c){3}$ # 查找任意位置的(a.c){3}$

推荐使用默认的magic设置,在这种情况下,常用的匹配有:

1: //abc #查找以test开始的字符串 2: /abc/ #查找以test结束的字符串 3: 4: $ 匹配一行的结束 5: ^ 匹配一行的开始 6: / 匹配一个单词的开始,例如//abcEnter:查找以abc开始的字符串 7: / 匹配一个单词的结束,例如/abc/Enter:查找以abc结束的字符串 8: 9: * 匹配0或多次10: /+ 匹配1或多次11: /= 匹配0或1次12: 13: . 匹配除换行符以外任意字符 14: /a 匹配一个字符15: /d 匹配任一数字 16: /u 匹配任一大写字母17: 18: [] 匹配范围,如t[abcd]s 匹配tas tbs tcs tds19: /{} 重复次数,如a/{3,5} 匹配3~5个a20: /( /) 定义重复组,如a/(xy/)b 匹配ab axyb axyxyb axyxyxyb ...21: /| 或,如:for/|bar 表示匹配for或者bar22: 23: /%20c 匹配第20列24: /%20l 匹配第20行

vi+文件名,可以创建一个文件

用cat+问价名,可以查看一个文件

用cut -f3+文件名,可以选择文件中的第3段字符

输入英文的冒号:然后输入wq可以保存文件内容并退出

输入英文的冒号:然后输入q可以放弃保存并退出

输入英文的冒号/然后输入一个字符串,可以查找该字符串

如果以上经验帮到您,麻烦在左下角给点个赞,谢谢!

vim中如何查找和替换字符串

一、 字符串的查找1. vim 中用 / 和 ? 来查找字符串,两者的区别是:/string 会高亮显示光标后匹配的第一个字符串,回车后光标移到该字符串的第一个字母;string 会高亮显示光标前匹配的第一个字符串,回车后光标移到该字符串的第一个字母。 在回车之后,按n键同方向转到下一个匹配的字符串,按N键反方向转到上一个匹配的字符串。 2. 用命令 :set ic 和 :set noic 来分别设置查找时不区分和区分大小写。 如果查找特殊字符,如 ^、$、*、/ 和 .,需要在前面加 \ 来转义。 二、字符串的替换1. vim 中可用 :s 命令来替换字符串,具体如下::s/str1/str2/ 替换当前行第一个 str1 为 str2:s/str1/str2/g 替换当前行中所有 str1 为 str2:m,ns/str1/str2/ 替换第 n 行开始到最后一行中每一行的第一个 str1 为 str2:m,ns/str1/str2/g 替换第 n 行开始到最后一行中所有的 str1 为 str2(注:m和n 为数字,若m为 .,表示为当前行开始;若n为$,则表示到最后一行结束)如果使用 # 作为分隔符,则中间出现的 / 不会作为分隔符,比如::s#str1/#str2/# 替换当前行第一个 str1/ 为 str2/:%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/2. 其他:%s/str1/str2/(等同于 :g/str1/s//str2/) 替换每一行的第一个 str1 为 str2:%s/str1/str2/g(等同于 :g/str1/s//str2/g 和 :1,$ s/str1/str2/g ) 替换文中所有 str1 为 str2从替换命令可以看到,g 放在命令末尾,表示对搜索字符串的每次出现进行替换;不加 g,表示只对搜索

若对本页面资源感兴趣,请点击下方或右方图片,注册登录后

搜索本页相关的【资源名】【软件名】【功能词】或有关的关键词,即可找到您想要的资源

如有其他疑问,请咨询右下角【在线客服】,谢谢支持!

Vim 替换详解:使用模式、范围和正则表达式 (vim替换命令怎么用) 第2张

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~
你上次访问网站的时间为:24-05-18,12:09:04 你第14访问网站的时间为:24-05-18 12:09:07