学习笔记(八)——vim 编辑器
1.vim 编辑器:
vim 是 vi 的加强版。与 vim 相似的编辑器还有nano, emacs。安装 vim:
[root@localhost~]# yum install –y vim-enhanced //直接vim也可以
[root@localhost~]# vim +10 /etc/init.d/iptables //进入后光标在第十行
下面分别介绍一下vim 的三种模式——查看模式,底行模式,编辑模式和各模式下的常用操作:
1.1 查看模式/一般模式:
(1) 移动光标,h j k l 四个键分别对应左、下、上、右,在前面加上数字,如5h ,可以一次性向左移动 5 个字符;
(2) G 光标跳转到尾行, gg 光标跳转到首行。n(这里指数字) + G光标跳转到第 n 行;
(3) ^ 光标跳转到所在行首个非空格字符, B 与 ^ 作用相同, 0 光标跳转到所在行首个字符(包括空格);
(4) x 向后删除一个字符, X 向前删除一个字符(Delete键下效果相同), n + x / X 向后/向前删除 n 个字符;
(5) dd 删除光标所在行, n + dd 删除包括光标所在行及下方共 n 行, dw 删除光标所在处一个单词,同样可以结合数字键使用。D 删除光标所在处及其后面所有
注:这里所说的删除,其实是剪切到了剪切板,可以通过 p 键进行粘贴。
(6) v 进入光标选择状态(可视模式),V 以行作为单位(可视行模式)。选择后可以对选中内容进行删除复制等操作;
(7) yy 复制光标所在行, n + yy 复制包括光标所在行及其下方共 n 行, p 从当前光标处向下粘贴, 可以粘贴 x/X , dd , dw 剪切的内容, n + p 粘贴 n 次。P 从当前光标处向上粘贴。
(8) e 光标按单词依次向后移, E 光标移动到行尾, b 光标按单词依次向前移, B 光标移动到行首;
图-1 vi/vim键位图
不必全部掌握,酌情使用适合自己的快捷键即可。
1.2 编辑模式:
(1) i 在当前光标处开始编辑, I 在当前光标所在行第一个符号(该符号不包含空格)处开始编辑;
(2) a 在当前光标下一个字符处开始编辑,A 在当前光标所在行的最后一个字符(该字符包含空格)处开始编辑;
(3) o 在当前光标所在行下方插入一个空行并开始编辑, O 在当前光标所在行上方插入一个空行并开始编辑;
(4) s 删除当前光标所在处的字符并开始编辑, S 删除当前光标所在行所有字符并开始编辑。
1.3 底行模式:
使用底行模式前,先用:(半角冒号)或 / 进入底行模式。
(1)搜索: / 向当前光标之下搜索内容, ? 向光标之上搜索内容,n 下一个, N 上一个(对于 / ,下一个就是下一个,而对于 ? , 下一个是向上一个搜索),搜索后会出现高亮,如果使用完搜索功能后想要去除匹配结果的高亮显示,使用 nohl(no highlight 的缩写);
(2)替换: 1,$s/root/ROOT/g ,使用 % 可以代替 1,$, 表示从首行到尾行进行匹配, g 表示替换每行中匹配到的全部内容,不使用 g 则只替换每行中匹配到的第一个内容,当然,使用 3,5s 则替换第三行到第五行;
(3) 跳转光标::n(这里 n 为数字), 光标跳转到第 n 行;
(4)编辑结束后的操作::q, 不保存退出,修改内容将失效。 :w 保存,保存完成后并不会退出。:wq 保存并退出。 :x 同 :wq 一样为保存退出,两者的区别在于,即便没有做修改, :wq 也会影响三个时间(atime, mtiime, ctime),而 :x 则不影响三个时间。
注:可以在 :w :wq 后面加路径和文件名称,将其直接保存到相应位置的相应文件中,如果文件不存在,则自动创建文件:
:wq/tmp/learn/newfile.log
:w/tmp/learn/newfile.log
2.扩展学习:tee命令 与 查看单词在文本中出现次数
2.1 tee 命令:
tee 命令用于从标准输入中读取内容,之后执行两个操作——写入标准输出(即显示到显示器上)并写入执行文件中,比如现在有如下需求,不使用输入重定向,将 /etc/passwd 中含有 root 的存入 ~/root.log 文件中:
[root@localhost~]# grep root /etc/passwd | tee root.log
等同于
[root@localhost~]# cat /etc/passwd | grep root | tee root.log
注:积累一下 grep 直接作用于文件的这种用法,在对文件全部内容进行匹配时,使用 grep root/etc/passwd 代替管道用法的 cat /etc/passwd | grep root ,更加方便简洁。
注:此时如果在 ~/ 目录下不存在 root.log 文件,则会生成并将匹配结果写入其中,如果在 ~/ 目录下存在 root.log 文件,则会覆盖其中的内容,如果想要在已有文件中追加内容,使用 tee 命令的 –a 参数:
[root@localhost~]# grep root /etc/passwd | tee –o root.log
2.2 查看文本中同一个单词的出现个数:
这里使用查看 /etc/passwd文件中 root 单词出现的个数作为例子,介绍两种方法:
方法一: vim 底行模式
[root@localhost~]# vim /etc/passwd
:%s/root/&/gn
4 matches on 2lines
注:如果不使用 n ,则结果为
4 substitutionson 2 lines
可以看出来使用 n 只匹配而不替换,不使用 n 则匹配完成后就替换。
方法二: grep 命令配合–o 参数
[root@localhost~]# grep –o root /etc/passwd | wc –l //等同于
[root@localhost~]# cat /etc/passwd | grep –o root | wc –l
-o 参数只输出文件中匹配到的内容,其中每一个独占一行,所以可以使用 wc –l 统计行数得知其出现次数。
参考资料:http://www.aminglinux.com/bbs/thread-7643-1-1.html
本文出自 “细桶假狗屎” 博客,请务必保留此出处http://xitongjiagoushi.blog.51cto.com/9975742/1625117
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。