一千个vimer有一千个配置,vim的配置其实可当成一门语言来学习,配置复杂性不比学习一门语言来得容易,而且自己的配置都是经过长期的打磨的。其实在这个过程中可以不断的磨练自己的意志,当到达一定程度的时候,我确实是离不开vim,他不仅帮助我提高了编辑速度,而且也不断的受到vim的思想的影响,这种影响不断的深入到我的编程工作中去。现代的IDE确实在初期给开发者带来了极大的便利,可是这些IDE从来都不会影响到你的思想。当然,我这里不是再给大家洗脑了,vim也确实存在很多弊端,所以导致很多人在使用上的困难,虽然有非常完善的文档和强大的社区支持,可是现在谁还有那么多的时间呢?
好了,下面开始进入正题,我不打算大段大段的贴代码,而且每一个配置都做简单的说明,解释一下我为什么要这么配置,当然,将来这些配置可能都会再改进。
set number
set relativenumber
set nu
set rnu
上面是行号相关的设置,第一行是设置行号显示,第二行是将行号设置为相对行号。后面的设置是他们的简写模式,建议尽量少的使用简写模式,使用完整的配置可以增加配置文件的可读性,毕竟看配置文件不只是一次两次。这个配置估计是最流行的了。 relativenumber将行号设置与当前行的距离,当前行显示绝对行号。这样设置的目的是方便进行垂直操作,比如向上移动到某行,不用计算就可以直接执行行号+j。
set smartindent
set autoindent
set shiftwidth=4
set tabstop=4
set expandtab
smartindent 表示在换行的时候光标进行智能缩进,触发智能缩进的场景有:以"{"结尾,以C语言关键字开头,可以通过:h cinwords进行查看,包括:if, else, while, do, for, switch,以"}"开头,此情况只有在执行"O"命令时候有效,但是这个配置有一点问题,就是当换行之后本来已经处于缩进状态了,如果输入"#",那么缩进就会取消,"#"就会被插入到第一列,可是我们在写Python代码的时候,往往不希望这样做,所以我们可以增加配置":inoremap # X^H",其中 ^H 是先按CTRL-V再按CTRL-H输入的。
autoindent 会将当前行的缩进复制到新行,对<CR>, "o", "O"都会起作业,如果在新行没有输入任何信息并且光标离开了新行,那么所产生的缩进会被删除
shiftwidth 设置每次缩进的列数
tabstop 表示按一下<Tab>输出几个空格
expandtab 使用空格代替<Tab>
set scrolloff=3
上面的设置会保持光标距离屏幕顶部和底部有3行的距离,如果你设置的数值特别大,比如999,那光标永远都保持在屏幕的中部
set hlsearch
set display=lastline
hlsearch 高亮被搜索的字符,display=lastline 在当前窗口中,如果单行长度过长,则能显示多少就显示多少,不需要将整行显示出来。
set cursorcolumn
set cursorline
highlight CursorLine cterm=NONE ctermbg=black ctermfg=green guibg=NONE guifg=NONE
highlight CursorColumn cterm=NONE ctermbg=black ctermfg=green guibg=NONE guifg=NONE
高亮光标所在行列,并配置样式
set laststatus=2
总是显示状态栏
set showmatch
自动匹配括号
set encoding=utf-8
设置编码格式
以上就是我使用的原生vim的基础配置,下次在写一下映射方案。
我的配置文件: https://github.com/xinxingzhao/myconfig
原文同步发布在我的个人博客: http://www.xinxingzhao.com/blog/2016/05/24/vim-base-settings.html