Vim 简易教程 (1)

来源:互联网 发布:工程造价大数据网 编辑:程序博客网 时间:2024/05/08 05:56

我很早以前就在用 vim,不过水平很菜,就会最基本的操作。而且经常犹豫是不是要投奔Emacs阵营呢,毕竟在传说中,Emacs强大无比,可以秒杀一切。但是Emacs似乎学起来难度更大,最后还是决定投身vim吧。

一次无意中找到了Steve Oualline 写的 VI iMproved 一书,看过之后我才真的觉得自己算是入门了。我的这一系列博客其实就是我学习 VI iMproved 一书的学习笔记,希望对各位准备学习VIM的同学有些帮助。(vimEmacs似乎有些相克,学会了一个就很难再学另一个了,因此,如果决定了学习vim就不要念想着Emacs了)

比起其他的文本编辑器,VIM的学习曲线陡峭的多。我尽量每篇博客只介绍一个小的主题,让大家容易消化学习。(这一系列博客准备写81篇,寓意学习vim只有经过81难才能修成正果。不知道能不能坚持写完啊。)

Vi Unix世界里极为普遍的全屏幕文本编辑器,VIM是它的改进版本Vi IMproved的简称,和Emacs并列成为类Unix系统用户最喜欢的编辑器。几乎可以说任何一台Unix机器都会提供这套软件。由于Vim具有代码补完、编译及错误跳转等方便编程的功能,在程序员中被广泛使用。 

VIM 简史

viBill Joy所写,当时他还在BerkeleyKen ThompsonBerkeley的时候带去了他那不完整的Pascal系统,而Bill Joy恰好在暑假就接到修复它的工作,他对修复代码时使用的编辑器ed很不满意。正好,他们从一个叫George Coulouris的家伙那里拿到了em的代码,emed要好用。他们就修改了em,发明了en,而最终又变成了ex(连Bill Joy本人也不知道怎么就变成了ex)。后来他熬了几个月的夜写出了vi

Bram Moolenaar 在 80 年代末购入他的 Amiga计算机时,Amiga 上还没有他最常用的编辑器viBram 从一个开源的 vi 复制 Stevie 开始,开发了 Vim 的 1.0 版本。最初的目标只是完全复制 vi 的功能,那个时候的 Vim Vi IMitation(模拟)的简称。1992 年 1.22 版本的 Vim 被移植到了 UNIX 和 MS-DOS上。从那个时候开始,Vim 的全名就变成 Vi IMproved(改良)了。在这之后,Vim 加入了不计其数的新功能,包括多视窗编辑模式(分割视窗)、 highlight(语法高亮)功能、代码折叠、插件、多国语言支持、拼字检查、上下文相关补完,标签页编辑等新功能。 

第一课 最基本的操作

从命令行模式运行gvimgvim

命令行模式打开一个文件:gvim file.txt

如果 file.txt 不存在,则新建一个空文件。


图 1 新建一个空文件 file.txt

图 1 中可以看到每行前都有个波浪号(~),这表示这行不在文件中。因为是空文件,当然一行数据都没有。

VIM 的工作模式

不同于一般的文本编辑器,VIM存在3种工作模式,分别是命令模式,插入模式和 VISUAL 模式。刚打开vim 时处于命令模式,按一下键盘i 则进入插入模式。注意这时的窗口左下角原本显示文件名的地方现在显示“-- INSERT --”。在插入模式下我们可以像普通的编辑器那样输入文本,进行编辑。当我们想退回命令模式时按<Esc>键。

移动光标

在命令模式下移动光标可以用键盘上的箭头键。但是最快捷的方式是下面四个键:

左:h

右:l

上:k

下:j

由于移动光标是最常做的操作,因此给它们分配在右手最方便按到的四个键。

删除字符和一行

删除当前光标所在的字符:

删除一行:dd

撤销和恢复

撤销最近的一次操作:u

恢复最近的一次撤销操作:Ctrl-R

退出

保存当前文件并退出:ZZ (注意是两次大写的Z

退出但不保存: :q!  (冒号 然后是感叹号,三个字符)

如果你只是看了看文件没做任何修改,可以省去上面命令最后的感叹号(!)

其他几个最基本的编辑命令

在当前行的末尾插入字符(进入到插入模式,并把光标挪到当前行的行尾): 键 (append

在光标的下一行插入一个空行,并把光标挪到下一行:键 (open)

获取帮助信息

:help

:help subject

比如想看看x命令的帮助: :help x

看看CTRL-A 名利的帮助::help CTRL-A

有时,同一个快捷键在不同模式时代表不同的命令,vim 默认认为查询的是命令模式下的那个命令。可以加上前缀来区分不同的模式。i_ 表示插入模式。v_ 表示VISUAL模式。表示ex模式。比如下面的例子:

:help i_CTRL-H

:help :quit

重复执行一个命令多次

可以在命令前加上个数字,比如我要在当前位置插入10a

10ia<Esc>

最后的<Esc>是为了退回命令模式。如果执行的命令不会让vim从命令模式进入到其他模式可以不加最后的<Esc>。比如将光标左移3个字符:

3h

OK,知道上面这些就可以进行最基本的操作了。练熟这些再开始第二课。