5.6-vim命令模式

在一般模式下,输入 : 或者 / 即可进入命令模式。在该模式下,我们可以搜索某个字符或者字符串,也可以实现保存、替换、退出、显示行号…操作。

命令作用
/word在光标之后查找一个字符串 word ,按 n 向后继续搜索
?word在光标之前查找一个字符串 word ,按 n 向后继续搜索
:n1,n2s/word1/word2/g在n1和n2行之间查找world1并替换为word2不加g则只替换每行的第一个word1
:1,$s/word1/word2/g将文档中所有的word1替换为word2 ,不加g则只替换每行的第一个word
:w保存文本
:q退出vim
:w!强制保存,在root用户下,即使文本只读也可以完成保存
:q!强制退出,所有改动不生效
:wq保存并退出
:set nu显示行号
:set nonu不显示行号
:nohl搜索后的结果不高亮显示
:x如果仅仅是看下文本不想mtime被改变的话就用这个

指定范围替换关键字
:n1,n2s/word1/word2/g

准备测试文件

[root@evan-01 ~]# cp /etc/rsyslog.conf /tmp/1.txt

全局替换 20 行内的 rsyslog 为 evan

[root@evan-01 tmp]# wc -l 1.txt
91 1.txt
[root@evan-01 tmp]# vi 1.txt 

先搜索下 rsyslog
在这里插入图片描述把 1-20 行内的 rsyslog 替换为 evan

:1,20s/rsyslog/evan/g

在这里插入图片描述看到左下角提示:4次替换,共3行。
搜索 evan ,已经替换成功

/evan

在这里插入图片描述替换 20 行内的 evan 为 rsyslog,不加g
:n1,n2s/word1/word2/
第3行有2个 evan,我们尝试不加 g,看下后面的这个会不会被替换
在这里插入图片描述

:1,20s/evan/rsyslog/

在这里插入图片描述
看到左下角提示:3次替换,共3行。
看第3行 ,发现只有这行的第一个被替换了

全局替换关键字
:1,$s/word1/word2/g

:1,$s/rsyslog/evan/g

在这里插入图片描述看到左下角提示:6次替换,共6行。

搜索rsyslog看还存在不

/rsyslog

在这里插入图片描述搜索 rsyslog 发现已经不存在了

特殊的替换
把 /var/log 替换为 www.evan3398.com

:1,$s//var/log/www.evan3398.com/g

在这里插入图片描述因为替换的规则就是以/为分割的,要替换的内容就是/ /间的内容,我们要替换的内容 /var/log 里面有特殊符号 /,最终的组合是这样的 :1,$s//var/log/www.evan3398.com/g,系统会认为我们要把/ /替换成 var,于是后面的那一串就显得多余了,所以报错了

解决办法

:1,$s/\/var\/log/www.evan3398.com/g

\/ 就当成是一个字符
反斜杠一般用作转义字符或脱逸,就是逃脱的意思。用于去除一个单个字符的特殊意义,它保留了跟随在之后的字符的字面值,除了换行符
在这里插入图片描述在这里插入图片描述更简单明了的写法
如果要替换的字符里面包含 /,那么我们就可以变换下写法,把原本用 / 分隔的都变成 #

u 恢复成以前的样子
然后再用这种方法,把原本用 / 分隔的都变成 #

:1,$s#/var/log#www.evan3398.com#g

在这里插入图片描述u 恢复成以前的样子
然后再用这种方法,把原本用 / 分隔的都变成 @

:1,$s@/var/log@www.evan3398.com@g

在这里插入图片描述

:set nu 显示行号

:set nu

在这里插入图片描述

:set nonu 不显示行号

:set nonu

在这里插入图片描述

:nohl 搜索后的结果不高亮(临时隐藏)

/evan3398

在这里插入图片描述

:nohl

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值