这里所说的选项或配置均位于用户主目录中的 Vim 启动配置文件 .vimrc。
因为 vimrc 文件也用于 Linux 中的全局配置,如 /etc/vimrc 或 /etc/vim/vimrc。本文所说的 .vimrc 均是指位于用户主目录中的 .vimrc 文件。
此处不建议使用 Vim 编辑 .vimrc 文件,因为很可能无法粘贴成功,可以选择 gedit 编辑器编辑 .vimrc 文件。
cd /etc/vim
cp vimrc ~/.vimrc
cd ~
gedit .vimrc
提高 Vim 编辑效率的选项。主要分为以下几类:
- 缩进 & 制表符
- 显示 & 格式化
- 搜索
- 浏览 & 滚动
- 拼写
- 其他选项
1. 缩进 & 制表符
1)使 Vim 在创建新行的时候使用与上一行同样的缩进:
set autoindent
2)创建新行时使用智能缩进,主要用于 C 语言一类的程序。通常,打开 smartindent 时也应该打开 autoindent:
set smartindent
3)设置文件里的制表符 (TAB) 的宽度(以空格的数量表示):
set tabstop=4
4)如果你更喜欢在编辑文件时使用空格而不是制表符,设置以下选项可以使 Vim 在你按下 Tab 键时用空格代替制表符。
set expandtab
注意:这可能会导致依赖于制表符的 Python 等编程语言出现问题。这时,你可以根据文件类型设置该选项(请参考 autocmd)。
5) 设置自动对齐4个空格
set shiftwidth=4
2. 显示 & 格式化
1)要在每行的前面显示行号:
set number
2)要在文本行超过一定长度时自动换行:
set textwidth=80
3)要根据从窗口右侧向左数的列数来自动换行:
set wrapmargin=2
(译注:如果 textwidth 选项不等于零,本选项无效。)
4)当光标遍历文件时经过括号时,高亮标识匹配的括号:
set showmatch
3.搜索
1)高亮搜索内容的所有匹配位置:
set hlsearch
2)搜索过程中动态显示匹配内容:
set incsearch
3)搜索时忽略大小写:
set ignorecase
4)在打开 ignorecase 选项的条件下,搜索内容包含部分大写字符时,要使搜索大小写敏感:
set smartcase
例如,如果文件内容是:
test
Test
当打开 ignorecase 和 smartcase 选项时,搜索 test 时的突出显示:
test
Test
搜索 Test 时的突出显示:
test
Test
4.浏览 & 滚动
1)为获得更好的视觉体验,你可能希望将光标放在窗口中间而不是第一行,以下选项使光标距窗口上下保留 5 行。
set scrolloff=5
2)如果你没有设置选项 nowrap,那么设置 sidescrolloff 将非常有用。
在 Vim 窗口底部显示一个永久状态栏,可以显示文件名、行号和列号等内容:
set laststatus=2
5. 拼写
Vim 有一个内置的拼写检查器,对于文本编辑和编码非常有用。Vim 可以识别文件类型并仅对代码中的注释进行拼写检查。使用下面的选项打开英语拼写检查:
set spell spelllang=en_us
6. 其他选项
1)禁止创建备份文件:启用此选项后,Vim 将在覆盖文件前创建一个备份,文件成功写入后保留该备份。如果不想保留该备份文件,可以按下面的方式关闭:
set nobackup
2)禁止创建交换文件:启用此选项后,Vim 将在编辑该文件时创建一个交换文件。 交换文件用于在崩溃或发生使用冲突时恢复文件。交换文件是以 . 开头并以 .swp 结尾的隐藏文件。
set noswapfile
3)如果需要在同一个 Vim 窗口中编辑多个文件并进行切换。默认情况下,工作目录是打开的第一个文件的目录。而将工作目录自动切换到正在编辑的文件的目录是非常有用的。要自动切换工作目录:
set autochdir
4)Vim 自动维护编辑的历史记录,允许撤消更改。默认情况下,该历史记录仅在文件关闭之前有效。Vim 包含一个增强功能,使得即使在文件关闭后也可以维护撤消历史记录,这意味着即使在保存、关闭和重新打开文件后,也可以撤消之前的更改。历史记录文件是使用 .un~ 扩展名保存的隐藏文件。
set undofile
5)错误信息响铃,只对错误信息起作用:
set errorbells
6)如果你愿意,还可以设置错误视觉提示:
set visualbell
7选项列表
复制该选项列表粘贴到 .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