我的 Vim 配置

我的 Vim 配置成型已经有不少时间了,过去也是看着 依云 等人的配置综合而成的,再加上有人黑我一年不写blog,一写果然就是 Arch 挂,因此决定多分享一些 super user 系列的内容。

我的 vim 所有配置文件,均放在 GitHub 上,但它很可能不适合别人,因此这篇文档主要讲我的配置文件组织方式、各个插件的用途等等,方便读者组织自己的配置文件。

废话少说,先上王道。

先期准备 & 前言废话

首先你需要一个 vim, 一般这个 vim 需要加上 +python +ruby 等支持才能支持更多插件,如果使用 Arch Linux 的话,建议安装 gvim。另外目前很多 vim插件通过 github 分发,因此 git 也是强烈建议安装的。

本文中所说的 vim 就是 vim,不是 vi,也不是 neovim,前者是 vim 的祖先,后者是号称「下一代vim」的一个正在开发中的 fork。(事实上我正在用 neovim ,但目前还没有什么 killer feature, bug 也比较多,目前还没太大必要值得一般人用)

其次,我仍然十分建议在终端中使用 vim,毕竟很多操作,比如编译、测试,还是用 shell 舒服。配合利器 Tmux,在一个 tab 中编辑,另一个 tab 中编译/测试,这样是比较舒服的。当然,你可以配合一些插件在 vim 中打开一个 shell,但总还是不太爽……

21 世纪一般同学都使用图形终端了,目前绝大多数图形终端都支持 256 色,甚至 24 位真彩色。目前 vim 在终端下最多还只支持 256 色,neovim 支持真彩色,但是我也只是用到 256。如何判断自己的终端色彩数量呢?敲一个

1
$ tput colors

如果你没有特意配置过,返回的值应该是 8,也就是默认色彩数。我个人比较建议的方式是,在 ~/.bashrc 或者 ~/.zshrc 中加入

1
2
3
4
5
6
7
8
case "$TERM" in
    xterm)
        export TERM=xterm-256color
        ;;
    screen)
        export TERM=screen-256color
        ;;
esac

这样的话,当终端是 xterm 的时候,shell 会让终端打开 256 色支持。

插件系统、整体配置

vim 本身实现了一种脚本语言 VimL 用于 vim 配置、编写插件,VimL 我也不会,所以不讲了…… 需要说明的是,vim 本身的功能只是一个足够好的编辑器,但实际应用中,人们常常还需要一些高级编辑,或编辑之外的功能,这些都需要通过插件实现。

配置文件呢,有多个默认位置,和用户相关的主要就是~/.vimrc~/.vim/,前者是配置文件,后者是各类插件目录。在一切之前,请先确保文件/目录准备完毕

1
$ mkdir ~/.vim
$ touch ~/.vim/vimrc
$ ln -s ~/.vim/vimrc ~/.vimrc  # 把 vimrc 本体放在 ~/.vim/ 中,方便管理

过去的 vim 插件安装方式是一股脑全部装在 ~/.vim 里,插件多了之后管理起来极其困难。好在后来有了 pathogen,以及衍生出来的 vundle 等等,目前 vim 的插件管理已经非常轻松了。我使用 Vundle vim-plug 作为插件管理器,比起 vundle 功能更全面,且支持并行下载。

安装 vim-plug

由于 Vim 并不自带插件管理,因此我们要手动安装配置。vim-plug 的安装很简单,首先把 plug.vim 下载了放在 ~/.vim/autoload/

1
2
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
  https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

就好了。

文件结构

我们的 ~/.vim 目录整体会长成这样:

1
+-- vimrc   # 主配置文件
|
+---config/  # 存放各类插件的配置文件
|   \-- xxx.vim
|   \-- ooo.vim
|   \-- ....
+--- bundle/ # 存放各类插件的代码,交给 Vundle 管理就好了

所以我们需要关心的也就是 vimrcconfig/ 里的各类配置。

vimrc 结构

vimrc 大概会长成这样

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
call plug#begin('~/.vim/bundle') " vim-plug 初始化

"""
" 插件列表
"""

" 必须使用单引号
Plug 'rking/ag.vim'
Plug 'kien/ctrlp.vim'
Plug 'Yggdroot/indentLine'
Plug 'Valloric/MatchTagAlways'
Plug 'Valloric/YouCompleteMe'

" 还有好多插件

" 结束插件列表
call plug#end()


" Vim 基础配置部分

" 基础配置结束

" 插件配置部分

source ~/.vim/config/python-mode.vim
source ~/.vim/config/tagbar.vim
source ~/.vim/config/nerdtree.vim
source ~/.vim/config/syntastic.vim  
" ....

所以配置文件分为三个部分:

  • 插件列表
  • 基础配置
  • 各插件配置

基础配置

我先把基础配置,带注释发上来,再贴插件列表

if !exists("g:vimrc_loaded")
" 设置颜色主题为 molokai
colorscheme molokai
let g:molokai_original = 1
if has("gui_running")
" 设置 gvim 的外观
set guioptions-=T "隐藏工具栏
set guioptions-=L
set guioptions-=r
set guioptions-=m
set gfn=Source\ Code\ Pro\ for\ Powerline\ Semi-Bold\ 10
set gfw=STHeiti\ 9
set langmenu=en_US
set linespace=0
endif " has
endif " exists(...)
 
