学习笔记(八)——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 技术分享

图-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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。