vi编辑器是Unix系统最初的编辑器。它使用控制台图形模式来模拟文本编辑窗口,允许查看文件中的行、在文件中移动、插入、编辑和替换文本。尽管它可能是世界上最复杂的编辑器(至少讨厌它的人是这么认为的),但其拥有的大量特性使其成为Unix系统管理员多年来的支柱性工具。在GNU项目将vi编辑器移植到开源世界时,他们决定对其作一些改进。由于它不再是以前Unix中的那个原始的vi编辑器了,开发人员也就将他重命名为vi improved, 或vim。
1、vim基本使用
在终端键入vim命令和要编辑的文件的名字就可以启动vim编辑器(如在启动vim时未指定文件名,或是这个文件不存在,vim会开辟一段新的缓冲区域来编辑)。
vim编辑器有两种操作模式:
普通模式
插入模式
刚启动vim编辑器,默认进入普通模式,在这个模式下,vim编辑器会将按键解释成命令(这也是vim特殊的地方,很多没有使用过vim的人刚开始打开vim时会被这个模式吓倒,毕竟在键盘上按键但一点反应都没有的编辑器实在是少见)。
在普通模式下键入i可进入插入模式(insert。事实上,键入a或者s也可进入插入模式),在插入模式下,vim会将你在光标位置输入的每个键都插入到缓冲区(也就是直接输入到文本中,并在屏幕上打印出来)。要退出插入模式返回普通模式话,就要键入退出键(ESC键,也就是Escape键)。
在普通模式下,若是vim能正确识别你的终端类型(正常情况下应该都可以的),就可以直接使用方向键在文本区域移动光标。
vim也有独有的用来移动光标的命令。
h:左移一个字符
j :下移一个字符
k:上移一个字符
l :右移一个字符
Ctrl+F(PageDown):下翻一屏
Ctrl+B(PageUp):上翻一屏
G:移到缓冲区最后一行
num G:移到缓冲区第num行
gg:移到缓冲区第一行
vim编辑器在普通模式下可按冒号键:进入命令行模式,可以输入额外的命令来控制vim的行为。
q:如果未修改缓冲区数据,退出
q!:取消所有对缓冲区数据的修改并退出
w filename:将文件保存到另一个文件中
wq:将缓冲区数据保存到文件中并退出
2、在普通模式下编辑数据
x:删除当前光标所在位置的字符
dd:删除当前光标所在行
dw:删除当前光标所在位置的单词
d$:删除当前光标所在位置至行尾的内容
J:删除当前光标所在行行尾的换行符(拼接行)
u:撤销前一编辑命令
a:在当前光标后追加数据
A:在当前光标所在行行尾追加数据
r char:用char替换当前光标所在位置的单个字符
R text:用text覆盖当前光标所在位置的数据,直到按下ESC键
有些编辑命令允许使用数字修饰符来指定重复该命令多少次,如:命令2x会删除从光标当前位置开始的两个字符,命令5dd会删除从光标当前所在行开始的5行。
另外,vim编辑器在普通模式下通常会把删除键(Delete键)识别成x命令的功能,通常不识别退格键(Backspace键)。
3、复制和粘贴
vim编辑器在删除数据时,实际上会将数据保存在单独的一个寄存器中,可以用p命令取回。例如,可以用dd命令删除一行文本,然后把光标移动到缓冲区的某个要放置该文本的地方,然后用p命令,该命令会将文本插入到当前光标所在行之后。
vim编辑器中复制命令是y(代表yank),可以在y命令后面使用和d命令相同的第二字符(如:yw代表复制一个单词,y$代表复制到行尾)。在复制文本后,把光标移动到想放置文本的地方,键入p命令,复制的文本就会出现在该位置。
复制命令一般在可视模式下使用。可视模式会在移动光标的同时高亮显示文本,键入v键可进入可视模式,如下图所示。
可先在可视模式下覆盖要复制的文本,然后键入y命令来激活复制命令,之后移动光标到要放置文本的位置,使用p命令将寄存器中的文本粘贴下来。