学习是一种信仰。
分类: 其他UNIX
2009-08-14 16:42:42
vi命令之多相信大家都知道,差不多每个键盘按键都是vi的命令,再加上一些组合那就多了去了,本文是对自己工作中使用vi命令的一个总结。因为有很多命令的效果有多种方法实现,采用哪种方法在于自己的习惯,不必苛求到底哪种方法更好。
上下左右移动等的简单命令就省了。
开始 (open)
o 在光标所在行下方新增一行并进入输入模式。
O 在光标所在行上方新增一行并进入输入模式。
新增 (append)
a 从光标所在位置后面开始新增资料。
A 从光标所在行最后面的地方开始新增资料。
插入 (insert)
i 从光标所在位置前面开始插入资料。
I 从光标所在行的第一个非空字符前面开始插入资料。
删除(delete)
【删除的资料将会复制到缓冲区,用p(put)可以将缓冲区当前保存的内容放置于光标之后】
x 删除光标所在字符。
dd 删除光标所在的行。
ndd 删除n行(=dnd)。
dw 从光标处开始,删除一个单词。
dnw 从光标处开始,删除n个单词(=ndw)。
D 删除光标至行尾的所有字符。
dG 删除光标所在行至文件结尾所有行。
ma,d’a 删除从敲ma到敲d’a的行。
替换(replace),修改(change)
r 修改光标所在字符,r 后接著输入修正的字符。
cw 修改一个单词,cw后输入要修改的单词。
cc 修改整行(我常用ddO代替)。
复制(yank),粘贴(paste)
yy 复制光标所在行。
nyy 从光标行开始,复制n行。
ma,y’a 复制从敲ma到敲y’a的行至寄存器a。
p 在光标所在行下面开始粘贴所复制的行。
撤销(undo)
u 撤销所做修改,且光标回到所作修改处。
. 重复上一个操作。
% 查找当前括号的匹配括号。
0 跳到光标所在行的开头。
$ 跳到光标所在行的结尾。
G 跳到文件最后一行。
:1 跳到文件第一行。
:n 跳到文件第n行(=nG)。
/string 从光标所在处开始往后搜索string,最后一行的前一行是第一行。
?string 从光标所在处开始往前搜索string,第一行的前一行是最后一行。
n 从光标所在处开始往后继续上次搜索。
N 从光标所在处开始往前继续上次搜索。
J 合并光标所在行和下一行。
Ctrl+f 向下翻页。
Ctrl+b 向上翻页。
Ctrl+g 显示文件名,光标所在行号,光标所在行号占总行号的百分比。
: 进入ex模式。
:w 保存。
:wq 保存并退出(=:x)。
:q! 不保存退出。
:r test 从光标下一行开始插入test文件。
:nr test 从第n行后开始插入test文件。
:e 重新编辑文件(若做了修改,系统会提示保存)。
:e!重新编辑文件,放弃任何改变(查看已改变日志文件可用)。
:set nu 显示每行的行号。
:set nonu 取消显示每行的行号。
:10,20d 删除文件第10行至第20行。
:10,20co30 将第10行至第20行复制至第30行之后。
:10,20mo30 将第10行至第20行移动至第30行之后。
:10,20w test 将文件第10行至第20行写入test文件。
:10,20w>>test 将文件第10行至第20行追加在test文件之后。
:!conmand 运行command命令,然后返回。
:sh 进入shell环境,exit返回。
:%s/old_string/new_string/g 在整个文件内替换字符串。
替换字符串的完整命令如下::[范围]s/old_string/new_string/[cgi],
[范围]:任意的行范围,包括行号,$(文件末尾),.(当前行),%(当前文件),或者两个行号之间加个破折号(或者可以这样: .,+5,这表示下面5行)。
[cgi] : g是说对所有一行中出现的地方都做替换;c告诉vi每次替换的时候要给提示;i则是指在查找时不区分大小写。
vi file1 file2 … vi多个文件。
一个文件编辑完之后,:w存档;:n载入下一个文件;:rew重新回到第一个编辑的文件;:e#可以在两个文件之间切换(=Ctrl+Shift+6);:e filename转到编辑filename文件。