我的vim配置(一)
废话少说,先上图。。。。
贴vim配置文件。位置在~/.vimrc
1 call pathogen#infect() 2 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 3 " 一般设定 4 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 5 " 显示中文帮助 6 source ~/.vim/macros/gdb_mappings.vim 7 "nmap <S-F7> :call SToggleGDB()<cr> 8 "nmap <F7> :call <SID>Toggle()<CR> 9 if version >= 603 10 11 set helplang=cn 12 13 set encoding=utf-8 14 15 endif 16 colorscheme slate 17 set guifont=Courier_New:h10:cANSI 18 " 设定默认解码 19 set fenc=utf-8 20 set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936 21 22 " 不要使用vi的键盘模式,而是vim自己的 23 set nocompatible 24 25 " history文件中需要记录的行数 26 set history=100 27 28 " 在处理未保存或只读文件的时候,弹出确认 29 set confirm 30 31 " 与windows共享剪贴板 32 set clipboard+=unnamed 33 34 " 侦测文件类型 35 filetype on 36 37 set cursorline " 突出显示当前行 38 39 " 载入文件类型插件 40 filetype plugin indent on 41 set completeopt=longest,menu 42 set nocp 43 filetype plugin on 44 45 " 为特定文件类型载入相关缩进文件 46 filetype indent on 47 48 " 保存全局变量 49 set viminfo+=! 50 51 " 带有如下符号的单词不要被换行分割 52 set iskeyword+=_,$,@,%,#,- 53 54 " 语法高亮 55 syntax on 56 57 " 高亮字符,让其不受100列限制 58 :highlight OverLength ctermbg=red ctermfg=white guibg=red guifg=white 59 :match OverLength '\%101v.*' 60 61 " 状态行颜色 62 highlight StatusLine guifg=SlateBlue guibg=Yellow 63 highlight StatusLineNC guifg=SlateBlue guibg=White 64 65 66 " 映射全选+复制 ctrl+a 67 map <C-A> ggVGY 68 map! <C-A> <Esc>ggVGY 69 map <F12> gg=G 70 " 选中状态下 Ctrl+c 复制 71 vmap <C-c> "+y 72 73 74 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 75 " 文件设置 76 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 77 " 不要备份文件(根据自己需要取舍) 78 set nobackup 79 80 " 不要生成swap文件,当buffer被丢弃的时候隐藏它 81 setlocal noswapfile 82 set bufhidden=hide 83 84 " 字符间插入的像素行数目 85 set linespace=0 86 87 " 增强模式中的命令行自动完成操作 88 set wildmenu 89 90 " 在状态行上显示光标所在位置的行号和列号 91 set ruler 92 set rulerformat=%20(%2*%<%f%=\ %m%r\ %3l\ %c\ %p%%%) 93 94 " 命令行(在状态行下)的高度,默认为1,这里是2 95 set cmdheight=2 96 97 " 使回格键(backspace)正常处理indent, eol, start等 98 set backspace=2 99 100 " 允许backspace和光标键跨越行边界 101 set whichwrap+=<,>,h,l 102 103 " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位) 104 set mouse=a 105 set selection=exclusive 106 set selectmode=mouse,key 107 108 "自动添加作者信息 109 map <F4> ms:call TitleDet()<cr>'s 110 111 function AddTitle() 112 call append(0,"/*======================================================================") 113 call append(1," * Author : kevin") 114 call append(2," * Filename : ".expand("%d:t")) 115 call append(3," * Creat time : ".strftime("%Y-%m-%d %H:%M")) 116 call append(4," * Description :") 117 call append(5,"========================================================================*/") 118 call append( 6,"#include <iostream>") 119 call append( 7,"#include <algorithm>") 120 call append( 8,"#include <cstdio>") 121 call append( 9,"#include <cstring>") 122 call append(10,"#include <queue>") 123 call append(11,"#include <cmath>") 124 call append(12,"#define M ") 125 call append(13,"using namespace std;") 126 call append(14,"int main(int argc,char *argv[])") 127 call append(15,"{") 128 call append(16," return 0;") 129 call append(17,"}") 130 131 echohl WarningMsg | echo "Successful in adding the copyright." | echohl None 132 133 endf 134 135 "更新最近修改时间和文件名 136 137 normal m' 138 139 "execute '/# *Last modified:/s@:.*$@\=strftime(":\t%Y-%m-%d %H:%M")@' 140 141 normal " 142 143 normal mk 144 145 "execute '/# *Filename:/s@:.*$@\=":\t\t".expand("%:t")@' 146 147 execute "noh" 148 149 normal 'k 150 151 "echohl WarningMsg | echo "\n" | echo "Successful in updating the copy right."| echohl None 152 153 "endfunction 154 155 156 157 "判断前10行代码里面,是否有Last modified这个单词, 158 159 "如果没有的话,代表没有添加过作者信息,需要新添加; 160 161 "如果有的话,那么只需要更新即可 162 163 function TitleDet() 164 165 let n=1 166 167 while n < 10 168 169 let line = getline(n) 170 171 if line =~'^\#\s*\S*Last\smodified:\S*.*$' 172 173 call UpdateTitle() 174 175 return 176 177 endif 178 179 let n = n + 1 180 181 endwhile 182 183 call AddTitle() 184 185 endfunction 186 187 188 " 设置NerdTree 189 map <F3> :NERDTreeMirror<CR> 190 map <F3> :NERDTreeToggle<CR> 191 192 set tags=/home/kevin/file/tags 193 194 "list{ 195 let Tlist_Auto_Open = 1 196 let Tlist_Show_One_File = 1 197 let Tlist_Use_Right_Window = 0 198 let Tlist_Exit_OnlyWindow = 1 199 let Tlist_GainFocus_On_ToggleOpen = 1 200 let Tlist_Ctags_Cmd='/usr/bin/ctags' 201 map <F2> :Tlist<CR> 202 "} 203 204 205 206 " 启动的时候不显示那个援助索马里儿童的提示 207 set shortmess=atI 208 209 " 通过使用: commands命令,告诉我们文件的哪一行被改变过 210 set report=0 211 212 " 不让vim发出讨厌的滴滴声 213 set noerrorbells 214 215 " 在被分割的窗口间显示空白,便于阅读 216 "set fillchars=vert:\ ,stl:\ ,stlnc:\ 217 "set fillchars=vert:| ,stl:| ,stlnc:| 218 219 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 220 " 搜索和匹配 221 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 222 " 高亮显示匹配的括号 223 set showmatch 224 225 " 匹配括号高亮的时间(单位是十分之一秒) 226 set matchtime=5 227 228 " 在搜索的时候忽略大小写 229 set ignorecase 230 231 " 不要高亮被搜索的句子(phrases) 232 set nohlsearch 233 234 "代码补全 235 set completeopt=preview,menu 236 237 " 在搜索时,输入的词句的逐字符高亮(类似firefox的搜索) 238 set incsearch 239 240 " 输入:set list命令是应该显示些啥? 241 set listchars=tab:\|\ ,trail:.,extends:>,precedes:<,eol:$ 242 243 " 光标移动到buffer的顶部和底部时保持3行距离 244 set scrolloff=3 245 246 " 不要闪烁 247 set novisualbell 248 249 " 我的状态行显示的内容(包括文件类型和解码) 250 set statusline=%F%m%r%h%w\[POS=%l,%v][%p%%]\%{strftime(\"%d/%m/%y\ -\ %H:%M\")} 251 252 " 总是显示状态行 253 set laststatus=2 254 255 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 256 " 文本格式和排版 257 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 258 " 自动格式化 259 set formatoptions=tcrqn 260 261 " 继承前一行的缩进方式,特别适用于多行注释 262 set autoindent 263 264 " 为C程序提供自动缩进 265 set smartindent 266 267 " 使用C样式的缩进 268 set cindent 269 270 " 制表符为4 271 set tabstop=4 272 273 " 统一缩进为4 274 set softtabstop=4 275 set shiftwidth=4 276 277 " 不要用空格代替制表符 278 set noexpandtab 279 280 " 不要换行 281 set nowrap 282 283 " 在行和段开始处使用制表符 284 set smarttab 285 286 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 287 " CTags的设定 288 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 289 " 按照名称排序 290 let Tlist_Sort_Type = "name" 291 292 " 在右侧显示窗口 293 "let Tlist_Use_Right_Window = 1 294 295 " 压缩方式 296 "let Tlist_Compart_Format = 1 297 298 " 如果只有一个buffer,kill窗口也kill掉buffer 299 let Tlist_Exist_OnlyWindow = 1 300 301 " 不要关闭其他文件的tags 302 let Tlist_File_Fold_Auto_Close = 0 303 304 " 不要显示折叠树 305 let Tlist_Enable_Fold_Column = 0 306 307 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 308 " Autocommands 309 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 310 " 只在下列文件类型被侦测到的时候显示行号,普通文本文件不显示 311 312 if has("autocmd") 313 autocmd FileType xml,html,c,cs,java,perl,shell,bash,cpp,python,vim,php,ruby set number 314 autocmd FileType xml,html vmap <C-o> <ESC>'<i<!--<ESC>o<ESC>'>o--> 315 autocmd FileType java,c,cpp,cs vmap <C-o> <ESC>'<o 316 autocmd FileType html,text,php,vim,c,java,xml,bash,shell,perl,python setlocal textwidth=100 317 autocmd Filetype html,xml,xsl source $VIMRUNTIME/plugin/closetag.vim 318 autocmd BufReadPost * 319 \ if line("'\"") > 0 && line("'\"") <= line("$") | 320 \ exe " normal g`\"" | 321 \ endif 322 endif "has("autocmd") 323 324 "C,C++ 按F5编译运行 325 326 map <F5> :call CompileRunGcc()<CR> 327 328 func! CompileRunGcc() 329 330 exec "w" 331 332 if &filetype == 'c' 333 334 exec "!g++ % -o %<" 335 336 exec "! ./%<" 337 338 elseif &filetype == 'cpp' 339 340 exec "!g++ % -o %<" 341 342 exec "! ./%<" 343 344 elseif &filetype == 'java' 345 346 exec "!javac %" 347 348 exec "!java %<" 349 350 elseif &filetype == 'sh' 351 352 :!./% 353 354 endif 355 356 endfunc 357 358 "C,C++的调试 359 360 map <F8> :call Rungdb()<CR> 361 362 func! Rungdb() 363 364 exec "w" 365 366 exec "!g++ % -g -o %<" 367 368 exec "!gdb ./%<" 369 370 endfunc 371 372 " 能够漂亮地显示.NFO文件 373 set encoding=utf-8 374 function! SetFileEncodings(encodings) 375 let b:myfileencodingsbak=&fileencodings 376 let &fileencodings=a:encodings 377 endfunction 378 function! RestoreFileEncodings() 379 let &fileencodings=b:myfileencodingsbak 380 unlet b:myfileencodingsbak 381 endfunction 382 383 au BufReadPre *.nfo call SetFileEncodings('cp437')|set ambiwidth=single au BufReadPost *.nfo call RestoreFileEncodings() 384 385 " 高亮显示普通txt文件(需要txt.vim脚本) 386 au BufRead,BufNewFile * setfiletype txt 387 388 " 用空格键来开关折叠 389 set foldenable 390 "set foldmethod=manual 391 set foldmethod=syntax " 设置实用语法方式折叠 392 nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc':'zo')<CR> 393 set foldnestmax=2 " 设置最大折叠深度 394 395 " minibufexpl插件的一般设置 396 let g:miniBufExplMapWindowNavVim = 1 397 let g:miniBufExplMapWindowNavArrows = 1 398 let g:miniBufExplMapCTabSwitchBufs = 1 399 let g:miniBufExplModSelTarget = 1 400 let g:neocomplcache_enable_at_startup = 1 "自动补全插件自动启动 401 "powerline{ 402 set guifont=PowerlineSymbols\ for\ Powerline 403 set nocompatible 404 set t_Co=256 405 set laststatus=2 406 set encoding=utf-8 407 let g:Powerline_symbols = 'unicode' 408 "} 409 410 411 "256 color 412 "let t_Co=256 413 "set nocompatible 414 "set laststatus=2 415 "set encoding=utf-8 416 "choose theme 417 "let g:Powerline_symbols = 'unicode' 418 419 420 421 inoremap ( ()<Esc>i 422 inoremap [ []<Esc>i 423 inoremap { {<CR>}<Esc>O 424 autocmd Syntax html,vim inoremap < <lt>><Esc>i| inoremap > <c-r>=ClosePair('>')<CR> 425 inoremap ) <c-r>=ClosePair(')')<CR> 426 inoremap ] <c-r>=ClosePair(']')<CR> 427 inoremap } <c-r>=CloseBracket()<CR> 428 inoremap " <c-r>=QuoteDelim('"')<CR> 429 inoremap ' <c-r>=QuoteDelim("'")<CR> 430 431 function ClosePair(char) 432 if getline('.')[col('.') - 1] == a:char 433 return "\<Right>" 434 else 435 return a:char 436 endif 437 endf 438 439 function CloseBracket() 440 if match(getline(line('.') + 1), '\s*}') < 0 441 return "\<CR>}" 442 else 443 return "\<Esc>j0f}a" 444 endif 445 endf 446 447 function QuoteDelim(char) 448 let line = getline('.') 449 let col = col('.') 450 if line[col - 2] == "\\" 451 "Inserting a quoted quotation mark into the string 452 return a:char 453 elseif line[col - 1] == a:char 454 "Escaping out of the string 455 return "\<Right>" 456 else 457 "Starting a string 458 return a:char.a:char."\<Esc>i" 459 endif 460 endf 461 462 "设定是否使用quickfix窗口来显示cscope结果{ 463 :set cscopequickfix=s-,c-,d-,i-,t-,e- 464 "} 465 466 if filereadable("Makefile") || filereadable("makefile") 467 set makeprg=make 468 else 469 set makeprg=g++\ %\ -Wall\ -g 470 endif 471 472 473 474 " 显示tab和空格 475 set list 476 " 设置tab和空格样式 477 set lcs=tab:\¦\ ,nbsp:%,trail:- 478 " 设定行首tab为灰色 479 highlight LeaderTab guifg=#666666 480 " 匹配行首tab 481 match LeaderTab /^\t/
先到这,有了配置文件,不怕更新系统把/home下文件改变了。
Do one thing , and do it well !