且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

5.5 进入编辑模式;5.6 vim命令模式;5.7 vim实践

更新时间:2022-09-16 11:18:04

扩展:

vim的特殊用法 

http://www.apelearn.com/bbs/thread-9334-1-1.html

vim常用快捷键总结 

http://www.apelearn.com/bbs/thread-407-1-1.html

vim快速删除一段字符 

http://www.apelearn.com/bbs/thread-842-1-1.html

vim粘贴代码乱码 

http://www.apelearn.com/bbs/thread-6753-1-1.html

putty和Shell小键盘问题 

http://www.apelearn.com/bbs/thread-7215-1-1.html

vim加密  

http://www.apelearn.com/bbs/thread-7750-1-1.html

5.5 进入编辑模式

i

光标位置的前一位,开始编辑

a

光标位置的后一位,开始编辑

Shift + i    (大写I)

光标行,行首,开始编辑

Shift + a  (大写a)

光标行,行尾,开始编辑

o

光标行,下面另起一行,开始编辑

Shift + o  (大写o)

光标行,上面另起一行,开始编辑

5.5 进入编辑模式;5.6 vim命令模式;5.7 vim实践

5.6 vim命令模式

搜索关键词/关键词 (搜索到的关键词,会高亮显示)

向下查找高亮的关键词:n

向上查找高亮的关键词:Shift + n


搜索关键词?关键词 (搜索到的关键词,会高亮显示)

向下查找高亮的关键词:Shift + n

向上查找高亮的关键词:n

关键词,替换:

范围行替换:

指定范围行内包含的所有关键词,替换成目标字符   :开始行,结束行s/关键词/替换词/g

310行内包含的所有关键词root,替换成haoroot    :3,10s/root/haoroot/g

(注意:如果没有g,只会替换每行第一个出现的关键词,并不会所有关键词全部替换!) (特殊情况:如果要替换的关键词中带有/斜杠,分割符斜杠可以用#代替!)

例如    :1,10s#/sbin/nologin#hao#g

全文替换:

全文所有行,包含的所有关键词,替换成目标字符 :

:1,$s/关键词/替换词目标字符/g

1$(最后一行),包含的所有关键词root,替换成haoroot : :1,$s/root/haoroot/g

(注意: 没有g,只会替换每行第一个出现的关键词,并不会所有关键词全部替换!)

(特殊情况: 如果要替换的关键词中带有/斜杠,分割符斜杠可以用#代替!)

例如:1,$s#/sbin/nologin#hao#g

vim常用命令:

:w

保存文本

:w!

强制保存,在root用户下,即使文本只读也可以完成保存

:q

退出vim编辑器

:q!

强制退出,所有改动不生效

:wq

保存并退出,如果文本没有任何改动,mtime(修改时间)会更改为当前时间

:x

保存并退出,如果文本没有任何改动,不会更改mtime!

:wq!

强制保存退出

:set nu

显示行号

:set nonu

不显示行号

:nohl


取消高亮的关键词

5.7 vim实践

复制文件,用作练习:

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

练习题:

(1) 向下向上向左向右 移动6个字符

答:下6行:  6j 上6行:  6k  左6字符:  6h   右6字符:  6l                  

(2) 向下向上 翻2页

答:向上翻2页:  2次 ctrl+   向下翻2页:  2下 ctrl+b

(3) 把光标移动到第49

答: 49  +  Shift+g(大写G)

(4) 把光标移动行尾,再移动行首

答: 行尾:  Shift+4     行首: Shift+6

(5) 移动到1.txt文件内容最后一行

答:Shift+g(大写G)

(6) 移动到文件内容首行(第一行)

答:gg

(7) 搜索关键词dnsmasq,并数出关键词出现次数

答: 查找关键词:  /dnsmsq 下查高亮的关键词n

(8) 把从第1行第10行出现的关键词dnsmasq替换成dns

答:  :1,10s/dnsmasq/dns/g

(9) 还原上一步操作

答:  u

(10) 把整个文件所有etc替换成cte

答:   :1,$s/etc/cte/g

(11) 把光标移动到第25行,删除字符串 ly

答:移到25行: 25  向右移动光标找到lyj  标记选中:  v   删除标记字符:  x

(12) 还原上一步操作

答:  u

(13) 删除50行

答: 移到50行: 50G     删除光标所在行:  dd

(14) 还原上一步操作

答: u

(15) 删除37-42行所有内容

答: 移到37行:  37  删除37光标行42行(共6行):  6dd

(16) 还原上一步操作

答: u

(17) 复制48行内容粘贴到第52行下面

答: 移到48行: 48  复制光标行: yy    移到52行: 52G   粘贴到下面:  p

(18)还原上一步操作

答: u

(19) 复制37-42行内容粘贴到第44行上面

答: 移到37行: 37 复制37光标行42行(共6行): 6yy  移到44行: 44G  

粘贴到上面:  大写P(Shift+p)

(20) 还原上一步操作

答: u

(21) 把第37-42行内容移动(剪切)到第19行下面

答: 移到37行: 37 剪切37光标行42行(共6行): 6dd   移到19行: 19 

粘贴到下面: p    

(22) 还原上一步操作

答: u

(23) 光标移动首行,把第1行内容改为#!/bin/bash

答: 移到第一行: gg  从行尾开始编辑: Shift+ 清空光标前字符: Shift+u  添加更改内容: #!/bin/bash

(24) 在1行下面插入新的一行,并输入# Hello!

答: 移到第一行: gg  光标行下面另起一行: o    输入: # Hello!

(25) 保存文档退出

答: 退出编辑模式: Esc键   一般模式下,保存退出:  :wq










本文转自 主内安详 51CTO博客,原文链接:http://blog.51cto.com/zhuneianxiang/2057258,如需转载请自行联系原作者