set so=10 " 光标移动到倒数第10行时开始滚屏
set number " 显示行号
syntax on " 打开语法高亮
filetype on " 打开文件类型支持
filetype plugin on " 打开文件类型插件支持
filetype indent on " 打开文件类型缩进支持
 
set list lcs=tab:\¦\ " 使用 ¦ 来显示 tab 缩进
 
if has("autocmd") " 打开时光标放在上次退出时的位置
autocmd BufReadPost *
\ if line("'\"") > 0 && line ("'\"") <= line("$") |
\ exe "normal g'\"" |
\ endif
endif
 
set completeopt=longest,menu " 自动补全菜单
 
" 鼠标支持
if has('mouse')
set mouse=a
set selectmode=mouse,key
set nomousehide
endif
 
set autoindent " 自动缩进
set modeline " 底部的模式行
set cursorline " 高亮光标所在行
set cursorcolumn " 高亮光标所在列
 
" 设置缩进宽度为 4 个空格
set shiftwidth=4
set tabstop=4
set softtabstop=4
 
set showmatch " 高亮括号配对
set matchtime=0
set nobackup " 关闭备份
set nowritebackup
" set directory=~/.vim/.swapfiles// " 把 swap 文件都放在 ~/.vim/.swapfiles/ 里
 
" neovim 和 tmux 配合必须打开
if has('nvim')
set ttimeout
set ttimeoutlen=0
endif
 
"在insert模式下能用删除键进行删除
set backspace=indent,eol,start
 
" 文件编码
set fenc=utf-8
set fencs=utf-8,gbk,gb18030,gb2312,cp936,usc-bom,euc-jp
set enc=utf-8
 
"语法折叠
set foldmethod=syntax
set foldcolumn=0 " 设置折叠区域的宽度
set foldlevel=100
" 用空格键来开关折叠
nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>
 
set smartcase " 搜索时,智能大小写
set ignorecase " 搜索时,忽略大小写
set nohlsearch " 关闭搜索高亮
set incsearch " incremental search
set autochdir " 打开文件时,自动 cd 到文件所在目录
 
" 让 j, k 可以在 自动wrap的行中上下移动
vmap j gj
vmap k gk
nmap j gj
nmap k gk
 
" Shift-T 开新 Tab
nmap T :tabnew<cr>
 
" 以下文件类型,敲 {<回车> 后,自动加入反括号 }
au FileType c,cpp,h,java,css,js,nginx,scala,go inoremap <buffer> {<CR> {<CR>}<Esc>O
view raw vimrc.vim hosted with ❤ by GitHub

有用的插件

以下所有插件名,例如 rking/ag.vim 改成 Plugin 'rking/ag.vim' 的形式放在 vimrc 的插件段,即可安装使用。粗体的为强烈推荐安装。

  • rking/ag.vim 使用 SilverSearcher 搜索代码,比 grep 速度快,稳准狠
  • kien/ctrlp.vim 使用模糊匹配搜索/打开文件,非常好用,强烈推荐
  • Yggdroot/indentLine 编辑 python 等用空格缩进的文件时,显示缩进标记线
  • Valloric/YouCompleteMe 极其强大的自动补全、C/C++/C#代码分析器
  • jlanzarotta/bufexplorer 快速打开历史编辑过的文件
  • mattn/emmet-vim 曾叫 ZenCoding,对 HTML/XML 编辑很有用
  • bigeagle/molokai 一个很漂亮的颜色主题,我修改过,御用
  • scrooloose/nerdtree 截图中左侧文件列表
  • scrooloose/syntastic 语法检查器,非常有用
  • klen/python-mode 对 python 程序员,强烈推荐
  • kien/rainbow_parentheses.vim 使用不同颜色标记各级括号,非常好
  • majutsushi/tagbar 截图中左侧的类/函数/方法列表
  • SirVer/ultisnips 和 honza/vim-snippets : 一些 snippets,省时省力,只是常常记不住
  • bling/vim-airline 截图中下方非常漂亮的状态栏
  • fatih/vim-go Go 程序员必备
  • lervag/vim-latex LATEX 编辑必备
  • jrosiek/vim-mark 阅读代码必备,给单词加 mark 高亮

写完插件列表之后,打开 vim 然后 :PlugInstall 即可完成插件下载、安装,有些插件(如 YouCompleteMe) 需要进一步安装的,请查看插件文档。

插件的配置,一般插件文档写得很详细,我就不多说了。

直接用我的配置文件

如果直接用我写好的配置呢,我建议在 github 上 fork,因为我的配置是面向 neovim 的,所以你需要把所有 .nvim 替换成 .vim,然后插件列表可能不适合你,最好也根据自己的需求做一些调整。

以上。

Revision

  • 2015.06.22 抛弃 Vundle,转向 vim-plug


from: https://bigeagle.me/2015/05/vim-config/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值