网上已经有很多很好的vim使用和配置教程。但每个人都有自己的习惯,因此教程仅作参考,只有在使用过程中才能体会到具体的问题,然后解决问题才能把vim调教的顺手。本文不再赘述vim的操作,直接从配置开始。
vim的所有配置都是在 ~/.vimrc 这个文件中完成。默认是没有的需要自己新建:
123 | cd ~touch .vimrcvim .vimrc |
以下是我个人的.vimrc文件的基础配置部分,双引号内为注释内容:
1234567891011121314151617181920212223242526272829303132333435363738 | \”去掉vi的一致性\”set nocompatible\”显示行号\”set number\” 隐藏滚动条\” set guioptions-=r set guioptions-=Lset guioptions-=b\”隐藏顶部标签栏\”set showtabline=0\”设置字体\”set guifont=Monaco:h13 syntax on \”开启语法高亮\”let g:solarized_termcolors=256 \”solarized主题设置在终端下的设置\”set background=dark \”设置背景色\”colorscheme solarizedset nowrap \”设置不折行\”set fileformat=unix \”设置以unix的格式保存文件\”set cindent \”设置C样式的缩进格式\”set tabstop=4 \”设置table长度\”set shiftwidth=4 \”同上\”set showmatch \”显示匹配的括号\”set scrolloff=5 \”距离顶部和底部5行\”set laststatus=2 \”命令行为两行\”set fenc=utf–8 \”文件编码\”set backspace=2set mouse=a \”启用鼠标\”set selection=exclusiveset selectmode=mouse,keyset matchtime=5set ignorecase \”忽略大小写\”set incsearchset hlsearch \”高亮搜索项\”set noexpandtab \”不允许扩展table\”set whichwrap+=,h,lset autoreadset cursorline \”突出显示当前行\”set cursorcolumn \”突出显示当前列\” |
其他常用的编辑器都有很方便的一键执行的功能或插件,例如Sublime Text的command+b、Atom的script插件。vim实现这个功能只需要在.vimrc中添加如下代码就可以实现F5一键执行python代码,而且由于是调用了vim的quickfix功能,因此还支持如果出现错误,跳转到错误行。
12345678910111213 | \”按F5运行python\”map <F5> :Autopep8<CR> :w<CR> :call RunPython()<CR>function RunPython() let mp = &makeprg let ef = &errorformat let exeFile = expand(\”%:t\”) setlocal makeprg=python\\ –u set efm=%C\\ %.%#,%A\\ \\ File\\ \\\”%f\\\”\\\\,\\ line\\ %l%.%#,%Z%[%^\\ ]%\\\\@=%m silent make % copen let &makeprg = mp let &errorformat = efendfunction |
但是这个一键执行有一个小问题,由于quickfix的原因,不支持标准输入input()和raw_input(),只要代码中有这两个函数,100%卡死,目前这个问题貌似还无解。如果不用quickfix就可以支持输入,但是在终端中使用的话就是跳回终端输入和输出;使用macvim的话又会出现输出数据很多时就无法查看全部。由于我在写python是标准输入用的较少,就决定放使用quickfix来保证实用和美观。
先上我的插件目录,本文只着重介绍Vundle和YouCompleteMe两个插件因为这两个插件的安装过程比较复杂一些,而其他插件的安装几乎可以算是傻瓜式的:
12345678 | Plugin \’VundleVim/Vundle.vim\’Plugin \’Valloric/YouCompleteMe\’Plugin \’Lokaltog/vim-powerline\’Plugin \’scrooloose/nerdtree\’Plugin \’Yggdroot/indentLine\’Plugin \’jiangmiao/auto-pairs\’Plugin \’tell-k/vim-autopep8\’Plugin \’scrooloose/nerdcommenter\’ |
杀手级插件。这是唯一一个需要手动安装的插件。有了这个,安装其他插件就方便很多。
1 | git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim |
若提醒目录不存在请先自行新建目录:
1234 | cd ~mkdir .vimcd .vimmkdir bundle |
然后需要在.vimrc文件中添加一些配置才能生效:
1234567 | filetype offset rtp+=~/.vim/bundle/Vundle.vimcall vundle#begin()Plugin \’VundleVim/Vundle.vim\’Plugin \’你的插件\’call vundle#end()filetype plugin indent on |
12 | “这是安装Github上的插件”Plugin \’Lokaltog/vim-powerline\’ |
下面是安装在vim-script上的插件的方法,引号里为插件名称,其他插件安装方法请自行查看项目主页:
1 | Plugin \’L9\’ |
在添加完.vimrc的的配置后,:wq保存并退出vim,重启vim并输入下面的命令后,vim就会自动下载并安装插件了
1 | :PluginInstall |
当看到命令行出现Done!就代表所有插件安装完成啦!
杀手级插件。vim上的自动补全神器,能够提供类似IDE的自动补全体验,还能和Syntastic配合提供实时语法检查。YouCompleteMe与其他插件不同的地方在于不仅需要安装,还需要自己手动编译,而且还需要在.vimrc中配置。
盗一张官网的效果图
YouCompleteMe支持的语言有:
C、Objectiv-c、C#、C++、Objectiv-C++、Php、Javascript、Typescript、python、Go、Rust
1 | Plugin \’Valloric/YouCompleteMe\’ |
12 | cd ~/.vim/bundle/YouCompleteMe./install.py —clang–completer |
参数 –clang-completer是为了加上C系列语言的自动补全,如果不需要可以不加,它同时还支持其他语言的补全,详细请看官方文档。
1234567891011121314151617181920212223242526272829 | \”默认配置文件路径\”let g:ycm_global_ycm_extra_conf = \’~/.ycm_extra_conf.py\’\”打开vim时不再询问是否加载ycm_extra_conf.py配置\”let g:ycm_confirm_extra_conf=0set completeopt=longest |