VIM 偏好设置 #
无插件配置
Vim 配置选项可以在 Vim 命令行模式下通过 :set
配置选项 xxx
的形式执行,也可以通过 set xxx
的格式保在配置文件中被 Vim 加载执行。
Vim的配置文件 (例如 ~/.vimrc) 其实是多个个性化 Vim 配置选项(Vim options)的集合。每个 Vim 配置项都有对应的关闭选项,即 set no配置选项 xxx 可关闭 配置选项 xxx。
例如:
set number
表示显示行号,而 set nonumber
则表示不显示行号。
set paste
表示显示行号,而 set nopaste
则表示不显示行号。
无插件型的 配置文件
一、基础配置 #
1.1 兼容模式 compatible #
nocompatible
用于关闭 compatible,表示不与 Vi 兼容。
1.2 自动重载 #
autoread 表示如果当前文件在 Vim 外被修改且未在 Vim 里面重新载入的话,则自动重新读取
其他 #
shortmess 选项用于设置Vim缩短消息长度的标志位列表,例如,shortmess=m 表示用 “[+]” 代替 “[Modified]”,推荐通过 :h shortmess 查看 shortmess 选项的详细介绍。
magic 选项用于改变搜索模式使用的特殊字符,推荐阅读Vim搜索字符转义与magic搜索模式。title 用于设置 Vim 窗口标题。
nobackup 用于关闭 backup,设置覆盖文件时不保留备份文件。
noerrorbells 用于关闭 errorbells 选项,表示 Vim 有错误信息时不响铃。
visualbell 表示使用可视响铃代替鸣叫,而显示可视响铃的终端代码由 t_vb 选项给出。如果既不想要响铃也不想要闪烁,使用 :set visualbell t_vb= 实现。
timeoutlen 表示以毫秒计的等待键码或映射的键序列完成的时间,推荐阅读Vim操作符待决模式(Vim Operator-Pending mode)。
示例 #
|
|
二、编码设置 #
2.1 #
encoding 设置 Vim 内部使用的字符编码,它应用于缓冲区、寄存器、表达式所用的字符。
2.2 #
fileencodings 设置一个字符编码的列表,表示 Vim 自动检测文件编码时的备选字符编码列表。fileformats 用于设置参与自动检测换行符 () 格式类型的备选列表。
2.3 #
termencoding 用于设置终端使用的编码方式。
2.4 #
formatoptions 表示自动排版完成的方式。Vim 在可视化模式下,可使用 = 进行代码格式的自动排版。m 表示在任何值高于 255 的多字节字符上分行;B 表示在连接行时,不要在两个多字节字符之间插入空格。
示例 #
|
|
三、界面显示设置 #
3.1 #
ruler 用于显示当前光标所在位置的行号和列号 (逗号分隔)。如果还有空间,在最右端显示文本在文件中的相对位置。
3.2 行号现实 #
number 用于设置显示行号。nowrap 设置超过窗口宽度的行不自动回绕显示。
3.3 命令展示 #
showcmd 用于设置在屏幕最后一行显示 (部分的) 命令。showmode 在插入、替换和可视模式里,在最后一行提供消息。
3.4 #
showmatch 表示插入括号时短暂地跳转到与之匹配的对应括号,而停留的时间由 matchtime 选项设置。如果置位 ‘showmatch’,matchtime 表示显示配对括号的十分之一秒。
3.5 示例 #
|
|
四、查找配置 #
4.1 搜索结果样式 #
hlsearch 用于设置将搜索结果高亮显示,而 incsearch 选项会让 Vim 根据已经在查找域中输入的文本,预览第一处匹配目标;每当新输入一个字符时,Vim 会即时更新预览内容。
4.2 区分大消息 #
当 ignorecase 和 smartcase 选项均打开时,如果搜索模式中包含大写字母,Vim就会认为当前的查找(搜索)是区分大小写的。如果搜索模式中不包含任何大写字母,Vim 则会认为搜索应该不区分大小写。这是个比较 ”智能的” 推测你搜索意图的机制。
推荐阅读:Vim增量查找与incsearch实时查找预览、Vim搜索命令使用方法和技巧。
4.5 示例 #
|
|
五、制表符设置 #
expandtab 选项用于设置在Vim插入模式下按下 Tab 键时,输入到Vim中的都是空格。smarttab 表示插入 Tab 时使用 shiftwidth。
shiftround 表示缩进列数对齐到 shiftwidth 值的整数倍。参考:Vim自动缩进配置、原理和tab键制表符。
|
|
六、缩进配置 #
autoindent 用于设置新增加的行和前一行具有相同的缩进形式。smartindent 选项用于设置新增行时进行”智能”缩进,主要用于 C 语言一族,与 cindent 选项类似。在Vim smartindent 缩进模式下,每一行都有相同的缩进量,直到遇到右大括号 (}) 取消缩进形式。
shiftwidth 选项用于设置执行Vim普通模式下的缩进操作 ( « 和 » 命令 )时缩进的列数。而 shiftround 选项则表示缩进列数会自动取整到 ‘shiftwidth’ 选项值的倍数。
tabstop 选项设置按下 Tab 键时,缩进的空格个数。
|
|
七、显示当前光标位置 #
set cursorcolumn
set cursorline
cursorcolumn 设置高亮显示光标当前所在列,cursorline 设置高亮显示光标所在屏幕行。更多内容,请阅:Vim快速跳转任意行、任意列以及高亮显示当前行、当前列。
Vim高亮显示行列
八、文件类型设置 #
|
|
filetype on 配置项是 Vim 文件类型检测功能的开关;filetype plugin on 用于 Vim 打开加载文件类型插件功能;filetype indent on 用于指定 Vim 为不同类型的文件定义不同的缩进格式。
autocmd FileType python set tabstop=4 shiftwidth=4 expandtab ai 表示对于 Python 文件 (通过 autocmd 命令指示 Vim 监听 FileType 事件),自动设置 Tab 键对应的空格个数等。
autocmd BufNewFile .sh,.py exec ":call AutoSetFileHead()" 表示新建后缀为 .sh、.py 的文件时,自动执行 AutoSetFileHead 函数。AutoSetFileHead 函数基本的逻辑是在新文件的首行自动插入部分内容,例如,新建 shell 脚本自动添加 #!/bin/bash”,然后新增两个空白行 (通过 normal G、normal o、normal o 三行实现)。