首页 > 代码库 > 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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。