一:引言
系统管理员的重要工作就是修改与设置某些软件的重要配置文件,而vim作为vi编辑器的升级版本,不仅能够以不同颜色来显示文字内容,还能够进行诸如shell脚本、C等程序的编写,所以,它还是一个程序编辑器,接下来,就让我们一起来看看vim的有哪些好玩的用法和特征。
二:vim三种模式及其常见用法
虽然vim有非常庞大甚至说它复杂也不为过的功能体系,但用结构图的方式把它表现出来,就一目了然了,那么接下来就让我们庖丁解牛,来更加详细的了解vim命令的基本用法及其vim三种模式都有哪些重要功能。
※vim
options:
-m filename 只读打开文件(注意:当以只读方式打开文件时,只有root与文件所属者能够强制修改保存并退出)
-b filename 打开二进制文件
-o file1 file2 同时打开多个文件
-d file1 file2 比较多个文件,结果会高亮显示出不同内容所在的行及字符,效果如下:
※ 命令模式(默认模式)下的常见用法
当处于命令模式下时,常见的用法大致有以下几种:
- 文本编辑(删除d、复制y、粘贴p、修改c、撤销与反撤销)
- 切换至visual模式,进行批量操作
- 翻屏和行间跳转
用法一:文本编辑:
1.删除(d):
用法二:visual模式:
ctrl+v 面向块
优点:能够自由的选择多个字符或行来对文本内容进行批量的复制、粘贴、删除等操作。
用法三:翻屏和行间跳转:
gg:首行
H:跳到当前页的首行
※拓展命令模式常见用法
用法一:查找和替换
1.查找:
从当前光标处向尾行查找 :/要查找的内容
从当前光标处向首行查找 :?要查找的内容
2.单个字符替换:r
替换任意多个字符:R (进入替换模式)
3.查找并替换(重点)
①格式: :内容定界符s/要查找的内容/要替换为的内容/修饰符
②分隔符: 除常用的 “/” 以外,还有@与#。
相关例题:复制/etc/rc.d/init.d/functions文件至/tmp目录,替换/tmp/functions文件中的/etc/sysconfig/init为/var/log
正解: :%s@/etc/sysconfig/init@/var/log@gi
看到这里,相比大家已经知道@与#存在的意义了吧,那就是当替换内容中含有如 / 这些特殊字符时,为了简化操作,减少转译,我们常用@或#来代替/分隔符。
③内容定界符:
:% 全文查找
:m 查找m行
:m,n m-n行
:$ 只在最后一行中查找(注意啦爱举一反三的小伙伴,并不存在^表示在首行中查找)
④要查找的内容:支持基本的正则表达式
⑤要替换为的内容:不支持正则表达式,但支持 后向引用 与 &
注意:&表示引用之前模式匹配的整体,并不同于后向引用。
相关例题:删除/tmp/functions文件中所有以#开头,且#后面至少有一个空白字符的行的行首的#号
正解: :%s/^#\([[:space:]]\+\)/\1/gc
错解: :%s/^#\([[:space:]]\+\)/$/gc
错误原因:\1才代表\([[:space:]]\+\)这个整体,而$代表引用^#\([[:space:]]\+\)这个整体,所以此时#与其后的空格并没有被替换
⑥修饰符:
g 全局替换(默认不加g时,只替换每行第一次出现)
i 忽略字母的大小写
c 每次替换前询问
查找替换相关例题:
1.复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的行首的空白字符
正解: :%s/^[[:blank:]]\+//g
2.复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首添加一个#号
正解: :%s/^[[:space:]]\+/#&/g 其中&匹配^[[:space:]]\+
用法二:多文件模式
用法三:定义窗口属性
:set sm/nosm 括号匹配
:set tabstop=num 设置tab键为num个字符
:set hlsearch/nohlsearch 搜索高亮显示(也可通过/kugkufguewgfuew搜索任意字符来取消高亮)
相关例题:在vim中设置tab缩进为4个字符
编辑配置文件/root/etc/vimrc—->插入一行 set tabstop=4
原创文章,作者:yunyunyu,如若转载,请注明出处:http://www.178linux.com/83767