Vim 简易使用教程
很早以前就在用 vim,不过水平很菜,就会最基本的操作。而且经常犹豫是不是要投奔Emacs阵营呢,毕竟在传说中,Emacs强大无比,可以秒杀一切。但是Emacs似乎学起来难度更大,最后还是决定投身vim吧。
一次无意中找到了Steve Oualline 写的 VI iMproved 一书,看过之后我才真的觉得自己算是入门了。我的这一系列博客其实就是我学习 VI iMproved 一书的学习笔记,希望对各位准备学习VIM的同学有些帮助。(vim和Emacs似乎有些相克,学会了一个就很难再学另一个了,因此,如果决定了学习vim就不要念想着Emacs了)
比起其他的文本编辑器,VIM的学习曲线陡峭的多。我尽量每篇博客只介绍一个小的主题,让大家容易消化学习。(这一系列博客准备写81篇,寓意学习vim只有经过81难才能修成正果。不知道能不能坚持写完啊。)
------------------------------------华丽分割线------------------------------------
Vi 是Unix世界里极为普遍的全屏幕文本编辑器,VIM是它的改进版本Vi IMproved的简称,和Emacs并列成为类Unix系统用户最喜欢的编辑器。几乎可以说任何一台Unix机器都会提供这套软件。由于Vim具有代码补完、编译及错误跳转等方便编程的功能,在程序员中被广泛使用。
VIM 简史
vi是Bill Joy所写,当时他还在Berkeley。Ken Thompson去Berkeley的时候带去了他那不完整的Pascal系统,而Bill Joy恰好在暑假就接到修复它的工作,他对修复代码时使用的编辑器ed很不满意。正好,他们从一个叫George Coulouris的家伙那里拿到了em的代码,em比ed要好用。他们就修改了em,发明了en,而最终又变成了ex(连Bill Joy本人也不知道怎么就变成了ex)。后来他熬了几个月的夜写出了vi。
Bram Moolenaar 在 80 年代末购入他的 Amiga计算机时,Amiga 上还没有他最常用的编辑器vi。Bram 从一个开源的 vi 复制 Stevie 开始,开发了 Vim 的 1.0 版本。最初的目标只是完全复制 vi 的功能,那个时候的 Vim 是Vi IMitation(模拟)的简称。1992 年 1.22 版本的 Vim 被移植到了 UNIX 和 MS-DOS上。从那个时候开始,Vim 的全名就变成 Vi IMproved(改良)了。在这之后,Vim 加入了不计其数的新功能,包括多视窗编辑模式(分割视窗)、 highlight(语法高亮)功能、代码折叠、插件、多国语言支持、拼字检查、上下文相关补完,标签页编辑等新功能。
第一课 最基本的操作
从命令行模式运行gvim:gvim
命令行模式打开一个文件:gvim file.txt
如果 file.txt 不存在,则新建一个空文件。
图 1 新建一个空文件 file.txt
图 1 中可以看到每行前都有个波浪号(~),这表示这行不在文件中。因为是空文件,当然一行数据都没有。
VIM 的工作模式
不同于一般的文本编辑器,VIM存在3种工作模式,分别是命令模式,插入模式和 VISUAL 模式。刚打开vim 时处于命令模式,按一下键盘i 则进入插入模式。注意这时的窗口左下角原本显示文件名的地方现在显示“-- INSERT --”。在插入模式下我们可以像普通的编辑器那样输入文本,进行编辑。当我们想退回命令模式时按<Esc>键。
移动光标
在命令模式下移动光标可以用键盘上的箭头键。但是最快捷的方式是下面四个键:
左:h
右:l
上:k
下:j
由于移动光标是最常做的操作,因此给它们分配在右手最方便按到的四个键。
删除字符和一行
删除当前光标所在的字符:x 键
删除一行:dd
撤销和恢复
撤销最近的一次操作:u
恢复最近的一次撤销操作:Ctrl-R
退出
保存当前文件并退出:ZZ (注意是两次大写的Z)
退出但不保存: :q! (冒号 q 然后是感叹号,三个字符)
如果你只是看了看文件没做任何修改,可以省去上面命令最后的感叹号(!)
其他几个最基本的编辑命令
在当前行的末尾插入字符(进入到插入模式,并把光标挪到当前行的行尾): a 键 (append)
在光标的下一行插入一个空行,并把光标挪到下一行:o 键 (open)
获取帮助信息
:help
:help subject
比如想看看x命令的帮助: :help x
看看CTRL-A 名利的帮助::help CTRL-A
有时,同一个快捷键在不同模式时代表不同的命令,vim 默认认为查询的是命令模式下的那个命令。可以加上前缀来区分不同的模式。i_ 表示插入模式。v_ 表示VISUAL模式。: 表示ex模式。比如下面的例子:
:help i_CTRL-H
:help :quit
重复执行一个命令多次
可以在命令前加上个数字,比如我要在当前位置插入10个a。
10ia<Esc>
最后的<Esc>是为了退回命令模式。如果执行的命令不会让vim从命令模式进入到其他模式可以不加最后的<Esc>。比如将光标左移3个字符:
3h
OK,知道上面这些就可以进行最基本的操作了。练熟这些再开始第二课。