VI常用命令

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

************************************************* vi常用命令
*************************************************
+++++++++++++++++++++++++++++++++++++++++++++++++ view模式
信息查看
:set nu 显示行号
:set nonu 隐藏行号
ctrl+g 查看光标位置
光标移动(前面加上数字可以控制移动间隔)
j 向下移动
k 向上移动
l 向后移动
h 向前移动
$ 移动到行尾
^ 移动到行首
单词移动(前面加上数字可以控制移动间隔)
w 向后移动一个单词
b 向前移动一个单词
行移动
nG 移动到第n行
G 移动到最后
页移动
ctrl+f 向下翻页(front)
ctrl+b 向上翻页(back)
+++++++++++++++++++++++++++++++++++++++++++++++++
编辑模式
插入
i 光标前插入(insert)
a 光标后插入(append)
r 光标上方插入(replace)
s 删除插入(substitute)
删除(第一个字母d表示delete,第二个字母表示操作对象)x 删除一个字符
dw 删除一个单词
d$ 删除光标到行尾的所有字符
dd 删除整行(中间加数字指示向后删除多少行)
复制(第一个字母y表示yank,第二个字母表示操作对象)yw 复制单词(中间加数字指示向后复制多少个单词)
yy 复制整行(中间加数字指示向后复制多少行)
粘贴
p 粘贴在光标下行
P 粘贴在光标上行
历史操作
u undo
ctrl+r redo
+++++++++++++++++++++++++++++++++++++++++++++++++
命令模式
/word 向前搜索word
?word 向后搜索word
:1,$s/word1/word2/g 从第一行到最后一行进行替换
:n1,n2s/word1/word2/g 从n1行到n2行进行替换
:n1,n2s/word1/word2/gc 从n1行到n2行进行逐个替换
:w 保存
:w! 强制保存
:q 退出
:q! 强制退出
:wq 保存退出
:w filename 另存为
其他
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 在'/'前用\符号指出'/'是真的单个字符'/'
7) 用vi 多行注释
如果要给多行程序作注释,一个笨办法就是插入# ,然后用j 跳到下一行用. 命令,重复上个命令。

如果要注释几百行,这样的方法恐怕太愚蠢了。

一个聪明的办法是::.,+499 s/^/#/g
若需全文的行首插入可用以下命令
:%s/^/#/g。

相关文档
最新文档