一、vi的工作模式
命令模式(ESC键)
插入模式(i、a、o键)
编辑模式(:键)
二、插入命令
a 在光标后附加文本
A 在本行行末附加文本
i 在光标前插入文本
I 在本行开始插入文本
o 在光标下插入新行
O 在光标上插入新行
三、定位命令
h方向左键,同←
j 方向下键,同↓
k 方向上键,同↑
l 方向右键,同→
$ 移至行尾
0(零) 移至行首
H 移至屏幕上端
M 移至屏幕中央
L 移至屏幕下端
刚开始还莫名其妙,命名键盘已经有上下左右了,为什么还要hjkl键,后来才觉得,这样做方便命令的编写
四、删除命令
x 删除光标所在处字符
nx 删除光标所在处后n个字符
dd 删除光标所在行,ndd删除n行
dG 删除光标所在行到行尾的内容
D 删除从光标所在处到行尾
:n1,n2d 删除指定范围的行
五、复制和剪切命令
yy、Y 复制当前行
nyy、nY 复制当前行以下n行
dd 剪切当前行
ndd 剪切当前行以下n行
p、P 粘贴在当前光标所在行下或行上
实际上dd就是将当前行删掉,同时保存在类似剪贴板那里,如果你不复制到别的地方就相当于删除了这一行
五、替换和取消命令
r 取代光标所在处字符,不进入编辑模式,在命令模式下按r再按另外一个字符,即可替换光标所在处字符
R 从光标所在处开始替换字符,按Esc结束
u 取消上一步操作(undo)
六、搜索和替换命令
/string 在命令行下按/和你要查找的字符串如:/baitouhe ,如果存在baitouhe将会高亮显示
n 当你找到很多个baitouhe字符串时,可以按n跳到下一个baitouhe出现的位置
:%s/old/new/g 该命令是将整个文件个old字符替换为new,如:%s/baitouhe/baitouhe.com/g 将会把文件中所有的baitouhe替换为baitouhe.com
:%n1,n2s/old/new/g 和上面类似,只是添加了n1,n2限定替换范围是在n1行到n2行中间(注意不要漏了后面加s)
七、保存和退出命令
:w 保存修改(write)
:w 文件名 保存在指定文件(另存为)
:wq 保存修改并退出(write and quit)
ZZ 快捷键,保存修改并退出(注意没有加:)
:q! 不保存修改退出(!表示强制执行)
:wq! 与wq相比,该命令可以强制修改只读文件!
八、其它技巧
1、导入命令执行结果::r !命令
它可以实现将命令的执行结果写入到当前vi 所编辑的文件光标所在位置的下一行
如:r !ls /etc/sysconfig
2、自定义快捷键:map 快捷键 命令
如:map ^p i(baitouhe’s blog http://www.baitouhe.com) 即定义了快捷键ctrl + p,当按下ctrl + p时进入插入模式(i),插入字符(baitouhe’s blog http://www.baitouhe.com),最后再回到命令行模式
提示:^p 中^不是shift+6再按p,而是ctrl + v + p,你会发现p 会变成蓝色大写的,也可以按死ctrl + v,放开v再按p
3、连续行注释
:n1,n2s/^/#/g ,^表示行首,该命令表示在n1到n2行行首添加字符#
:n1,n2s/^#//g , 该命令表示将n1-n2行首#字符替换为空字符(去注释)
:n1,n2s/^////g , 该命令表示在n1-n2行首添加字符//,因为系统无法直接识别//,所以要通过转义字符 / / 来表示//
4、替换定义:ab 原来的字符 替换后的字符
如:ab myblog http://www.baitouhe.com定义了myblog 即为http://www.baitouhe.com,在vi里面输入myblog按回车或者空格,会自动替换为http://www.baitouhe.com.
取消替换直接:unab myblog即可
5、Vim默认设置
前面所学的定义快捷键、替换只是对当前编辑有效,关掉此文件时,所有的设置都将会失效,如果要修改默认的配置,则可以编辑文件~/.vimrc,直接里面写入命令,在vim打开时会自动执行。
九、总结
Vi功能很强大,非常适合在文字中断下使用,因为当你熟练掌握它的操作时,键盘是你唯一的操作工具,全屏幕显示,完全摆脱鼠标,可以很快速地操作。不过强大的东西往往不是容易掌握的,很多按键、命令都需要多使用才会记得牢。上面的仅仅是vi的基本操作,深入学习还得买本著作。