导读
Vim 是一个类似于 Vi 的高度可定制的文本编辑器,在 Vi 的基础上改进和增加了很多特性。Vim 是自由软件。Vim 普遍被推崇为类 Vi 编辑器中最好的一个,事实上真正的劲敌来自 Emacs 的不同变体。1999 年 Emacs 被选为 Linux world文本编辑分类的优胜者,Vim 屈居第二。但在 2000 年 2 月 Vim 赢得了 Slashdot Beanie 的最佳开放源代码文本编辑器大奖,又将 Emacs 推至二线。

Vim 是 Linux 等类 Unix 系统上常用的文本编辑器,因其能在终端运行与轻量化的特性,在加上大部分系统都自带了该文本编辑器,因此经常用在远程服务器的数据修改上。Vim 拥有许多的支持者,许多编辑器(例如:VS Code)都内置了 Vim 模式来迎合 Vim 用户。
下载与安装
Linux
Ubuntu
$ sudo apt install vim-gtkCentos
$ yum -y install vim*Windows
虽然没有什么人在 Windows 上使用 Windows,但是还是加上说明吧。
首先打开 Vim 的官网 welcome home : vim online,找到 Download 页面,在 MS-Windows 标题栏下找到 gvim_9.1.0_x64_signed.exe(下载不了请看 Github 加速) 点击并下载,然后双击安装。
接下来在终端内输入 vim 命令即可启动 Vim 并使用。
基础教程
导读
在安装 Vim 之后,很多人在进入 Vim 的编辑界面的时候可能会不知所措,疑问:这怎么随意点击几个键窗口就乱变啊?因此,我们需要在使用 Vim 之前学习 Vim 的基础操作。
首先,我们来看一下 Vim 的键盘图,大概预览一下 Vim 的大致操作方式。

模式
Vim 一般分为三个模式,分别为命令模式(Command Mode)、输入模式(Insert Mode)以及命令行模式(Command-Line Mode)。
命令模式
所有模式里面的老大哥,刚启动 Vim 的时候就是进入的命令模式。此时千万不要随意敲击键盘,因为基本上所有字母都能是命令。
- i:切换到输入模式,在光标当前位置;
- x:删除当前光标所在字符;
- a:切换输入模式,在光标下一个位置;
- o:插入新行并进入输入模式;
- O:在上方插入新行并进入输入模式;
- dd:剪切当前行;
- yy:复制当前行;
- p:粘贴剪贴板内容到光标下方;
- P:粘贴剪贴板内容到光标上方;
- u:撤销;
- Ctrl + r:重做;
- : 进入命令行模式。
输入模式
在输入模式中,你终于可以流畅地打代码了。是的,在输入模式中基本上键盘所有键位已经解禁,你可以像普通文本编辑器那样使用 Vim。除了——Esc 键,它将会切换到命令模式。
还有一种特殊的输入模式叫做「替换模式」,可以键入 Insert 启用。在替换模式当中,键入的字符会替换当前字符,可以使用 Esc 退回输入模式。
命令行模式
进入命令行模式时,光标会移动至左下角,可以冒号后方输入命令。最常用的命令:
- :w 保存当前文件;
- :q 退出当前编辑器;
- :wq 保存并退出当前编辑器;
- :q! 强制退出当前编辑器。
在输入时,可以键入 Esc 退回命令模式。命令行模式也可以运行 Vim 脚本(VimScript),可以对编辑器的主题、字体进行设置。但是,这些设置大多都是需要再 Vim 时自动运行的。有关 VimScript 的配置,可以查看 基础教程。
基础配置
导读
在 下载与安装 Vim 之后,Vim 可能并不像大多数文本编辑器那样开箱即用,至少在美化/易用性方面不如其他文本编辑器,因此我们要对 Vim 进行配置。
方式
首先我们需要知道,配置 Vim 的方式有两种,分别是:命令行修改(关于命令行模式的说明可以查看 基础教程)与 vimrc 修改。
命令行修改就是在 vim 打开一个文件的时候通过命令临时修改 Vim 的配置,缺点就是再关闭 Vim 后第二次启动将恢复原来的配置;修改 Vim 的 vimrc 文件就解决了这个问题,该脚本会在每次 Vim 启动的时候自动运行。
vimrc 的全局配置一般在 /etc/vimrc,对该电脑的任何用户都生效;对用户的配置在 ~/.vimrc,只对当前用户生效。不建议使用 Vim 编辑 Vim 配置文件,可以使用其它编辑器,如 nano。
语句
以下为在使用 Vim 时需要的常用配置语句:
syntax on "打开语法高亮"
set showmode "显示当前模式"
set showcmd "显示输入的指令"
set mouse=a "支持鼠标操作"
set encoding=utf-8 "使用 UTF-8 编码"
set t_Co=256 "开启 256 色"
set autoindent "启用自动缩进"
set tabstop=2 "Tab 显示的空格数量"
set shiftwidth=4 "缩进的空格数"
set expandtab "Tab 转空格"
set softtabstop=2 "Tab 转空格的数量"
set number "开启行号"