首页 > 代码库 > vim

vim

---恢复内容开始---

一、vim前期准备


安装vim
sudo apt-get install vim

 建立工作目录如下

技术分享

技术分享

二、vimrc配置

  vimrc的配置主要是依赖于pathogen.vim插件管理,在根目录建立 .vim 文件夹,然后在 .vim文件夹下建立三个文件夹:

  • autoload:自动加载pathogen.vim插件用
  • bundle:用于pathogen管理插件
  • doc:保存说明文档,可以不用

  如下图所示

  技术分享

  vim需要装ctag插件,ubuntu下安装的插件:sudo apt-get install ctag

  插件的下载基本上都是载github上,要先装上git工具。

  有些按键的映射不是很好,以后在使用过程中在调整

  YCM的安装比较复杂,可以查看github上YCM插件的说明文档进行安装,本来想全编译语言的,但是xbuild不知道怎么装和放在哪里,

github上也说明的不是很清晰,说明就没有全编译,还缺一个窗口整合插件,什么时候有空了,可以把Tlist,Tagbar,nerdtree插件窗口都整合下。

  1 map <F9> :call SaveInputData()<CR>
  2 func! SaveInputData()
  3     exec "tabnew"
  4     exec normal "+gP
  5     exec "w! /tmp/input_data"
  6 endfunc
  7 
  8 call pathogen#infect()
  9 "colorscheme torte
 10 "colorscheme murphy
 11 "colorscheme desert
 12 "colorscheme desert
 13 "colorscheme elflord
 14 colorscheme ron
 15 
 16 "set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
 17 "set termencoding=utf-8
 18 "set encoding=utf-8
 19 "set fileencodings=ucs-bom,utf-8,cp936
 20 "set fileencoding=utf-8
 21 
 22 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 23 " 显示相关
 24 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 25 set go=                                     " 不要图形按钮
 26 set cursorline                              "为光标所在行加下划线
 27 syntax on                                   " 语法高亮
 28 autocmd InsertLeave * se nocul              " 用浅色高亮当前行
 29 autocmd InsertEnter * se cul                " 用浅色高亮当前行
 30 set ruler                                   " 显示标尺
 31 set showcmd                                 " 输入的命令显示出来,看的清楚些
 32 set novisualbell                            " 不要闪烁(不明白)
 33 set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}   "状态行显示的内容
 34 ""set laststatus=1                            " 启动显示状态行(1)
 35 set laststatus=2
 36 set cmdheight=1                                " 命令行(在状态行下)的高度,默认为1
 37 set foldenable                              " 允许折叠
 38 set foldmethod=manual                       " 手动折叠
 39 set nocompatible                              "去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限
 40 
 41 " 显示中文帮助
 42 if version >= 603
 43     set helplang=cn
 44     set encoding=utf-8
 45 endif
 46 
 47 "colorscheme murphy                            " 设置配色方案
 48 
 49 "字体
 50 "if (has("gui_running"))
 51 "   set guifont=Bitstream\ Vera\ Sans\ Mono\ 10
 52 "endif
 53 
 54 " 空格切换模式
 55 nnoremap <space> :
 56 vnoremap <space> :
 57 
 58 ""cd" to change to open directory.
 59 let OpenDir=system("pwd")
 60 nmap <silent> <leader>cd :exe cd  . OpenDir<cr>:pwd<cr>
 61 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 62 """""新文件标题
 63 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 64 "新建.c,.h,.sh,.java文件,自动插入文件头
 65 autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()"
 66 ""定义函数SetTitle,自动插入文件头
 67 func SetTitle()
 68     "如果文件类型为.sh文件
 69     if &filetype == sh
 70         call setline(1,"\#########################################################################")
 71         call append(line("."), "\# File Name: ".expand("%"))
 72         call append(line(".")+1, "\# Author: ma6174")
 73         call append(line(".")+2, "\# mail: ma6174@163.com")
 74         call append(line(".")+3, "\# Created Time: ".strftime("%c"))
 75         call append(line(".")+4, "\#########################################################################")
 76         call append(line(".")+5, "\#!/bin/bash")
 77         call append(line(".")+6, "")
 78 ""    else
 79 ""        call setline(1, "/*************************************************************************")
 80 ""        call append(line("."), "    > File Name: ".expand("%"))
 81 ""        call append(line(".")+1, "    > Author: ma6174")
 82 ""        call append(line(".")+2, "    > Mail: ma6174@163.com ")
 83 ""        call append(line(".")+3, "    > Created Time: ".strftime("%c"))
 84 ""        call append(line(".")+4, " ************************************************************************/")
 85 ""        call append(line(".")+5, "")
 86     endif
 87     if &filetype == cpp
 88         call append(line(".")+6, "#include<iostream>")
 89         call append(line(".")+7, "using namespace std;")
 90         call append(line(".")+8, "")
 91     endif
 92     if &filetype == c
 93         call append(line(".")+6, "#include<stdio.h>")
 94         call append(line(".")+7, "")
 95     endif
 96     "    if &filetype == ‘java‘
 97     "        call append(line(".")+6,"public class ".expand("%"))
 98     "        call append(line(".")+7,"")
 99     "    endif
100     "新建文件后,自动定位到文件末尾
101     autocmd BufNewFile * normal G
102 endfunc
103 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
104 "键盘命令
105 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
106 
107 nmap <leader>w :w!<cr>
108 nmap <leader>f :find<cr>
109 
110 map <F8> :call Rungdb()<CR>                    "C,C++的调试
111 func! Rungdb()
112     exec "w"
113     exec "!g++ % -g -o %<"
114     exec "!gdb ./%<"
115 endfunc
116 
117 
118 
119 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
120 ""实用设置
121 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
122 set autoread                        " 设置当文件被改动时自动载入
123 autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr>         " quickfix模式
124 set completeopt=preview,menu         " 代码补全
125 set ai                              "自动缩进
126 set bs=2                            "在insert模式下用退格键删除
127 filetype plugin on                    " 允许插件
128 set clipboard+=unnamed                 " 共享剪贴板
129 set nobackup                        " 从不备份
130 :set makeprg=g++\ -Wall\ \ %        " make 运行
131 set autoread                        " 文件在Vim之外修改过,自动重新读入
132 set autowrite                        " 自动保存
133 set ruler                           " 打开状态栏标尺
134 set cursorline                      " 突出显示当前行
135 set magic                           " 设置魔术
136 set guioptions-=T                   " 隐藏工具栏
137 set guioptions-=m                   " 隐藏菜单栏
138 "set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\
139 " 设置在状态行显示的信息
140 set foldcolumn=0
141 set foldmethod=indent
142 set foldlevel=3
143 set foldenable                      " 开始折叠
144 set nocompatible                    " 不要使用vi的键盘模式,而是vim自己的
145 set syntax=on                        " 语法高亮
146 set noeb                            " 去掉输入错误的提示声音
147 set confirm                            " 在处理未保存或只读文件的时候,弹出确认
148 set autoindent                        " 自动缩进
149 set cindent
150 set tabstop=4                        " Tab键的宽度
151 set softtabstop=4                    " 统一缩进为4
152 set shiftwidth=4
153 set noexpandtab                        " 不要用空格代替制表符
154 set smarttab                        " 在行和段开始处使用制表符
155 set number                            " 显示行号
156 set history=1000                    " 历史记录数
157 set noswapfile
158 set ignorecase                        "搜索忽略大小写
159 set hlsearch                        "搜索逐字符高亮
160 set incsearch
161 set gdefault                        "行内替换
162 set enc=utf-8                        "编码设置
163 set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936
164 set langmenu=zh_CN.UTF-8            "语言设置
165 set helplang=cn
166 
167 filetype on                            " 侦测文件类型
168 filetype plugin on                    " 载入文件类型插件
169 filetype indent on                    " 为特定文件类型载入相关缩进文件
170 set viminfo+=!                        " 保存全局变量
171 set iskeyword+=_,$,@,%,#,-            " 带有如下符号的单词不要被换行分割
172 set linespace=0                        " 字符间插入的像素行数目
173 set wildmenu                        " 增强模式中的命令行自动完成操作
174 set backspace=2                        " 使回格键(backspace)正常处理indent, eol, start等
175 set whichwrap+=<,>,h,l                " 允许backspace和光标键跨越行边界
176 set mouse=a                            " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
177 set selection=exclusive
178 set selectmode=mouse,key
179 set report=0                        " 通过使用: commands命令,告诉我们文件的哪一行被改变过
180 set fillchars=vert:\ ,stl:\ ,stlnc:\    
181 " 在被分割的窗口间显示空白,便于阅读
182 
183 set showmatch                            " 高亮显示匹配的括号
184 set matchtime=1                            " 匹配括号高亮的时间(单位是十分之一秒)
185 set scrolloff=3                            " 光标移动到buffer的顶部和底部时保持3行距离
186 set smartindent                            " 为C程序提供自动缩进
187 au BufRead,BufNewFile *  setfiletype txt    " 高亮显示普通txt文件(需要txt.vim脚本)
188 "自动补全
189 "":inoremap ( ()<ESC>i
190 "":inoremap ) <c-r>=ClosePair())<CR>
191 ":inoremap { {<CR>}<ESC>O
192 ":inoremap } <c-r>=ClosePair(‘}‘)<CR>
193 "":inoremap [ []<ESC>i
194 "":inoremap ] <c-r>=ClosePair(])<CR>
195 ":inoremap ‘ ‘‘<ESC>i
196 ""function! ClosePair(char)
197 ""    if getline(.)[col(.) - 1] == a:char
198 ""        return "\<Right>"
199 ""    else
200 ""        return a:char
201 ""    endif
202 ""endfunction
203 ""filetype plugin indent on
204 "打开文件类型检测, 加了这句才可以用智能补全
205 set completeopt=longest,menu
206 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
207 
208 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
209 "" 插件设置
210 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
211 
212 " pathogen.vim            http://www.vim.org/scripts/script.php?script_id=2332
213 "                        https://github.com/tpope/vim-pathogen
214 " 插件管理器
215 " 新插件安装到bundle目录下后,如果插件中包含doc,则需要在Vim中运行:Helptags来生成在线帮助tags。
216 
217 
218 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
219 " NERDTree                https://github.com/scrooloose/nerdtree
220 " git clone https://github.com/scrooloose/nerdtree.git ~/.vim/bundle/nerdtree
221 " Then reload vim, run :helptags ~/.vim/bundle/nerdtree/doc/, and check out :help NERD_tree.txt
222 " NERDTree是Vim最常用的插件之一,可以在Vim运行时显示目录和文件结构,类似TextMate左侧的文件浏览器,
223 " 但操作起来更为方便,你可以在手不离开键盘的情况下快速浏览文件,并在文件和文件夹之间进行切换。
224 " 安装:
225 "     进入.vim/bundle目录
226 "   执行git clone git://github.com/scrooloose/nerdtree.git
227 "   下载完成后,在bundle下会多出一个nerdtree的文件夹,所有相关插件都在该文件夹下
228 "   在Vim中运行:Helptags来生成NERDTree的在线帮助tags
229 "NERDtee设定
230 let NERDTreeHighlightCursorline=1
231 let NERDTreeIgnore=[ \.pyc$, \.pyo$, \.obj$, \.o$, \.so$, \.egg$, ^\.git$, ^\.svn$, ^\.hg$ ]
232 let NERDChristmasTree=1
233 let NERDTreeAutoCenter=1
234 let NERDTreeBookmarksFile=$VIM.\Data\NerdBookmarks.txt
235 let NERDTreeMouseMode=2
236 let NERDTreeShowBookmarks=1
237 let NERDTreeShowFiles=1
238 let NERDTreeShowHidden=1
239 let NERDTreeShowLineNumbers=1
240 let NERDTreeWinPos=left
241 let NERDTreeWinSize=25
242 let g:NERDTreeQuitOnOpen=1
243 autocmd vimenter * NERDTree
244 autocmd StdinReadPre * let s:std_in=1
245 autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
246 autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif
247 
248 "nnoremap f :NERDTreeToggle
249 "map <F2> :NERDTree<CR>
250 ""nmap  <F2> :NERDTreeToggle<cr>
251 
252 " tagbar
253 "     tagbar按作用域归类不同的标签。按名字空间 n_foo、类 Foo
254 "   进行归类,在内部有声明、有定义;
255 "   显示标签类型。名字空间、类、函数等等;
256 "   显示完整函数原型;
257 "   图形化显示共有成员(+)、私有成员(-)、保护成员(#);
258 let g:tagbar_autofocus = 1
259 nmap <F3> :TagbarToggle<CR>
260 
261 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
262 " Command-T                https://wincent.com/products/command-t
263 "                        http://www.vim.org/scripts/script.php?script_id=3025
264 " git clone https://github.com/wincent/command-t.git bundle/command-t
265 " Command-T是一个基于Ruby和C扩展实现的快速文件浏览的插件,类似TextMate的Go to File(Command+T呼出)功能,
266 " 或Eclipse的Open Resource(Command+Shift+r)功能,可以通过模糊匹配快速定位并打开文件。
267 " 安装
268 "    1.从下载地址下载最新版本的vba文件,目前最新版本是1.4,所以安装文件是command-t-1.4.vba
269 "    2.在~/.vim/bundle目录下创建文件夹command-t
270 "    3.用Vim打开command-t-1.4.vba
271 "    4.执行:UseVimball ~/.vim/bundle/command-t
272 "    5.安装zlib1g和zlib1g-dev,ruby,ruby-dev
273 "   5.进入ruby目录下编译C扩展
274 "        cd ~/.vim/bundle/command-t/ruby/command-t
275 "        ruby extconf.rb
276 "        make
277 " :call pathogen#helptags()
278 " 使用说明
279 "    输入:CommandT可进入文件快速定位功能
280 "    1.ctrl+j/k 上下选择文件,选中后回车打开文件
281 "   2.ctrl+t 以tab方式打开文件
282 "    3.ctrl+s/v 可以水平或垂直分割窗口打开文件
283 "    4.ctrl+c 退出该模式
284 "    该插件还有个常用命令,:CommandTBuffer,可以浏览缓冲区的文件,并重新打开。操作方式同上。
285 " 注意事项
286 "    Vim版本需要支持ruby扩展。我们可以在Vim中输入:ruby 1检查,
287 "    如果出现E319: Sorry, the command is not available in this version就表示不支持。
288 "    如果出现上述情况,我们就需要自己去编译能够支持ruby的Vim,嫌麻烦的话可以直接安装vim-nox,
289 "    自带Ruby支持,在Ubuntu下安装命令如下:sudo apt-get install vim-nox。
290 "    执行ruby extconf.rb命令时如果出现找不到mkmf包的情况,说明你需要安装ruby-dev的包,
291 "    在Ubuntu下安装命令如下:sudo apt-get install ruby1.8-dev。
292 let g:CommandTMaxFiles=20000
293 nmap <F4> :CommandT<CR>
294 
295 
296 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
297 " Powerline                https://github.com/Lokaltog/vim-powerline
298 " 功能说明
299 "    Powerline是Vim的一个非常漂亮的状态栏插件,安装了Powerline之后,Vim底部将会出现一个增强型状态栏,
300 "    当Vim处于NORMAL、INSERT、BLOCK等状态时,状态栏会呈现不同的颜色,同时状态栏还会显示当前编辑文件
301 "    的格式(uft-8等)、文件类型(java、xml等)和光标位置等
302 " 安装
303 "    进入.vim/bundle目录
304 "    执行git clone git://github.com/Lokaltog/vim-powerline.git
305 "    将文件解压得到的autoload、doc、plugin和fontpatcher文件夹放到~/Vim/Vim73/bundler目录下,
306 "    往_vimrc文件中增加下面配置即可
307  "powerline{
308  set encoding=utf-8
309  set fillchars+=stl:\ ,stlnc:310 "set -g default-terminal "screen-256color"
311  set guifont=PowerlineSymbols\ for\ Powerline
312  set nocompatible
313  set t_Co=256
314  let g:Powerline_symbols = fancy
315  "}
316 
317  """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
318 " ctags                    http://ctags.sourceforge.net
319 " 通过ctags -R命令可以对当前目录下源代码中的类、函数、方法、变量、宏等元素进行索引处理,并生成索引文件。
320 " Vim使用ctags生成的tag文件,即可实现IDE中常用的代码跳转功能,实乃居家旅行代码索引的常备利器。
321 " ctags不仅支持c/c++/java等静态语言,还支持python/perl/php/jsp等动态脚本语言
322 " 对于Ubuntu,可以使用如下命令安装:sudo apt-get install ctags,安装完成后在终端键入ctags --help,
323 " 看到正常的帮助信息就说明安装成功了。
324 " 创建标签索引
325 "    使用ctags -R即可对当前目录下的代码递归建立索引文件,文件保存在当前目录下,默认文件名为tags,文
326 "    件大小和你要索引的代码量有关。
327 "    如果想自己指定tag文件的位置和索引代码的位置,可以使用如下命令实现:
328 "        ctags -R -o ~/.vim/ctags/pythontags /somepythondir/
329 " 设置索引文件的位置:
330 "    Vim在运行过程中需要知道tag的索引文件位置,如果不指定的话,Vim会在当前目录下寻找名为tags的文件作为tag索引文件。
331 "    如果想使用某个目录下的索引文件,在该目录下启动Vim即可。也可以在启动后通过如下命令设置或改变索引文件的位置:
332 "        set tags=/home/xxx/xx/tags, xxxx/tags,......
333 "    也可以把这条命令写到.vimrc中
334 " 在Vim中使用tag:
335 "     ctags主要对源代码中的类、方法、变量等元素进行了索引,所以,如果我们记得某个类名、方法名或变量名,
336 "    想在命令行下直接打开隐藏在重重叠叠的目录深处的某个文件时,以下命令可以帮助我们实现这个功能:
337 "        vim -t class | method | variable
338 "    例如,你想打开包含了loadCache方法的文件,可以用如下命令:
339 "        vim -t loadCache
340 "    如果多个文件中包含loadCache方法,vim会按照字母顺利打开第一个文件。想查看其他文件,可以使用ts命令,
341 "    :ts会列出所有包含loadCache标签的文件,输入文件序号可以打开文件并定位到loadCache标签,通过j和k可以上下滚屏。
342 "    如果只是通过vim命令打开文件,那么可以使用如下命令进行文件检索和浏览:
343 "        :ta tagname 跳转到标签tagname定义的地方
344 "        :stag tagname 在分割窗口中查看包含tagname的文件
345 "        :tags 查看到达当前位置所经过的标签路径
346 "        :ts tagname 列出匹配tagname的标签,如为空,则使用标签栈中最后的标签
347 "        :tf 跳转至第一个匹配的标签
348 "        :tl 跳转至最后一个匹配的标签
349 "    跳转快捷键:
350 "        ctrl-] :跳转至光标所在对象定义之处
351 "        ctrl-t :返回跳转前位置
352 "        [n]ctrl-t :[n]为数字,向回跳转n次;等价于重复n次ctrl-t操作
353 "递归查询tags
354 set tags+=/usr/include/tags
355 set tags+=./tags
356 map ta :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
357 
358 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
359 " taglist                https://github.com/vim-scripts/taglist.vim
360 "                        http://www.vim.org/scripts/script.php?script_id=273
361 "taglist参数介绍,大家可以根据自己的偏好在.vimrc中设置:
362 "    Tlist_Ctags_Cmd:设置ctags命令的位置
363 "    Tlist_Use_Horiz_Window:设置为1时,taglist窗口横向显示。默认纵向显示
364 "    Tlist_WinHeight:设置taglist窗口的宽度
365 "    Tlist_WinWidth:设置taglist窗口的高度
366 "    Tlist_Show_One_File:设置Tlist_Show_One_File为1则只显示当前文件的taglist,缺省显示多个文件中的tag
367 "    Tlist_Sort_Type:taglish默认按tag在文件中出现的顺序进行排序,设置为"name",taglist将以tag名字进行排序
368 "    Tlist_Exit_OnlyWindow:设置为1时,如果taglist是最后一个窗口,则退出vim
369 "    Tlist_Use_Right_Window:设置为1时,taglist窗口出现在右侧,缺省显示在左侧
370 "    Tlist_Auto_Open:如果想在启动VIM后自动打开taglist窗口,该参数设置为1
371 "    Tlist_Close_On_Select:如果想在选择了tag后自动关闭taglist窗口,该参数设置为1
372 "    Tlist_GainFocus_On_ToggleOpen:设置为1时,打开taglist光标保留在taglist窗口
373 " 当使用vim打开某个程序文件时,我们可以用:Tlist打开taglist窗口,如果该程序具备类、接口、属性等元素,
374 " 就会在taglist窗口显示出来。我们可以通过以下这些常用快捷键来操作taglist:
375 "    通过光标选择tag,回车可以跳到定义该tag的程序位置
376 "    选中tag时按空格键,会在状态栏下方显示该tag的完整定义
377 "    x,横向放大或缩小taglist窗口
378 "    =,折叠所有的tag
379 "    +,打开所有的tag
380 "    确认在.vimrc中使用Tlist_Ctags_Cmd定义了正确的ctags命令的位置,否则会出现找不到tag的错误信息。
381 "taglist{
382     let g:Tlist_Auto_Update = 1
383     let g:Tlist_Process_File_Always = 1
384     let g:Tlist_Auto_Highlight_Tag = 1
385     let g:Tlist_Enable_Fold_Column = 0
386     let g:Tlist_WinWidth = 25
387     let Tlist_Show_One_File = 1            "只显示当前文件的taglist,默认是显示多个
388     let Tlist_Exit_OnlyWindow = 1          "如果taglist是最后一个窗口,则退出vim
389     let Tlist_Use_Right_Window = 1         "在右侧窗口中显示taglist
390     let Tlist_GainFocus_On_ToggleOpen = 1  "打开taglist时,光标保留在taglist窗口
391     let Tlist_Ctags_Cmd=/user/bin/ctags  "设置ctags命令的位置
392 "    nnoremap <leader>tl : Tlist<CR>        "设置关闭和打开taglist窗口的快捷键tl
393 ""    nmap  <F3> :TlistToggle<cr>
394     autocmd vimenter * TlistToggle
395 "}
396 
397 
398 " minibufexpl.vim
399 " 多文件切换,也可使用鼠标双击相应文件名进行切换
400 " Commands ‘:MBEOpenAll‘, ‘:MBECloseAll‘ and ‘:MBEToggleAll‘ have been introduced to mani- pulate MBEs in all tab pags.
401 " command ‘:MBEbf‘ or ‘:MBEbb‘ could be used to cycle the buffer forwards or backwards in the most recently used order.
402 " Commnad ‘:MBEbd‘, ‘:MBEbw‘ or ‘:MBEbun‘ could be used to delete/wipeout/unload buffers just as ‘:bd‘, ‘:bw‘ or ‘:bun‘,
403 " but the window that previously holding them will be preserved.
404 let g:miniBufExplMapWindowNavVim    = 1
405 let g:miniBufExplMapWindowNavArrows = 1
406 let g:miniBufExplMapCTabSwitchBufs  = 1
407 let g:miniBufExplModSelTarget       = 1
408 "解决FileExplorer窗口变小问题
409 let g:miniBufExplForceSyntaxEnable = 1
410 let g:miniBufExplorerMoreThanOne=2
411 let g:miniBufExplCycleArround=1
412 " buffer 切换快捷键,默认方向键左右可以切换buffer
413 map <C-Tab> :MBEbn<cr>
414 map <C-S-Tab> :MBEbp<cr>
415 
416 
417 " ctrlp         文件搜索
418 " CtrlP会沿着vim打开的目录一直向上查找类似.git/.svn等这样的项目管理的目录,如果找到则将这个作为项目的根目录
419 " vimrc中配置如下:
420 " 打开ctrlp搜索
421 let g:ctrlp_map = <c-p>
422 let g:ctrlp_cmd = CtrlP
423 " 相当于mru功能,show recently opened files
424 map <leader>fp :CtrlPMRU<CR>
425 let g:ctrlp_custom_ignore = {
426     \ dir:  \v[\/]\.(git|hg|svn|rvm)$,
427     \ file: \v\.(exe|so|dll|zip|tar|tar.gz)$,
428     \ }
429 let g:ctrlp_working_path_mode=0
430 let g:ctrlp_match_window_bottom=1
431 let g:ctrlp_max_height=15
432 let g:ctrlp_match_window_reversed=0
433 let g:ctrlp_mruf_max=500
434 let g:ctrlp_follow_symlinks=1
435 
436 
437 " rainbow_parentheses.vim        括号匹配高亮
438 " 括号显示增强 vimrc中配置如下:
439 let g:rbpt_colorpairs = [
440     \ [brown,       RoyalBlue3],
441     \ [Darkblue,    SeaGreen3],
442     \ [darkgray,    DarkOrchid3],
443     \ [darkgreen,   firebrick3],
444     \ [darkcyan,    RoyalBlue3],
445     \ [darkred,     SeaGreen3],
446     \ [darkmagenta, DarkOrchid3],
447     \ [brown,       firebrick3],
448     \ [gray,        RoyalBlue3],
449     \ [black,       SeaGreen3],
450     \ [darkmagenta, DarkOrchid3],
451     \ [Darkblue,    firebrick3],
452     \ [darkgreen,   RoyalBlue3],
453     \ [darkcyan,    SeaGreen3],
454     \ [darkred,     DarkOrchid3],
455     \ [red,         firebrick3],
456     \ ]
457 let g:rbpt_max = 40
458 let g:rbpt_loadcmd_toggle = 0
459 au VimEnter * RainbowParenthesesToggle
460 au Syntax * RainbowParenthesesLoadRound
461 au Syntax * RainbowParenthesesLoadSquare
462 au Syntax * RainbowParenthesesLoadBraces
463 
464 
465 " vim-indent-guides            可视化缩进
466 " 可视化的方式能将相同缩进的代码关联起来。 显可视化缩进,示对齐线。
467 " vimrc中配置如下:
468 let g:indent_guides_enable_on_vim_startup = 0  " 默认关闭
469 let g:indent_guides_guide_size            = 1  " 指定对齐线的尺寸
470 let g:indent_guides_start_level          = 2  " 从第二层开始可视化显示缩进
471 autocmd VimEnter,Colorscheme * :hi IndentGuidesOdd  guibg=red   ctermbg=3
472 autocmd VimEnter,Colorscheme * :hi IndentGuidesEven guibg=green ctermbg=4
473 " \ig 打开/关闭 vim-indent-guides
474 
475 
476 " vim-trailing-whitespace        标志无效空格
477 " 将代码行最后无效的空格标红
478 map <leader><space> :FixWhitespace<cr>
479 "\+space去掉末    尾空格
480 
481 
482 " vim-easymotion            快速移动
483 map <leader><space> :FixWhitespace<cr>
484 " \+space去掉末尾空格
485 
486 " matchit.zip            括号匹配跳转
487 " 匹配成对的标签,在()、""、甚至HTML标签之间快速跳转,快捷键为%
488 
489 
490 " YouCompleteMe                自动补全
491 " vim 7.3.598以上,vim支持python2脚本
492 " 查看vim版本和python版本    vim --version | grep python
493 " 安装环境:
494 "        sudo apt-get install build-essential cmake
495 "        sudo apt-get install python-dev python3-dev
496 " 下载llvm:  sudo apt-get install llvm
497 " 下载clang: sudo apt-get install clang
498 "             sudo apt-get install libclang
499 " clang -v  检查是否安装成功
500 " 下载clang支持库:
501 " 下载插件:git clone https://github.com/Valloric/YouCompleteMe.git
502 " 进入插件:cd YouCompleteMe
503 " git submodule update --init --recursive
504 " ./install.sh --clang-completer
505 " cp ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py ~/.vim/bundle/YouCompleteMe/
506 " 编辑~/.vimrc:
507 let g:ycm_global_ycm_extra_conf=~/.vim/bundle/YouCompleteMe/.ycm_extra_conf.py
508 set completeopt=longest,menu
509 "让Vim的补全菜单行为与一般IDE一致"
510 autocmd InsertLeave * if pumvisible() == 0|pclose|endif    "离开插入模式后自动关闭预览窗口
511 inoremap <expr> <CR>       pumvisible() ? "\<C-y>" : "\<CR>"
512 "回车即选中当前项
513 
514 "上下左右键的行为 会显示其他信息
515 inoremap <expr> <Down>     pumvisible() ? "\<C-n>" : "\<Down>"
516 inoremap <expr> <Up>       pumvisible() ? "\<C-p>" : "\<Up>"
517 inoremap <expr> <PageDown> pumvisible() ? "\<PageDown>\<C-p>\<C-n>" : "\<PageDown>"
518 inoremap <expr> <PageUp>   pumvisible() ? "\<PageUp>\<C-p>\<C-n>" : "\<PageUp>"
519 "youcompleteme  默认tab  s-tab 和自动补全冲突
520 let g:ycm_key_list_select_completion = [<Down>]
521 let g:ycm_key_list_previous_completion = [<Up>]
522 let g:ycm_confirm_extra_conf=0 "关闭加载.ycm_extra_conf.py提示
523 let g:ycm_collect_identifiers_from_tags_files=1    " 开启 YCM 基于标签引擎
524 let g:ycm_min_num_of_chars_for_completion=2    " 从第2个键入字符就开始罗列匹配项
525 let g:ycm_cache_omnifunc=0    " 禁止缓存匹配项,每次都重新生成匹配项
526 let g:ycm_seed_identifiers_with_syntax=1    " 语法关键字补全
527 nnoremap <F6> :YcmForceCompileAndDiagnostics<CR>
528 "force recomile with syntastic
529 
530 inoremap <leader><leader> <C-x><C-o>
531 
532 "在注释输入中也能补全
533 let g:ycm_complete_in_comments = 1
534 "在字符串输入中也能补全
535 let g:ycm_complete_in_strings = 1
536 "注释和字符串中的文字也会被收入补全
537 let g:ycm_collect_identifiers_from_comments_and_strings = 0
538 nnoremap <leader>jd :YcmCompleter GoToDefinitionElseDeclaration<CR>
539 " 跳转到定义处
540 
541 "实时语法检测
542 let g:syntastic_error_symbol = ?
543 let g:syntastic_warning_symbol = ?
544 let g:syntastic_check_on_open=1
545 let g:syntastic_enable_highlighting = 0
546 let g:syntastic_python_checkers=[pyflakes]
547 let g:syntastic_cpp_include_dirs = [/usr/include/]
548 let g:syntastic_cpp_remove_include_errors = 1
549 let g:syntastic_cpp_check_header = 1
550 let g:syntastic_cpp_compiler = clang++
551 let g:syntastic_cpp_compiler_options = -std=c++11 -stdlib=libstdc++
552 let g:syntastic_enable_balloons = 1
553 
554 " nerdcommenter        快速加减注释
555 " <leader>cc,注释当前选中文本,如果选中的是整行则在每行首添加//,如果选中一行的部分内容则在选中部分前后添加分别 /、/
556 " <leader>cu,取消选中文本块的注释
557 let NERDSpaceDelims = 1
558 
559 
560 "vim-surround 快速加环绕符
561 "配合使用增强版命令重复 [https://github.com/tpope/vim-repeat| pope/vim-repeat ]
562 
563 
564 " delimitMate        自动括号补全
565 " 自动补全单引号,双引号等
566 
567 
568 " tabular            代码对齐
569 " \bb                 按=号对齐代码 [Tabular插件]
570 nmap <leader>bb :Tab /=<CR>
571 " \bn                 自定义对齐    [Tabular插件]
572 nmap <leader>bn :Tab /
573 
574 
575 " syntastic            静态代码分析
576 " 在 syntastic 的作用下,编码中、编译前,所有语法错误都将被抓出来
577 let g:syntastic_python_checkers=[pyflakes]
578 set statusline+=%#warningmsg#
579 set statusline+=%{SyntasticStatuslineFlag()}
580 set statusline+=%*
581 let g:syntastic_always_populate_loc_list = 1
582 let g:syntastic_auto_loc_list = 1
583 let g:syntastic_check_on_open = 1
584 let g:syntastic_check_on_wq = 0
585 nnoremap <silent> <C-d> :lclose<CR>:bdelete<CR>
586 cabbrev <silent> bd <C-r>=(getcmdtype()==#: && getcmdpos()==1 ? lclose\|bdelete : bd)<CR>
587 let g:syntastic_quiet_messages = { "type": "style" }
588 
589 " TaskList.vim        快速跳转到TODO列表
590 " 查看并快速跳转到代码中的TODO列表。
591 map <leader>td <Plug>TaskList
592 
593 
594 " vim-multiple-cursors        多光标批量操作
595 let g:multi_cursor_start_key=<F6>
596 let g:multi_cursor_use_default_mapping=0
597 let g:multi_cursor_next_key=<C-m>
598 let g:multi_cursor_prev_key=<C-p>
599 let g:multi_cursor_skip_key=<C-x>
600 let g:multi_cursor_quit_key=<Esc>
601 
602 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
603 " visualmark            http://www.vim.org/scripts/download_script.php?src_id=4700
604 " 使用vim打开一个文件,使用快捷键mm设置标签,通过F2和shift+F2可以上下切换浏览。
605 " 还需要修改,F2快捷键冲突修改??
606 
607 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
608 " C.vim                    http://www.vim.org/scripts/script.php?script_id=213
609 " C/C++语法插件
610 "call mmtemplates#config#Add ( ‘C‘, ‘/home/ubuntu/.vim/c-support/templates/doxygen.templates‘, ‘Doxygen‘, ‘ntd‘ )
611 "let  g:C_UseTool_cmake = ‘yes‘
612 "let  g:C_UseTool_doxygen = ‘yes‘
613 "let g:C_CreateMenusDelayed = ‘yes‘
614 
615 
616 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
617 " Man.vim        sudo apt-get install manpages-dev manpages-posix-dev
618 " 在vim命令模式下:Man 系统调用(如:Man strcpy)
619 " 如果说仅仅是需要显示man帮助信息,在vim里将光标移动到相应系统调用处按下shift+k即可显示,
620 " 这种方法的不足之处就是man帮助信息会覆盖原来的代码,而man.vim是将帮助信息和原来的代码分隔显示的。
621 source $VIMRUNTIME/ftplugin/man.vim
622 
623 
624 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
625 " plugin shortcuts
626 function! RunShell(Msg, Shell)
627     echo a:Msg . ...
628     call system(a:Shell)
629     echon done
630 endfunction
631 
632 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
633 " lookupfile:            http://www.vim.org/scripts/script.php?script_id=1581
634 " 查找文件
635 " Lookupfile插件还需要最新的genutils支持,因此,需要下载genutils:http://www.vim.org/scripts/script.php?script_id=197
636 
637 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

 


 

 

 

  

 

 

 

 

 

 

 

 

---恢复内容结束---

vim