From : http://www.cnblogs.com/highway-9/p/5984285.html
From : http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html
From : http://www.cnblogs.com/youxia/p/linux002.html
From : http://blog.csdn.net/namecyf/article/details/7787479
最近在重新配置Vim,也在GitHub上找了三个star和fork数目很高的方案,在这里分享给大家:
vim和emacs是linux环境下的文本编辑利器,关于vim和emacs谁更优秀的话题从来没有断过,我在这里就不再评判了,vim是linux下的默认编辑器,学好了vim将会一生受用,我之前学vim是在网上找的一些资料,读博客之类的,使用了几年vim始终感觉没有什么大的进步,后来在vim官网看到vim书籍推荐,其中一本就是《vim实用技巧》,后来果断在京东上买了一本,除了宏相关的没怎么看以外,其他的都看了,加上自己的实际操作,感觉vim技术又上了一个层次,《vim实用技巧》是教会vimer怎么使用vim,使用vim写代码时,给vim装上一些插件,将会如虎添翼,后来我在网上找一些插件来安装,或者在github上搜索别人的vimrc,看别人装了什么插件,自己选择性的安装了一些,使用一段时间后感觉使用vim编辑代码就是一件非常愉快的事情,再加上我最近买的忍者二代机械键盘那简直写代码很带感啊,我最开始自己家的电脑上给vim装了很多插件,后来在公司又要重新搭建vim开发环境,感觉有点麻烦,后来又想有没有什么一键安装、部署之类的小程序,就可以傻瓜式的把开发环境给搭建起来不是很爽吗,vimplus就运运而生了,如果喜欢的朋友请不要吝啬,给个star,废话不多说,直接上安装步骤(个人博客也发表了《超级强大的vim配置(vimplus)》)。
vimplus是vim的超级配置安装程序
github地址:https://github.com/chxuan/vimplus.git,欢迎star和fork。
接触vim到现在也有几年了,但是之前用vim都是在网上找别人配置好了的vim,但是别人配置的始终都不能够满足自己的需求(自己需要有强大的C/C++代码提示补全功能、头文件/源文件切换、静态代码分析等功能),所以最近自己有时间,自己归纳了一些vim的插件,然后做成一键安装程序,供有相同需求的vimer们参考。
现在vimplus支持ubuntu14.04之后的所有ubuntu 64位系列以及centos7 64位,运行install.sh
脚本,你就可以一边喝咖啡,一遍看着屏幕刷刷刷的打印就安装部署好了开发环境了,整个过程大约持续40分钟,其中下载编译ycm耗费了大半时间,我有下载好了的YouCompleteMe.tar.gz,省得在github上去下载,很慢的,你懂的,若想要手动安装ycm,需要修改vimplus
目录下的.vimrc
文件。
vimplus将自动安装一些软件,比如说。
安装的插件我也部分列出来。
到这一步,安装已经完成,你会发现~
目录有两个文件,一个是vim的配置文件.vimrc
,一个是YouCompleteMe的配置文件[.ycm_extra_conf.py][25]
,一般来说建立一个main.cpp来写C、C++程序来说是没有问题的,都会有语法补全,当你需要写一些项目并涉及到第三方库时,就需要更改[.ycm_extra_conf.py][26]
了,具体步骤如下。
flags
变量,添加三方库路径和工程子目录路径。桌面版linux使用vim-devicons插件会出现乱码,需要设置终端字体为Droid Sans Mono for Powerline Nerd Font Complete
,使用xshell等工具连接服务器linux的用户就没有必要使用vim-devicons了,可以在插件目录将vim-devicons目录删除,不然会导致NerdTree
的缩进有问题。
vim的插件需要设置好了快捷键才会发挥它的威力,有些插件的快捷键可以查看各自官网,有些快捷键我自己改过的,下面罗列部分插件的快捷键。
<, + u>
<, + i>
<, + o>
:DirDiff
.
下面这幅图是借用Valloric/YouCompleteMe来展示强大的C++补全功能
ctrlp提供文件搜索,支持模糊查询。
vim-airline提供漂亮的状态栏支持。
运行setup.sh脚本程序一键安装完成后,HOME目录将会存在.ycm_extra_conf.py,该文件就是YCM实现C++等语言语法补全功能的配置文件,一般我会在HOME目录放一个,然后每一个项目拷贝一个.ycm_extra_conf.py,更改.ycm_extra_conf.py文件里面的flags 变量的值即可实现相关include文件的语法补全功能。
1.如果网络条件不好可能安装失败,基本上是Valloric/YouCompleteMe安装失败,安装失败后需要将~/.vim/bundle文件夹下的YouCompleteMe目录删除,然后重新执行setup.sh即可,
重新安装时,程序将自动安装安装失败的插件。
2.在ubuntu16.04LTS下安装可能会失败(Valloric/YouCompleteMe安装失败),因为vim默认支持python3进行插件编译,安装失败后,手动进入~/.vim/bundle/YouCompleteMe,然后运行python3 ./install.py --clang-completer即可。
花了很长时间整理的,感觉用起来很方便,共享一下。
我的vim配置主要有以下优点:
1.按F5可以直接编译并执行C、C++、java代码以及执行shell脚本,按“F8”可进行C、C++代码的调试
2.自动插入文件头 ,新建C、C++源文件时自动插入表头:包括文件名、作者、联系方式、建立时间等,读者可根据需求自行更改
3.映射“Ctrl + A”为全选并复制快捷键,方便复制代码
4.按“F2”可以直接消除代码中的空行
5.“F3”可列出当前目录文件,打开树状文件目录
6. 支持鼠标选择、方向键移动
7. 代码高亮,自动缩进,显示行号,显示状态行
8.按“Ctrl + P”可自动补全
9.[]、{}、()、""、' '等都自动补全
10.其他功能读者可以研究以下文件
vim本来就是很强大,很方便的编辑器,加上我的代码后肯定会如虎添翼,或许读者使用其他编程语言,
可以根据自己的需要进行修改,配置文件里面已经加上注释。
读者感兴趣的话直接复制下面的代码到文本文件,然后把文件改名为“ .vimrc” (不要忘记前面的“.”),然后把文件放到用户文件夹的根目录下面即可。重新打开vim即可看到效果。
为方便管理,源码托管到了github,后期增加了好多新功能,
具体详见:https://github.com/ma6174/vim
这是在github上的vim配置的截图:
1 | 写在前面 | |||||||||||||||||
Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用的IDE是何等的重要啊, 估计很多人就是卡在这个门槛上了, "工欲善其事, 必先利其器"嘛, 我想如果有一个很好用的IDE, 那些Linux牛人也会欢迎的. 这都是劳动人民的美好愿望罢了, 我今天教大家把gvim改装成一个简易IDE, 说它"简易"是界面上看起来"简易", 但功能绝对不比一个好的IDE差, 该有的功能都有, 不该有的功能也有, 你就自己没事偷着乐吧, 下面我开始介绍今天的工作了. 本文会教你: 1. 中文帮助手册的安装 2. vim编程常用命令 3. 语法高亮 4. 在程序中跳来跳去: Ctags 的使用 5. 教你高效地浏览源码 -- 插件: TagList 6. 文件浏览器和窗口管理器 -- 插件: WinManager 7. Cscope 的使用 8. QuickFix 窗口 9. 快速浏览和操作Buffer -- 插件: MiniBufExplorer 10. c/h文件间相互切换 -- 插件: A 11. 在工程中查找 -- 插件: Grep 12. 高亮的书签 -- 插件: VisualMark 13. 自动补全 14. 加速你的补全 -- 插件: SuperTab 本文不会教你: 1. 如何使用vim. 本文不会从零开始教你如何使用vim, 如果你是第一次接触vim, 建议你先看看其他的vim入门的教程, 或者在shell下输入命令: vimtutor, 这是一个简单的入门教程. 2. 编程技巧. 3. vim脚本的编写. 我的工作环境是: Fedora Core 5 gvim是自己编译的7.0, 如果你还没有安装gvim, 请看我的这篇文章<在Redhat Linux 9中编译和配置gvim 7.0> 由于本人一直从事C语言工作, 所以下面这些例子都是在C语言程序中演示的, 其他语言的没有试过, 如果有朋友在别的语言下有问题, 可以跟我讨论一些, 我会尽量帮助你们的. 本文用的示范源码是vim7.1的源码, 可以在www.vim.org下载到源码包:vim-7.1.tar.bz2, 你也可以不用下载, 就用你自己程序的源码, 关系不大的. 我把源码解压在我的home目录下: ~/vim71 下面对文中的一些名字定义一下: 1. 文中用到的一些用<>括起来的符号比如
~/.vim/plugin ~/.vim/doc ~/.vim/syntax 如果你没有, 就自己创建. 3. 文中说到的.vimrc文件都是指 ~/.vimrc 先给大家看张图片, 我是vim的界面, 解解馋先^_^ ![]() (--- 图1 ---) 对照上图的图标, 我在本文中将教会你以下这些功能:
|
||||||||||||||||||
2 | 中文帮助手册的安装 | |||||||||||||||||
vim自带的帮助手册是英文的, 对平时编程的人来说没有多大阅读困难, 何况还有"星级译王"呢, 可偏偏有一帮人将其翻译成了中文, 可偏偏我又挡不住诱惑将它安装了, 唉.......又痛失一个学习英文的好机会, 下不为例. |
||||||||||||||||||
3 | vim编程常用命令 | |||||||||||||||||
建议先看看帮助手册中的下面章节, 其中有关tags文件的部分你可以先跳过, 在后面的章节中会讲到, 到时候你在回来看看, 就觉得很简单了:
|
||||||||||||||||||
4 | 语法高亮 | |||||||||||||||||
写程序没有语法高亮将是一件多么痛苦的事情啊, 幸亏vim的作者是个程序员(如果不是, 那可NB大了), 提供了语法高亮功能, 在上面的图片中大家也可以看到那些注释, 关键字, 字符串等, 都用不同颜色显示出来了, 要做到这样, 首先要在你的 ~/.vimrc 文件中增加下面几句话:
如果你不喜欢这个配色方案你可以在"编辑->配色方案"(gvim)中选择一个你满意的配色方案, 然后在~/.vimrc文件中增加下面这句:
更炫的语法高亮: 你可能会发现很多东西没有高亮起来, 比如运算符号, 各种括号, 函数名, 自定义类型等, 但是看上面的图片, 我的运算符号和函数名都加亮了^_^, 想知道为什么吗? 哇哈哈哈哈.... 让我来教你吧 ... 主要的思路是新建一个语法文件, 在文件中定义你要高亮的东东, 想高亮什么就高亮什么, 用vim就是这么自信. 所谓的语法文件就是vim用来高亮各种源文件的一个脚本, vim靠这个脚本的描述来使文件中的不同文本显示不同的颜色, 比如C语言的语法文件放在类似于这样的一个路径中: /usr/share/vim/vim64/syntax/c.vim 其他语言的语法文件也可以在这个路径中找到, 你的也许不在这个路径中, 不管它, 在你自己的HOME下新建一个语法文件, 新建一个空文件: ~/.vim/syntax/c.vim 在其中加入
|
"
" Highlight All Math Operator
"
" C math operators
syn match cMathOperator display “[-+//%=]"
" C pointer operators
syn match cPointerOperator display “->/|/.”
" C logical operators - boolean results
syn match cLogicalOperator display “[!<>]=/=”
syn match cLogicalOperator display “"
" C bit operators
syn match cBinaryOperator display “/(&/||/|/^/|<</|>>/)=/=”
syn match cBinaryOperator display “/~”
syn match cBinaryOperatorError display “/~=”
" More C logical operators - highlight in preference to binary
syn match cLogicalOperator display “&&/|||”
syn match cLogicalOperatorError display “/(&&/|||/)=”
" Math Operator
hi cMathOperator guifg=#3EFFE2
hi cPointerOperator guifg=#3EFFE2
hi cLogicalOperator guifg=#3EFFE2
hi cBinaryOperator guifg=#3EFFE2
hi cBinaryOperatorError guifg=#3EFFE2
hi cLogicalOperator guifg=#3EFFE2
hi cLogicalOperatorError guifg=#3EFFE2
再打开你的C文件看看, 是不是又明亮了许多. 还有一个压箱底的要告诉你, 如果你自己增加了一个类型或者结构之类的, 怎么让它也象"int", “void"这样高亮起来呢? 再在上面的文件~/.vim/syntax/c.vim中添加下面的东东:
” |
: lazy.fox.wu#gmail.com | |
Homepage | : http://blog.csdn.net/wooin |
$ tar -xzvf ctags-5.6.tar.gz $ cd ctags-5.6 $ make # make install // 需要root权限 |
$ cd /home/wooin/vim71 $ ctags -R |
$ vim /home/wooin/vim71/src/main.c |
:set tags=/home/wooin/vim71/tags |
:help usr_29 |
$ ctags -R |
: lazy.fox.wu#gmail.com | |
Homepage | : http://blog.csdn.net/wooin |
下载地址 | http://www.vim.org/scripts/script.php?script_id=273 |
版本 | 4.4 |
安装 | 在 ~/.vim 目录下解压taglist_xx.zip |
手册 | :help taglist.txt |
:help taglist.txt |
let Tlist_Show_One_File=1 let Tlist_Exit_OnlyWindow=1 |
$ vim ~/vim/src/main.c |
:Tlist |
:help taglist.txt |
下载地址 | http://www.vim.org/scripts/script.php?script_id=95 |
版本 | 2.x |
安装 | 在 ~/.vim 目录下解压winmanager.zip |
手册 | :help winmanager |
:e ~/vim71 |
显示帮助 | |
如果光标下是目录, 则进入该目录; 如果光标下文件, 则打开该文件 | |
- | 返回上级目录 |
c | 切换vim 当前工作目录正在浏览的目录 |
d | 创建目录 |
D | 删除目录或文件 |
i | 切换显示方式 |
R | 文件或目录重命名 |
s | 选择排序方式 |
x | 定制浏览方式, 使用你指定的程序打开该文件 |
let g:winManagerWindowLayout='FileExplorer|TagList’ nmap wm :WMToggle |
:help winmanager |
:help if_cscop.txt |
# ./configure # make # make install // 需要root权限 |
:set cscopequickfix=s-,c-,d-,i-,t-,e- |
$ cd /home/wooin/vim71/ $ cscope -Rbq # 此后会生成三个文件 $ ll cscope.* -rw-rw-r-- 1 wooin wooin 1.1M 2007-09-30 10:56 cscope.in.out -rw-rw-r-- 1 wooin wooin 6.7M 2007-09-30 10:56 cscope.out -rw-rw-r-- 1 wooin wooin 5.1M 2007-09-30 10:56 cscope.po.out # 打开文件, 开始Coding $ cd src $ vi main.c |
:cs add /home/wooin/vim71/cscope.out /home/wooin/vim71 |
:cs find g vim_strsave |
:cs find c vim_strsave |
:cw |
0 或 s | 查找本 C 符号(可以跳过注释) |
1 或 g | 查找本定义 |
2 或 d | 查找本函数调用的函数 |
3 或 c | 查找调用本函数的函数 |
4 或 t | 查找本字符串 |
6 或 e | 查找本 egrep 模式 |
7 或 f | 查找本文件 |
8 或 i | 查找包含本文件的文件 |
nmap nmap nmap nmap nmap nmap nmap nmap |
:set tags=/home/wooin/vim71/tags |
Ctrl+P | 向前切换成员 |
Ctrl+N | 向后切换成员 |
Ctrl+E | 表示退出下拉窗口, 并退回到原来录入的文字 |
Ctrl+Y | 表示退出下拉窗口, 并接受当前选项 |
Ctrl+X Ctrl+L | 整行补全 |
Ctrl+X Ctrl+N | 根据当前文件里关键字补全 |
Ctrl+X Ctrl+K | 根据字典补全 |
Ctrl+X Ctrl+T | 根据同义词字典补全 |
Ctrl+X Ctrl+I | 根据头文件内关键字补全 |
Ctrl+X Ctrl+] | 根据标签补全 |
Ctrl+X Ctrl+F | 补全文件名 |
Ctrl+X Ctrl+D | 补全宏定义 |
Ctrl+X Ctrl+V | 补全vim命令 |
Ctrl+X Ctrl+U | 用户自定义补全方式 |
Ctrl+X Ctrl+S | 拼写建议 |
下载地址 | http://www.vim.org/scripts/script.php?script_id=1643 |
版本 | 0.43 |
安装 | 把supertab.vim 文件丢到 ~/.vim/plugin 文件夹就好了 |
手册 | supertab.vim 文件头部, 和命令 “:SuperTabHelp" |
let g:SuperTabRetainCompletionType=2 let g:SuperTabDefaultCompletionType=" |
let g:SuperTabDefaultCompletionType=” " 设置按下 " 现在改为 " 还有其他的补全方式, 你可以看看下面的一些帮助: " :help ins-completion " :help compl-omni |
let g:SuperTabRetainCompletionType=2 " 0 - 不记录上次的补全方式 " 1 - 记住上次的补全方式,直到用其他的补全命令改变它 " 2 - 记住上次的补全方式,直到按ESC退出插入模式为止 |
: lazy.fox.wu#gmail.com | |
Homepage | : http://blog.csdn.net/wooin |
在命令行下,输入命令:sudo vim /etc/vim/vimrc。会影响所有用户
在命令行下,输入命令:sudo ~/vimrc。只影响当前用户
首先, 我们建立目录存放我们的主题
mkdir -p ~/.vim/colors
这个目录就是给我们存放主题用的, 我们用什么主题呢? 这里我们采用molokai这个主题, 当然如果读者愿意用别的主题,
也是可以的, 下一个就行.
http://www.vim.org/scripts/script.php?script_id=2340下载molokai主题, 拷贝到~/.vim/colors目录下, 创建.vimrc文件.
touch ~/.vimrc
将下面的内容拷贝到.vimrc中.
-
set modelines=
0
-
-
"设置更好的删除
-
set
backspace=
2
-
-
syntax on "语法高亮
-
-
"用浅色高亮当前行
-
autocmd InsertLeave * se nocul
-
autocmd InsertEnter * se cul
-
-
set
smartindent "智能对齐
-
-
set autoindent
"自动对齐
-
-
set
confirm "在处理未保存或只读文件的时候,弹出确认框
-
-
set tabstop=
4
"tab键的宽度
-
set
softtabstop=
4
-
set
shiftwidth=
4
"统一缩进为
4
-
set expandtab
"不要用空格替代制表符
-
-
set
number "显示行号
-
set history=
50
"历史纪录数
-
set
hlsearch
-
set
incsearch “搜素高亮,搜索逐渐高亮
-
-
set gdefault
“行内替换
-
set
encoding=utf-
8
-
set
fileencodings=utf-
8
,ucs-bom,
shift
-jis,gb18030,gbk,gb2312,cp936,utf-
16
,big5,euc-jp,latin1 “编码设置
-
-
colorscheme molokai
-
-
set guifont=Menlo:h16:cANSI
“设置字体
-
set
langmenu=zn_CN.UTF-
8
-
set
helplang=cn “语言设置
-
-
set ruler
“在编辑过程中,在右下角显示光标位置的状态行
-
-
set
laststatus=
1
“总是显示状态行
-
-
set showcmd
“在状态行显示目前所执行的命令,未完成的指令片段也会显示出来
-
-
set
scrolloff=
3
“光标移动到buffer的顶部和底部时保持
3行的距离
-
set showmatch
“高亮显示对应的括号
-
set
matchtime=
5
“对应括号高亮时间(单位是十分之一秒)
-
-
set autowrite
“在切换buffer时自动保存当前文件
-
-
set
wildmenu “增强模式中的命令行自动完成操作
-
-
set linespace=
2
“字符间插入的像素行数目
-
set
whichwrap=b,s,<,>,[,] “开启
normal 或visual模式下的backspace键空格键,左右方向键,
insert或
replace模式下的左方向键,右方向键的跳行功能
-
-
filetype
plugin indent
on
“分为三部分命令:file on,file plugin on,file indent on 分别是自动识别文件类型, 用用文件类型脚本,使用缩进定义文件
-
-
set
foldenable “允许折叠
-
set cursorline
“突出显示当前行
-
set
magic “设置魔术?神马东东
-
set ignorecase
“搜索忽略大小写
-
filetype on “打开文件类型检测功能
-
set background=dark
-
set t_Co=
256
“
256
色
-
set
mouse=a “允许鼠标
这一部分比上面的样式重要的多, 这里主要是讲插件的使用, 而这些插件大大增加了vim的性能.
我们的插件如果一个一个安装的话, 这可能会搞死你, 因此我们希望有一个能够自动安装和管理插件的插件.
这就是我们要说的vbundle, 可参考https://github.com/VundleVim/Vundle.vim.
安装非常简单:
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
然后我们来看看配置, 也非常简单.
-
set nocompatible
" be iMproved, required
-
filetype off "
required
-
-
" set the runtime path to include Vundle and initialize
-
set rtp+=~/.vim/bundle/Vundle.vim
-
call vundle#begin()
-
” alternatively, pass a
path
where Vundle should
install plugins
-
"call vundle#begin(’~/some/path/here’)
-
-
” let Vundle manage Vundle,
required
-
Plugin
‘VundleVim/Vundle.vim’
-
-
" All of your Plugins must be added before the following line
-
call vundle#end() "
required
-
filetype
plugin indent
on
" required
-
”
To
ignore
plugin indent changes, instead
use:
-
“filetype plugin on
-
”
-
” Brief help
-
” :PluginList - lists configured plugins
-
” :PluginInstall - installs plugins; append
!
to update or just :PluginUpdate
-
” :PluginSearch foo - searches
for foo; append
!
to refresh local
cache
-
” :PluginClean - confirms removal of unused plugins; append
!
to auto-approve removal
-
”
-
” see :h vundle for more details or wiki for FAQ
-
” Put your non-
Plugin
stuff
after this line
在vimrc中把上面的代贴在最前面即可.
我们需要添加插件的话, 只要在begin和end之间加入即可.
在begin和end之间加入
Plugin 'scrooloose/nerdtree’
输入命令
:PluginInstall
配置nerdtree:
-
let NERDTreeQuitOnOpen=1
“打开文件时关闭树
-
let NERDTreeShowBookmarks=1 “显示书签
配置快捷键:
-
let mapleader =
“,“
-
map
ne
:NERDTreeToggle
-
map
tl
:TlistToggle
-
nnoremap
ma
:set mouse=a
-
nnoremap
mu
:set mouse=
似乎有那么点意思!
安装方式:
Plugin ‘majutsushi/tagbar’
设置键:
nmap tb :TagbarToggle
似乎已经越来越接近我们想要的了.
这个插件就是给括号自动配对的.
Plugin ‘jiangmiao/auto-pairs’
安装插件:
Plugin ‘minibufexpl.vim’
配置插件
-
let g:miniBufExplMapWindowNavVim =
1
-
let g:miniBufExplMapWindowNavArrows =
1
-
let g:miniBufExplMapCTabSwitchBufs =
1
配置快捷键:
-
nmap
mmbe
:MiniBufExplorer
-
nmap
mmbc
:CMiniBufExplorer
-
nmap
mmbu
:UMiniBufExplorer
-
nmap
mmbt
:TMiniBufExplorer
功能类似于tagbar
安装:
Plugin ‘taglist.vim’
配置:
-
let Tlist_Use_Right_Window=1
"taglist 显示在右侧
-
let Tlist_Exit_OnlyWindow=1 “taglist 只剩下一个窗口时,自动关闭
-
let Tlist_File_Fold_Auto_Close=1
快捷键:
map tl :TlistToggle
nnoremap ev :vsplit $MYVIMRC
nnoremap sv :source $MYVIMRC
这个插件是用来自动添加注释的插件.
安装:
Plugin ‘scrooloose/nerdcommenter’
配置:
-
"使用语法高亮定义代码折叠
-
set
foldmethod=syntax
-
"打开文件是默认不折叠代码
-
set foldlevelstart=
99
zc 折叠
zC 对所在范围内所有嵌套的折叠点进行折叠
zo 展开折叠
zO 对所在范围内所有嵌套的折叠点展开
[z 到当前打开的折叠的开始处。]z 到当前打开的折叠的末尾处。
zj 向下移动。到达下一个折叠的开始处。关闭的折叠也被计入。
zk 向上移动到前一折叠的结束处。关闭的折叠也被计入。
安装:
-
Plugin
‘godlygeek/tabular’
-
Plugin
‘plasticboy/vim-markdown’
配置:
-
let g:vim_markdown_math =
1
-
let g:vim_markdown_frontmatter =
1
-
let g:vim_markdown_toml_frontmatter =
1
-
let g:vim_markdown_json_frontmatter =
1
YouCompleteMe:一个随键而全的、支持模糊搜索的、高速补全的插件。YCM 由 google 公司搜索项目组的软件工程师 Strahinja Val Markovic 所开发,YCM 后端调用 libclang(以获取AST,当然还有其他语言的语义分析库)、前端由 C++ 开发(以提升补全效 率)、外层由 python 封装(以成为 vim 插件),这是至今为止最强大也是
最难安装的插件之一, 有很多人都砸在这个插件上了, 我们来看看如何安装这个插件.
安装插件:
Plugin ‘Valloric/YouCompleteMe’
打开vim,输入:PluginInstall, vim会自动去从git上clone出项目, 把这个项目安装到项目目录上.
安装完毕后. 我们进入到插件目录
-
cd
~/.vim/
bundle
/YouCompleteMe/
-
./install.py --clang-completer
又是需要漫长的等待, 等他安装好.
在vimrc中配置YouCompleteMe:
-
let g:ycm_key_list_select_completion = [’<Down>’]
-
let g:ycm_key_list_previous_completion = [’
<Up>’]
-
let g:ycm_confirm_extra_conf=0 “关闭加载.ycm_extra_conf.py提示
-
let g:ycm_min_num_of_chars_for_completion=2 " 从第2个键入字符就开始罗列匹配项
-
let g:ycm_cache_omnifunc=0 " 禁止缓存匹配项,每次都重新生成匹配项
-
let g:ycm_seed_identifiers_with_syntax=1 " 语法关键字补全
-
” 在注释输入中也能补全
-
let g:ycm_complete_in_comments = 1
-
” 在字符串输入中也能补全
-
let g:ycm_complete_in_strings = 1
-
"注释和字符串中的文字也会被收入补全
-
let g:ycm_collect_identifiers_from_comments_and_strings = 0
-
let g:ycm_global_ycm_extra_conf = ‘~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py’
-
-
nnoremap
<F5> :YcmForceCompileAndDiagnostics
<CR>
-
nnoremap
<leader>lo :lopen
<CR> "open locationlist
-
nnoremap
<leader>lc :lclose
<CR> “close locationlist
-
inoremap
<leader>
<leader>
<C-x>
<C-o>“
-
inoremap
<leader>
<leader>
<C-x>
<C-o>
-
nnoremap
<leader>jd :YcmCompleter GoToDefinitionElseDeclaration
<CR>
完整配置文件如下:
-
set nocompatible
" be iMproved, required
-
filetype off "
required
-
-
" set the runtime path to include Vundle and initialize
-
set rtp+=~/.vim/bundle/Vundle.vim
-
call vundle#begin()
-
” alternatively, pass a
path
where Vundle should
install plugins
-
” call vundle#begin(’~/some/path/here’)
-
-
” let Vundle manage Vundle,
required
-
Plugin
‘VundleVim/Vundle.vim’
-
-
" nerdtree插件
-
Plugin ‘scrooloose/nerdtree’
-
-
” tagbar
-
Plugin
‘majutsushi/tagbar’
-
-
" auto pair
-
Plugin ‘jiangmiao/auto-pairs’
-
-
” mini buffer
-
Plugin
‘minibufexpl.vim’
-
-
" tag list
-
Plugin ‘taglist.vim’
-
-
” nerd
commit
-
Plugin
‘scrooloose/nerdcommenter’
-
-
" PHP mannual
-
Plugin ‘alvan/vim-php-manual’
-
-
” snippets mate
-
Plugin
'MarcWeber/vim-addon-mw-utils’
-
Plugin
'tomtom/tlib_vim’
-
Plugin
'garbas/vim-snipmate’
-
Plugin
‘honza/vim-snippets’
-
-
" markdown插件
-
Plugin 'godlygeek/tabular’
-
Plugin ‘plasticboy/vim-markdown’
-
-
” you
complete me插件
-
Plugin
‘Valloric/YouCompleteMe’
-
-
" All of your Plugins must be added before the following line
-
call vundle#end() "
required
-
filetype
plugin indent
on
" required
-
”
To
ignore
plugin indent changes, instead
use:
-
” filetype plugin on
-
-
” Brief
help
-
” :PluginList - lists configured plugins
-
” :PluginInstall - installs plugins; append
!
to
update
or just
-
” :PluginUpdate
-
” :PluginSearch foo - searches
for foo; append
!
to refresh local
cache
-
” :PluginClean - confirms removal of unused plugins; append
!
to auto-approve removal
-
-
” see :h vundle
for more details
or wiki
for FAQ
-
” Put your non-Plugin stuff after this line
-
-
set modelines=0
-
-
"设置更好的删除
-
set backspace=
2
-
-
syntax
on
"语法高亮
-
-
"用浅色高亮当前行
-
autocmd InsertLeave * se nocul
-
autocmd InsertEnter * se cul
-
-
set smartindent
"智能对齐
-
-
set autoindent "自动对齐
-
-
set
confirm
"在处理未保存或只读文件的时候,弹出确认框
-
-
set tabstop=4 "tab键的宽度
-
set softtabstop=
4
-
set shiftwidth=
4
"统一缩进为4
-
set expandtab "不要用空格替代制表符
-
-
set
number
"显示行号
-
set history=50 "历史纪录数
-
set hlsearch
-
set incsearch
"搜素高亮,搜索逐渐高亮
-
-
set gdefault "行内替换
-
set
encoding=utf
-8
-
set fileencodings=utf
-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936,utf
-16,big5,euc-jp,latin1
"编码设置
-
-
colorscheme molokai
-
-
set guifont=Menlo:h16:cANSI "设置字体
-
set langmenu=zn_CN.UTF
-8
-
set helplang=cn
"语言设置
-
-
set ruler "在编辑过程中,在右下角显示光标位置的状态行
-
-
set laststatus=
1
"总是显示状态行
-
-
set showcmd "在状态行显示目前所执行的命令,未完成的指令片段也会显示出来
-
-
set scrolloff=
3
"光标移动到buffer的顶部和底部时保持3行的距离
-
set showmatch "高亮显示对应的括号
-
set matchtime=
5
"对应括号高亮时间(单位是十分之一秒)
-
-
set wildmenu "增强模式中的命令行自动完成操作
-
-
set linespace=
2
"字符间插入的像素行数目
-
set whichwrap=b,s,<,>,[,] "开启
normal 或visual模式下的backspace键空格键,左右方向键,
insert或
replace模式下的左方向键,右方向键的跳行功能
-
-
filetype
plugin indent
on
"分为三部分命令:file on,file plugin on,file indent on 分别是自动识别文件类型, 用用文件类型脚本,使用缩进定义文件
-
-
-
syntax enable
-
set foldenable "允许折叠
-
set cursorline
"突出显示当前行
-
set magic "设置魔术?神马东东
-
set ignorecase
"搜索忽略大小写
-
filetype on "打开文件类型检测功能
-
set background=dark
-
set t_Co=
256
"256色
-
set mouse=a “允许鼠标
-
"使用语法高亮定义代码折叠
-
set foldmethod=syntax
-
”“打开文件是默认不折叠代码
-
set foldlevelstart=99”
-
-
" nerdtree 配置
-
let NERDTreeQuitOnOpen=1 "打开文件时关闭树
-
let NERDTreeShowBookmarks=
1
"显示书签
-