Skip to content

Vim - 个性化设置

Vim 具有高度的可定制性。你可以根据自己的偏好和工作流程调整其外观和行为。本节将探讨 Vim 个性化的关键方面。

  • 配置文件 (vimrc)
  • 更改字体 (适用于 GVim/MacVim)
  • 应用配色方案
  • 自定义高亮和视觉辅助
  • 定制状态栏

Vim 的设置主要由一个配置文件控制,通常称为 vimrc。配置文件可以是系统级的,也可以是用户特定的。

用户 vimrc: 这是你放置大多数个人配置的地方。其位置取决于你的操作系统:

  • Linux/macOS: ~/.vimrc 或 $XDG_CONFIG_HOME/vim/vimrc (如果设置了 $XDG_CONFIG_HOME,则默认为 ~/.config/vim/vimrc)。
  • Windows: $HOME/_vimrc、$HOME/vimfiles/vimrc 或 $VIM/_vimrc。

对于 Neovim,用户配置通常位于 ~/.config/nvim/init.vim (Vimscript) 或 ~/.config/nvim/init.lua (Lua)。

系统 vimrc: 该文件包含全局默认设置。通过在 Vim 中键入 :echo $VIM/vimrc 可以找到其位置。在 Linux 上,它通常是 /etc/vim/vimrc 或 /usr/share/vim/vimrc。修改此文件会影响系统上的所有用户,因此不常用于个人设置。

如果你使用 Vim 的 GUI 版本,例如 GVim 或 MacVim,可以将 GUI 特定的设置放在 gvimrc 文件中。这些设置会在 vimrc 加载之后加载。

  • Linux/macOS: ~/.gvimrc 或 $XDG_CONFIG_HOME/vim/gvimrc。
  • Windows: $HOME/_gvimrc、$HOME/vimfiles/gvimrc 或 $VIM/_gvimrc。

.exrc (位于主目录) 或 exrc (位于当前目录,如果为安全目的启用了 set exrc) 文件是为了与 ex 和旧版本的 vi 保持向后兼容。现代 Vim 的使用通常偏好 vimrc 文件。如果在同一位置找到 vimrc,Vim 将忽略 .exrc。

在 Vim 的 GUI 版本中,可以使用 guifont 选项更改字体及其大小。此设置通常放在你的 gvimrc 文件中。

语法因操作系统的不同而略有差异:

" Linux (GVim) 示例:
set guifont=Monospace\ 10
" macOS (MacVim) 示例:
set guifont=Menlo:h12
" Windows (GVim) 示例:
set guifont=Consolas:h11:cDEFAULT

字体名称中的空格必须用反斜杠转义。你通常可以使用 :set guifont=* 打开字体选择对话框来查找正确的语法。

Vim 支持配色方案,用于更改语法高亮和编辑器颜色。要应用配色方案:

:colorscheme <scheme_name>

你可以键入 :colorscheme (带空格),然后按 Tab 键循环切换内置的可用配色方案 (例如 desert、elflord、murphy)。还可以下载和安装更多配色方案。

要设置默认配色方案,请将该命令添加到你的 vimrc 中:colorscheme wombat

要直观地指示行长度限制 (例如 80 个字符),请使用 colorcolumn:

:set colorcolumn=80 " 高亮显示第 80 列
:set cc=80,100 " 高亮显示第 80 和 100 列

使用 match 的旧方法仍然可用,适用于更复杂的模式:

:match ErrorMsg /\%>79v.\+/ " 高亮显示第 79 列之后的文本

match 命令元素说明:\%>79v 表示“虚拟列 79 之后”,. 匹配任何字符,\+ 匹配一个或多个出现。ErrorMsg 是一个高亮组。

要显示行号:

:set number " 显示绝对行号
:set relativenumber " 显示相对行号 (当前行是 0)
:set nu rnu " 同时显示 (当前行绝对,其他行相对)

要禁用::set nonumber、:set norelativenumber。

要设置行号列的宽度 (例如 4 个字符):

:set numberwidth=4

要启用拼写检查:

:set spell

要设置拼写检查语言 (例如英式英语或德语):

:set spelllang=en_gb
:set spelllang=de

某些语言可能需要下载词典文件。请参阅 :help spell。

缩写 (Abbreviations) 会自动将输入的短文本扩展为更长的字符串。它们对于纠正常见的输入错误或插入样板文本非常有用。

定义一个缩写 (在插入模式和命令行模式中都有效):

:abbr adn and " 将 'adn' 改为 'and'
:abbr myemail user@example.com

仅适用于插入模式的缩写,使用 :iabbrev 或 :iab。

现在,如果你在插入模式下键入 myemail 后跟空格或标点符号,它将展开为 user@example.com。

每个窗口底部的状态栏 (status line) 显示有关当前文件和模式的信息。默认情况下,它可能只在有多个窗口时显示。

要始终显示状态栏:

:set laststatus=2

其他值:0 (从不显示),1 (仅当有多个窗口时显示),3 (全局状态栏,仅限 Neovim)。

你可以使用 statusline 选项广泛定制状态栏的内容。这可能涉及到使用 Vim script 来显示各种细节,例如文件名、文件类型、光标位置、Git 分支等。例如,一个简单的自定义状态栏:

:set statusline=%F\ %y\ %r%m\%=Line\ %l/%L,\ Col\ %c

许多用户选择 Airline 或 Lightline 等插件来实现高度可配置且美观的状态栏。有关格式化选项的详细信息,请参阅 :help 'statusline'。