一、简介
Vi
命令可以说是
Unix/Linux
世界里最常用的编辑文件的命令了,很多人不喜欢
VI
因为它
的众多的命令集,但是我们只需要掌握基本的命令然后灵活地加以运用,相信你会象我一样喜欢它的。
本文旨在更有条理有归纳性地介绍
VI
的一些最常用命令和一些高级的应用。
二、基本命令介绍
1)
光标命令
k,j,h,l——
上下左右光标移动命令,虽然你可以在
Linux
中使用键盘右边的四个光标键,
但是记住这四个命令还有非常有用的,也就是右手在键盘上放置的位置部分
nG ——n
为行数,该命令立即使光标跳到指定行。
Ctrl+G——
光标所在位置的行数和列数报告
w,b——
使光标向前或向后跳过一个单词
2)
编辑命令
i,a,r——
在光标的前
,
后
,
上方插入字符命令
(i=insert,a=append,r=replace)
cw,dw——
改变
(
置换
)/
删除光标所在处的单词的命令
(c=change,d=delete)
x,d$,dd——
删除一个字符,光标所在处到行尾的所有字符,和整行的命令
3)
查找命令
/string, ?string——
从光标所在处向后
/
向前查找相应的字符串的命令
4)
拷贝复制命令
yy,p ——
拷贝一行到剪贴板
/
取出剪贴板中内容的命令
三、常见问题及应用技巧
1)
在一个新文件中读
/etc/passwd
中的内容,取出用户名部分
vi file
:r /etc/passwd
在打开的文件
file
中光标所在处读入
/etc/passwd
:%s/:.*//g
删除
/etc/passwd
中用户名后面的从冒号开始直到行尾的所有部分
:3r /etc/passwd
这是在指定的行号后面读入文件内容
另外一种方法删掉文件中所有的空行及以
#
开始的注释行
#cat squid.conf.default | grep -v '^$' | grep -v '^#'
2)
在打开一个文件编辑后才知道登录的用户对该文件没有写权,不能存盘
vi file
:w /tmp/1
既然没法存盘,不想放弃所做的所有修改,先临时存到
/tmp/1
:20,59w /tmp/1
或者仅仅把第
20
到
59
行之间的内容存盘成文件
/tmp/1
3)
用
VI
编辑一个文件,但需要删除大段大段的内容
vi file
Ctrl+G
把光标移到需要删除的行的处按
ctrl+G
显示行号,再到结尾处再按
Ctrl+G.
:23,1045d
假定两次行号为
23
和
1045
,则把这几间的内容全删除
也可以在开始和结束两行中用
ma,mb
命令标记后用
:'a,'bd
删除
.
4)
在整个文件或某几行中在行首或行尾加一些字符串
vi file
:3,$s/^/some string /
在文件的第一行至最后一行的行首前插入
some string
:%s/$/ some string/g
在整个文件每一行的行尾添加
some string
:%s/string1/string2/g
在整个文件中替换
string1
成
string2
:3,7s/string1/string2/
仅替换文件中的第三到七行中的
string1
成
string2
Note: s
为
substitute,%
表示所有行
,g
表示
global
5)
同时编辑两个文件
,
在两个文件中拷贝剪贴文本
vi file1 file2
yy
同时打开两个文件
,
在文件
1
的光标所在处拷贝所在行
:n
切换到文件
2 (n=next)
p
在文件
2
的光标所在处粘贴所拷贝的行
:N
切换回文件
1
6)
替换文件中的路径
:%s#/usr/bin#/bin#g
把文件中所有路径
/usr/bin
换成
/bin
或者用
:%s/\/usr\/bin/\/bin/g
在
'/'
前用
\
符号指出
'/'
是真的单个字符
'/'