编者按:标题和文章最初指的是 “vi 编辑器”。现已更新为编辑器的正确名称:“vim”。
Vim 是一款多功能且强大的编辑器,包含丰富的强大命令,使其成为许多用户的热门选择。本文专门介绍 Vim 中默认未启用但仍然有用的命令。此处推荐的命令预计将在 Vim 配置文件中设置。虽然可以从每个 Vim 会话单独启用命令,但本文的目的是创建一个开箱即用的高效生产力环境。
开始之前
此处讨论的命令或配置会放入用户主目录中的 Vim 启动配置文件 vimrc 中。按照以下说明在 vimrc 中设置命令
(注意:vimrc 文件也用于 Linux 中的系统范围配置,例如 /etc/vimrc
或 /etc/vim/vimrc
。在本文中,我们只考虑用户特定的 vimrc,它位于用户主文件夹中。)
在 Linux 中
- 使用
vi $HOME/.vimrc
打开文件 - 在本文末尾的速查表中键入或复制/粘贴命令
- 保存并关闭 (
:wq
)
在 Windows 中
- 首先,安装 gvim
- 打开 gvim
- 点击 编辑 --> 启动设置,这将打开 _vimrc 文件
- 在本文末尾的速查表中键入或复制/粘贴命令
- 点击 文件 --> 保存
让我们深入研究各个 vi 生产力命令。这些命令分为以下几类
- 缩进和制表符
- 显示和格式
- 搜索
- 浏览和滚动
- 拼写检查
- 杂项
1. 缩进和制表符
自动对齐文件中行的缩进
set autoindent
智能缩进使用代码语法和风格进行对齐
set smartindent
提示:Vim 具有语言感知能力,并提供基于文件中使用的编程语言的默认设置,从而高效工作。有许多默认配置命令,包括 axs cindent
、cinoptions
、indentexpr
等,此处不再赘述。syn
是一个有用的命令,用于显示或设置文件语法。
设置制表符显示的空格数
set tabstop=4
设置“移位操作”(例如 ‘>>’ 或 ‘<<’)显示的空格数
set shiftwidth=4
如果你更喜欢使用空格而不是制表符,则在按下 Tab 键时,此选项会插入空格。这可能会给依赖制表符而不是空格的语言(如 Python)带来问题。在这种情况下,你可以根据文件类型设置此选项(参见 autocmd
)。
set expandtab
2. 显示和格式
显示行号
set number

当文本超出最大行宽时换行
set textwidth=80
基于右侧列数换行文本
set wrapmargin=2
在文件中遍历时,识别打开和关闭的大括号位置
set showmatch

3. 搜索
高亮显示文件中搜索到的术语
set hlsearch

在你键入时执行增量搜索
set incsearch

忽略大小写搜索(许多用户不喜欢使用此命令;仅在你认为它有用时设置)
set ignorecase
当 ignorecase
和 smartcase
都设置,且搜索模式包含大写字母时,搜索时不考虑 ignorecase
set smartcase
例如,如果文件包含
test
Test
当 ignorecase
和 smartcase
都设置时,搜索 “test” 会查找并高亮显示两者
test
Test
搜索 “Test” 只高亮显示或查找第二行
test
Test
4. 浏览和滚动
为了更好的视觉体验,你可能更喜欢将光标放在中间位置而不是第一行。以下选项将光标位置设置为第 5 行。
set scrolloff=5
示例
第一张图是 scrolloff=0,第二张图是 scrolloff=5。

提示:如果你也设置了 nowrap
,则 set sidescrolloff
非常有用。
在 Vim 屏幕底部显示永久状态栏,显示文件名、行号、列号等。
set laststatus=2

5. 拼写检查
Vim 有一个内置的拼写检查器,对于文本编辑和编码都非常有用。Vim 会识别文件类型,并且只检查代码中注释的拼写。使用以下命令为英语启用拼写检查
set spell spelllang=en_us
6. 杂项
禁用创建备份文件:当此选项开启时,Vim 会创建上一次编辑的备份。如果你不需要此功能,请如下所示禁用它。备份文件以波浪号 (~) 结尾命名。
set nobackup
禁用创建交换文件:当此选项开启时,Vim 会创建一个交换文件,该文件在你开始编辑文件之前一直存在。交换文件用于在发生崩溃或使用冲突时恢复文件。交换文件是隐藏文件,以 .
开头,以 .swp
结尾。
set noswapfile
假设你需要在同一个 Vim 会话中编辑多个文件并在它们之间切换。一个不太明显的烦人功能是,工作目录是你打开第一个文件的目录。通常,将工作目录自动切换到正在编辑的文件所在的目录很有用。要启用此选项
set autochdir
Vim 维护一个撤销历史记录,允许你撤销更改。默认情况下,此历史记录仅在文件关闭之前有效。Vim 包含一个巧妙的功能,即使在文件关闭后也能维护撤销历史记录,这意味着即使在文件保存、关闭和重新打开后,你也可以撤销更改。撤销文件是一个隐藏文件,以 .un~
扩展名保存。
set undofile
设置声音警报铃声(当您尝试滚动到行尾之外时发出警告声音)
set errorbells
如果你喜欢,可以设置视觉警报铃声
set visualbell
奖励
Vim 提供长格式和短格式命令。两种格式都可以用于设置或取消设置配置。
autoindent
命令的长格式
set autoindent
autoindent
命令的短格式
set ai
要查看命令的当前配置设置而不更改其当前值,请在末尾使用 ?
set autoindent?
要取消设置或关闭命令,大多数命令都使用 no
作为前缀
set noautoindent
可以为一个文件设置命令,但不用于全局配置。要做到这一点,打开文件并键入 :
,后跟 set
命令。此配置仅对当前文件编辑会话有效。

有关命令的帮助
:help autoindent

注意:此处列出的命令已在 Linux (Vim 7.4 (2013 年 8 月 10 日)) 和 Windows (Vim 8.0 (2016 年 9 月 12 日)) 上测试过。
这些有用的命令肯定会增强你的 Vim 体验。你还推荐哪些命令?
速查表
将此命令列表复制/粘贴到你的 vimrc 文件中
" Indentation & Tabs
set autoindent
set smartindent
set tabstop=4
set shiftwidth=4
set expandtab
set smarttab
" Display & format
set number
set textwidth=80
set wrapmargin=2
set showmatch
" Search
set hlsearch
set incsearch
set ignorecase
set smartcase
" Browse & Scroll
set scrolloff=5
set laststatus=2
" Spell
set spell spelllang=en_us
" Miscellaneous
set nobackup
set noswapfile
set autochdir
set undofile
set visualbell
set errorbells
5 条评论