vi的第一版是由Bill Joy在1978年写成的,当时他是UC Berkeley的学生。后来他共同创建了神奇的Sun公司。vi来源于visual一词,目标是在终端上可视化地模拟文本的编辑,是的更人性化。由于使用起来还是不太方便,后来Bram Moolenaar做了改进,成为vim(vi improved),因为得到了很大的提升,所以现在大多数Linux发行版都预装有vim。
为什么要用vim,因为被人们吐槽,诟病一堆,但那都是菜鸟的想法。试想当系统崩溃时,如何编写文件,恢复系统,最后还真只能通过vim来编辑脚本了。对于菜鸟来说,多少懂得点vim的命令,不会是多余的。vi的命令一大堆,要记住还真要反复的联系,实际用到的命令很少,这里罗列出一些常用的vim命令。
vim的文本编辑基本步骤是,启动vim,编辑文本,保存文本,退出vim。下面分别简单的介绍相关的命令。
1、启动vim
想要启动vim,只要简单的输入vi或者vim命令即可,命令如下:
$ vi
或
$ vim
或
$ vim testvim.txt
会输出以下的结果
VIM - Vi Improved
....
2、编辑文本
vim有两种模式,编辑模式和命令模式,vim启动时默认为命令模式,当处于编辑模式时,可以通过Esc按键切换到命令模式,在命令模式下,用户可输入相关的命令完成相应的操作,例如完成光标移动,文件保存和程序退出等操作。
2.1、插入模式
按下”i”按键进入插入模式。之后,我们应该 在屏幕底部看到下面一行,如果 vim运行在高级模式下(这不会出现在 vim 兼容模式下):
-- INSERT --
现在我们能输入一些文本了。试着输入这些文本:
Hello world, I am testing VIM text editor
按下 Esc 按键,退出插入模式并返回命令模式。
2.2、光标移动
vi提供了大量的移动命令,其中一些是与less阅读器共享的,部分命令如下表所示:
按键 | 移动光标 |
---|---|
l or 右箭头 | 向右移动一个字符 |
h or 左箭头 | 向左移动一个字符 |
j or 下箭头 | 向下移动一行 |
k or 上箭头 | 向上移动一行 |
0 (零按键) | 移动到当前行的行首。 |
^ | 移动到当前行的第一个非空字符。 |
$ | 移动到当前行的末尾。 |
w | 移动到下一个单词或标点符号的开头。 |
W | 移动到下一个单词的开头,忽略标点符号。 |
b | 移动到上一个单词或标点符号的开头。 |
B | 移动到上一个单词的开头,忽略标点符号。 |
Ctrl-f or Page Down | 向下翻一页 |
Ctrl-b or Page Up | 向上翻一页 |
numberG | 移动到第 number 行。例如,1G 移动到文件的第一行。 |
G | 移动到文件末尾的行首。 |
2.3、删除文本
删除文本中的内容,不认命令如下:
命令 | 删除的文本 |
---|---|
x | 当前字符 |
3x | 当前字符及其后的两个字符。 |
dd | 当前行。 |
5dd | 当前行及随后的四行文本。 |
dW | 从光标位置开始到下一个单词的开头。 |
d$ | 从光标位置开始到当前行的行尾。 |
d0 | 从光标位置开始到当前行的行首。 |
d^ | 从光标位置开始到文本行的第一个非空字符。 |
dG | 从当前行到文件的末尾。 |
d20G | 从当前行到文件的第20行。 |
2.4、复制,剪切和粘贴
对文本中的内容进行复制,剪切和粘贴等操作,部分命令如下:
命令 | 复制的内容 |
---|---|
yy | 当前行。 |
5yy | 当前行及随后的四行文本。 |
yW | 从当前光标位置到下一个单词的开头。 |
y$ | 从当前光标位置到当前行的末尾。 |
y0 | 从当前光标位置到行首。 |
y^ | 从当前光标位置到文本行的第一个非空字符。 |
yG | 从当前行到文件末尾。 |
y20G | 从当前行到文件的第20行。 |
3、保存文本
切换到命令模式下,通过输入:键,按下冒号键之后,一个冒号:字符应该出现在屏幕的左下角,我们再冒号后面输入w字符(write),如果保存在已知的文件下,就不需要输入文件名了。然后按下回车Enter:
:w
或指定文件名保存
:w testvim.txt
文件将会写入到硬盘,并且我们应该在屏幕底部得到一个确认信息,就像这样:
"testvim.txt" [New] 1L, 42C written
4、退出vim
要退出vim,输入下面的命令(注意冒号:是命令的一部分):
:q
shell 提示符应该返回。如果由于某种原因,vi 不能退出(通常因为我们对文件做了修改,却没有保存文件)。 通过给命令加上叹号,我们可以告诉 vi 我们要强制退出 vi。命令如下:
:q!
参考资料
1、vi简介