vim 配置
http://www.162cm.com/archives/906.html
vim 编码问题
http://blog.csdn.net/topgun38/article/details/8016227
用vim 转码
http://www.cnblogs.com/joeblackzqq/archive/2011/04/11/2012008.html
vim的自动补全
http://www.vim.org/scripts/script.php?script_id=2358
http://www.cnblogs.com/xuqiang/archive/2011/04/15/2016475.html
OmniCppComplete plugin安装步骤:http://blog.copyninja.info/2010/02/cc-auto-complete-for-vim.html
1. OmniCppComplete plugin for the vim
2. exuberant-ctags. (if you are using Debian based distro's you can use this command sudo apt-get install exuberant-ctags)
3. CPP STL source for ctags
我目前的vimrc
1 " All system-wide defaults are set in $VIMRUNTIME/debian.vim (usually just 2 " /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to :runtime 3 " you can find below. If you wish to change any of those settings, you should 4 " do it in this file (/etc/vim/vimrc), since debian.vim will be overwritten 5 " everytime an upgrade of the vim packages is performed. It is recommended to 6 " make changes after sourcing debian.vim since it alters the value of the 7 " 'compatible' option. 8 9 " This line should not be removed as it ensures that various options are 10 " properly set to work with the Vim-related packages available in Debian. 11 runtime! debian.vim 12 13 " Uncomment the next line to make Vim more Vi-compatible 14 " NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes numerous 15 " options, so any other options should be set AFTER setting 'compatible'. 16 "set compatible 17 18 " Vim5 and later versions support syntax highlighting. Uncommenting the next 19 " line enables syntax highlighting by default. 20 if has("syntax") 21 syntax on 22 endif 23 24 " If using a dark background within the editing area and syntax highlighting 25 " turn on this option as well 26 "set background=dark 27 28 " Uncomment the following to have Vim jump to the last position when 29 " reopening a file 30 "if has("autocmd") 31 " au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif 32 "endif 33 34 " Uncomment the following to have Vim load indentation rules and plugins 35 " according to the detected filetype. 36 "if has("autocmd") 37 " filetype plugin indent on 38 "endif 39 40 " The following are commented out as they cause vim to behave a lot 41 " differently from regular Vi. They are highly recommended though. 42 "set showcmd " Show (partial) command in status line. 43 "set showmatch " Show matching brackets. 44 "set ignorecase " Do case insensitive matching 45 "set smartcase " Do smart case matching 46 "set incsearch " Incremental search 47 "set autowrite " Automatically save before commands like :next and :make 48 "set hidden " Hide buffers when they are abandoned 49 "set mouse=a " Enable mouse usage (all modes) 50 51 " Source a global configuration file if available 52 if filereadable("/etc/vim/vimrc.local") 53 source /etc/vim/vimrc.local 54 endif 55 56 57 " An example for a vimrc file. 58 " 59 " Maintainer: a18ccms <a18ccms@gmail.com> 60 " Last change: 2010 03 12 61 " 62 " To use it, copy it to 63 " for Unix and OS/2: ~/.vimrc 64 " for Amiga: s:.vimrc 65 " for MS-DOS and Win32: $VIM\_vimrc 66 " for OpenVMS: sys$login:.vimrc 67 68 " When started as "evim", evim.vim will already have done these settings. 69 if v:progname =~? "evim" 70 finish 71 endif 72 73 set history=50 " keep 50 lines of command line history 74 set showcmd " display incomplete commands 75 76 " For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries 77 " let &guioptions = substitute(&guioptions, "t", "", "g") 78 79 " Don't use Ex mode, use Q for formatting 80 map Q gq 81 82 " Convenient command to see the difference between the current buffer and the 83 " file it was loaded from, thus the changes you made. 84 command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis 85 \ | wincmd p | diffthis 86 \ | wincmd p | diffthis 87 88 set guioptions-=T 89 90 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 91 " 一般设定 92 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 93 " 设定默认解码 94 set encoding=utf-8 95 set fileencodings=utf-8,chinese,latin-1 96 if has("win32") 97 set fileencoding=chinese 98 else 99 set fileencoding=utf-8 100 endif 101 language message zh_CN.utf-8 102 "解决菜单乱码 103 source $VIMRUNTIME/delmenu.vim 104 source $VIMRUNTIME/menu.vim 105 "set font 106 "set guifont=Nsimsun 107 108 "设置窗口大小 109 set lines=35 110 set columns=120 111 112 " 不要使用vi的键盘模式,而是vim自己的 113 "set nocompatible 114 115 " 在处理未保存或只读文件的时候,弹出确认 116 set confirm 117 118 " 与windows共享剪贴板 119 set clipboard+=unnamed 120 121 " 侦测文件类型 122 filetype on 123 124 " 载入文件类型插件 125 filetype plugin on 126 127 " 为特定文件类型载入相关缩进文件 128 filetype indent on 129 130 " 带有如下符号的单词不要被换行分割 131 set iskeyword+=_,$,@,%,#,- 132 133 " 语法高亮 134 syntax on 135 136 " 高亮字符,让其不受100列限制 137 ":highlight OverLength ctermbg=red ctermfg=white guibg=red guifg=white 138 ":match OverLength '\%101v.*' 139 140 " 状态行颜色 141 "highlight StatusLine guifg=SlateBlue guibg=Yellow 142 "highlight StatusLineNC guifg=Gray guibg=White 143 144 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 145 " 文件设置 146 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 147 " 不要备份文件(根据自己需要取舍) 148 set nobackup 149 150 " 不要生成swap文件,当buffer被丢弃的时候隐藏它 151 setlocal noswapfile 152 set bufhidden=hide 153 154 " 字符间插入的像素行数目 155 set linespace=0 156 157 " 增强模式中的命令行自动完成操作 158 set wildmenu 159 160 " 在状态行上显示光标所在位置的行号和列号 161 set ruler 162 set rulerformat=%20(%2*%<%f%=\ %m%r\ %3l\ %c\ %p%%%) 163 164 " 命令行(在状态行下)的高度,默认为1,这里是2 165 set cmdheight=2 166 167 " 使回格键(backspace)正常处理indent, eol, start等 168 set backspace=2 169 170 " 允许backspace和光标键跨越行边界 171 set whichwrap+=<,>,h,l 172 173 " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位) 174 set mouse=a 175 set selection=exclusive 176 set selectmode=mouse,key 177 178 " 启动的时候不显示那个援助索马里儿童的提示 179 set shortmess=atI 180 181 " 通过使用: commands命令,告诉我们文件的哪一行被改变过 182 set report=0 183 184 " 不让vim发出讨厌的滴滴声 185 set noerrorbells 186 187 " 在被分割的窗口间显示空白,便于阅读 188 set fillchars=vert:\ ,stl:\ ,stlnc:\ 189 190 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 191 " 搜索和匹配 192 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 193 " 高亮显示匹配的括号 194 set showmatch 195 196 " 匹配括号高亮的时间(单位是十分之一秒) 197 set matchtime=5 198 199 " 在搜索的时候忽略大小写 200 set ignorecase 201 202 " 高亮被搜索的句子(phrases) 203 set hlsearch 204 205 " 在搜索时,输入的词句的逐字符高亮(类似firefox的搜索) 206 set incsearch 207 208 " 输入:set list命令是应该显示些啥? 209 set listchars=tab:\|\ ,trail:.,extends:>,precedes:<,eol:$ 210 211 " 光标移动到buffer的顶部和底部时保持3行距离 212 set scrolloff=3 213 214 " 不要闪烁 215 set novisualbell 216 217 " 我的状态行显示的内容(包括文件类型和解码) 218 set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")} 219 220 " 总是显示状态行 221 set laststatus=2 222 223 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 224 " 文本格式和排版 225 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 226 " 自动格式化 227 set formatoptions=tcrqn 228 229 " 继承前一行的缩进方式,特别适用于多行注释 230 set autoindent 231 232 " 为C程序提供自动缩进 233 set smartindent 234 235 " 使用C样式的缩进 236 set cindent 237 238 " 制表符为4 239 set tabstop=4 240 241 " 统一缩进为4 242 set softtabstop=4 243 set shiftwidth=4 244 245 " 不要用空格代替制表符 246 set noexpandtab 247 248 " 不要换行 249 set nowrap 250 251 " 在行和段开始处使用制表符 252 set smarttab 253 254 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 255 " Autocommands 256 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 257 " 只在下列文件类型被侦测到的时候显示行号,普通文本文件不显示 258 259 if has("autocmd") 260 autocmd FileType xml,html,c,cs,java,perl,shell,bash,cpp,python,vim,php,ruby set number 261 autocmd FileType xml,html vmap <C-o> <ESC>'<i<!--<ESC>o<ESC>'>o--> 262 autocmd FileType java,c,cpp,cs vmap <C-o> <ESC>'<o 263 autocmd FileType html,text,php,vim,c,java,xml,bash,shell,perl,python setlocal textwidth=100 264 autocmd Filetype html,xml,xsl source $VIMRUNTIME/plugin/closetag.vim 265 autocmd BufReadPost * 266 \ if line("'\"") > 0 && line("'\"") <= line("$") | 267 \ exe "normal g`\"" | 268 \ endif 269 endif " has("autocmd") 270 271 "设置Java代码的自动补全 272 au FileType java setlocal omnifunc=javacomplete#Complete 273 274 let mapleader = "." 275 "绑定自动补全的快捷键<C-X><C-O>到<leader>; 276 imap <leader>; <C-X><C-O> 277 278 "设定开关Taglist插件的快捷键为F4,可以在VIM的左侧栏列出函数列表等 279 map <F4> :Tlist<CR> 280 281 "设置程序的编译运行和调试的快捷键F5,F6,Ctrl-F5 282 map <F5> :call CompileRun()<CR> 283 map <C-F5> :call Debug()<CR> 284 map <F6> :call Run()<CR> 285 286 "设置代码格式化快捷键F3 287 map <F3> :call FormartSrc()<CR> 288 289 "设置tab操作的快捷键,绑定:tabnew到<leader>t,绑定:tabn, :tabp到<leader>n, 290 "<leader>p 291 map <leader>t :tabnew<CR> 292 map <leader>n :tabn<CR> 293 map <leader>p :tabp<CR> 294 295 "用cscope支持 296 "set csprg=d:\bin\cscope 297 298 "使用<leader>e打开当前文件同目录中的文件 299 if has("unix") 300 map ,e :e <C-R>=expand("%:p:h") . "/" <CR> 301 else 302 map ,e :e <C-R>=expand("%:p:h") . "\" <CR> 303 endif 304 305 "定义CompileRun函数,用来调用进行编译和运行 306 func CompileRun() 307 exec "w" 308 "C程序 309 if &filetype == 'c' 310 exec "!del %<.exe" 311 exec "!gcc % -o %<.exe" 312 exec "!%<.exe" 313 elseif &filetype == 'cpp' 314 exec "!del %<.exe" 315 exec "!g++ % -o %<.exe" 316 exec "!%<.exe" 317 "Java程序 318 elseif &filetype == 'java' 319 exec "!del %<.class" 320 exec "!javac %" 321 exec "!java %<" 322 endif 323 endfunc 324 "结束定义CompileRun 325 326 "定义Run函数,用来调用进行编译和运行 327 func Run() 328 exec "w" 329 "C程序 330 if &filetype == 'c' 331 exec "!%<.exe" 332 elseif &filetype == 'cpp' 333 exec "!%<.exe" 334 "Java程序 335 elseif &filetype == 'java' 336 exec "!java %<" 337 endif 338 endfunc 339 "结束定义Run 340 341 "定义Debug函数,用来调试程序 342 func Debug() 343 exec "w" 344 "C程序 345 if &filetype == 'c' 346 exec "!del %<.exe" 347 exec "!gcc % -g -o %<.exe" 348 exec "!gdb %<.exe" 349 elseif &filetype == 'cpp' 350 exec "!del %<.exe" 351 exec "!g++ % -g -o %<.exe" 352 exec "!gdb %<.exe" 353 "Java程序 354 exec "!del %<.class" 355 elseif &filetype == 'java' 356 exec "!javac %" 357 exec "!jdb %<" 358 endif 359 endfunc 360 "结束定义Debug 361 "定义FormartSrc() 362 func FormartSrc() 363 exec "w" 364 "C程序,Perl程序,Python程序 365 if &filetype == 'c' 366 exec "!astyle --style=gnu --suffix=none %" 367 exec "e! %" 368 elseif &filetype == 'cpp' 369 exec "!astyle --style=gnu --suffix=none %" 370 exec "e! %" 371 elseif &filetype == 'perl' 372 exec "!astyle --style=gnu --suffix=none %" 373 exec "e! %" 374 elseif &filetype == 'py' 375 exec "!astyle --style=gnu --suffix=none %" 376 exec "e! %" 377 "Java程序 378 elseif &filetype == 'java' 379 exec "!astyle --style=java --suffix=none %" 380 exec "e! %" 381 elseif &filetype == 'jsp' 382 exec "!astyle --style=gnu --suffix=none %" 383 exec "e! %" 384 elseif &filetype == 'xml' 385 exec "!astyle --style=gnu --suffix=none %" 386 exec "e! %" 387 elseif &filetype == 'html' 388 exec "!astyle --style=gnu --suffix=none %" 389 exec "e! %" 390 391 elseif &filetype == 'htm' 392 exec "!astyle --style=gnu --suffix=none %" 393 exec "e! %" 394 395 endif 396 endfunc 397 "结束定义FormartSrc 398 399 " 能够漂亮地显示.NFO文件 400 set encoding=utf-8 401 function! SetFileEncodings(encodings) 402 let b:myfileencodingsbak=&fileencodings 403 let &fileencodings=a:encodings 404 endfunction 405 function! RestoreFileEncodings() 406 let &fileencodings=b:myfileencodingsbak 407 unlet b:myfileencodingsbak 408 endfunction 409 410 au BufReadPre *.nfo call SetFileEncodings('cp437')|set ambiwidth=single 411 au BufReadPost *.nfo call RestoreFileEncodings() 412 413 " 高亮显示普通txt文件(需要txt.vim脚本) 414 au BufRead,BufNewFile * setfiletype txt 415 416 " 用空格键来开关折叠 417 set foldenable 418 set foldmethod=manual 419 nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR> 420 421 "colo darkblue 422 set tags+=~/.vim/tags/cpp 423 set tags+=~/.vim/tags/gl 424 set tags+=~/.vim/tags/sdl 425 set tags+=~/.vim/tags/qt4 426 427 428 "自动补全 429 " 430 :inoremap ( ()<ESC>i 431 " 432 :inoremap ) <c-r>=ClosePair(')')<CR> 433 " 434 :inoremap { {<CR>}<ESC>O 435 " 436 :inoremap } <c-r>=ClosePair('}')<CR> 437 " 438 :inoremap [ []<ESC>i 439 " 440 :inoremap ] <c-r>=ClosePair(']')<CR> 441 " 442 :inoremap " ""<ESC>i 443 " 444 :inoremap ' ''<ESC>i 445 " 446 function! ClosePair(char) 447 if getline('.')[col('.') - 1] == a:char 448 return "\<Right>" 449 else 450 return a:char 451 endif 452 endfunction 453 454 set completeopt=longest,menu 455 456 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 457 458 " CTags的设定 459 " 460 " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 461 462 let Tlist_Sort_Type = "name" " 按照名称排序 463 464 let Tlist_Use_Right_Window = 1 " 在右侧显示窗口 465 466 let Tlist_Compart_Format = 1 " 压缩方式 467 468 let Tlist_Exist_OnlyWindow = 1 " 如果只有一个buffer,kill窗口也kill掉buffer 469 470 let Tlist_File_Fold_Auto_Close = 0 " 不要关闭其他文件的tags 471 472 let Tlist_Enable_Fold_Column = 0 " 不要显示折叠树 473 474 autocmd FileType java set tags+=D:\tools\java\tags 475 476 autocmd FileType h,cpp,cc,c set tags+=D:\tools\cpp\tags 477 478 let Tlist_Show_One_File=1 "不同时显示多个文件的tag,只显示当前文件的 479 480 ""设置tags 481 482 set tags=tags 483 484 "set autochdir 485 486 487 488 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 489 490 "其他东东 491 492 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 493 494 "默认打开Taglist 495 496 let Tlist_Auto_Open=1 497 498 """""""""""""""""""""""""""""" 499 500 " Tag list (ctags) 501 502 """""""""""""""""""""""""""""""" 503 504 let Tlist_Ctags_Cmd = '/usr/bin/ctags' 505 506 let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的 507 508 let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim 509 let TList_Use_Left_Window = 1
我的vimrc(二)
1 " All system-wide defaults are set in $VIMRUNTIME/debian.vim (usually just 2 " /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to :runtime 3 " you can find below. If you wish to change any of those settings, you should 4 " do it in this file (/etc/vim/vimrc), since debian.vim will be overwritten 5 " everytime an upgrade of the vim packages is performed. It is recommended to 6 " make changes after sourcing debian.vim since it alters the value of the 7 " 'compatible' option. 8 9 " This line should not be removed as it ensures that various options are 10 " properly set to work with the Vim-related packages available in Debian. 11 runtime! debian.vim 12 13 " Uncomment the next line to make Vim more Vi-compatible 14 " NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes numerous 15 " options, so any other options should be set AFTER setting 'compatible'. 16 "set compatible 17 18 " Vim5 and later versions support syntax highlighting. Uncommenting the next 19 " line enables syntax highlighting by default. 20 if has("syntax") 21 syntax on 22 endif 23 24 " If using a dark background within the editing area and syntax highlighting 25 " turn on this option as well 26 "set background=dark 27 28 " Uncomment the following to have Vim jump to the last position when 29 " reopening a file 30 "if has("autocmd") 31 " au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif 32 "endif 33 34 " Uncomment the following to have Vim load indentation rules and plugins 35 " according to the detected filetype. 36 "if has("autocmd") 37 " filetype plugin indent on 38 "endif 39 40 " The following are commented out as they cause vim to behave a lot 41 " differently from regular Vi. They are highly recommended though. 42 "set showcmd " Show (partial) command in status line. 43 "set showmatch " Show matching brackets. 44 "set ignorecase " Do case insensitive matching 45 "set smartcase " Do smart case matching 46 "set incsearch " Incremental search 47 "set autowrite " Automatically save before commands like :next and :make 48 "set hidden " Hide buffers when they are abandoned 49 "set mouse=a " Enable mouse usage (all modes) 50 51 " Source a global configuration file if available 52 if filereadable("/etc/vim/vimrc.local") 53 source /etc/vim/vimrc.local 54 endif 55 56 57 " An example for a vimrc file. 58 " 59 " Maintainer: a18ccms <a18ccms@gmail.com> 60 " Last change: 2010 03 12 61 " 62 " To use it, copy it to 63 " for Unix and OS/2: ~/.vimrc 64 " for Amiga: s:.vimrc 65 " for MS-DOS and Win32: $VIM\_vimrc 66 " for OpenVMS: sys$login:.vimrc 67 68 " When started as "evim", evim.vim will already have done these settings. 69 if v:progname =~? "evim" 70 finish 71 endif 72 73 set history=50 " keep 50 lines of command line history 74 set showcmd " display incomplete commands 75 76 " For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries 77 " let &guioptions = substitute(&guioptions, "t", "", "g") 78 79 " Don't use Ex mode, use Q for formatting 80 map Q gq 81 82 " Convenient command to see the difference between the current buffer and the 83 " file it was loaded from, thus the changes you made. 84 command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis 85 \ | wincmd p | diffthis 86 \ | wincmd p | diffthis 87 88 set guioptions-=T 89 90 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 91 " 一般设定 92 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 93 " 设定默认解码 94 set encoding=utf-8 95 set fileencodings=utf-8,chinese,latin-1 96 if has("win32") 97 set fileencoding=chinese 98 else 99 set fileencoding=utf-8 100 endif 101 language message zh_CN.utf-8 102 "解决菜单乱码 103 source $VIMRUNTIME/delmenu.vim 104 source $VIMRUNTIME/menu.vim 105 "set font 106 "set guifont=Nsimsun 107 108 "设置窗口大小 109 set lines=35 110 set columns=120 111 112 " 不要使用vi的键盘模式,而是vim自己的 113 "set nocompatible 114 115 " 在处理未保存或只读文件的时候,弹出确认 116 set confirm 117 118 " 与windows共享剪贴板 119 set clipboard+=unnamed 120 121 " 侦测文件类型 122 filetype on 123 124 " 载入文件类型插件 125 filetype plugin on 126 127 " 为特定文件类型载入相关缩进文件 128 filetype indent on 129 130 " 带有如下符号的单词不要被换行分割 131 set iskeyword+=_,$,@,%,#,- 132 133 " 语法高亮 134 syntax on 135 136 " 高亮字符,让其不受100列限制 137 ":highlight OverLength ctermbg=red ctermfg=white guibg=red guifg=white 138 ":match OverLength '\%101v.*' 139 140 " 状态行颜色 141 "highlight StatusLine guifg=SlateBlue guibg=Yellow 142 "highlight StatusLineNC guifg=Gray guibg=White 143 144 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 145 " 文件设置 146 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 147 " 不要备份文件(根据自己需要取舍) 148 set nobackup 149 150 " 不要生成swap文件,当buffer被丢弃的时候隐藏它 151 setlocal noswapfile 152 set bufhidden=hide 153 154 " 字符间插入的像素行数目 155 set linespace=0 156 157 " 增强模式中的命令行自动完成操作 158 set wildmenu 159 160 " 在状态行上显示光标所在位置的行号和列号 161 set ruler 162 set rulerformat=%20(%2*%<%f%=\ %m%r\ %3l\ %c\ %p%%%) 163 164 " 命令行(在状态行下)的高度,默认为1,这里是2 165 set cmdheight=2 166 167 " 使回格键(backspace)正常处理indent, eol, start等 168 set backspace=2 169 170 " 允许backspace和光标键跨越行边界 171 set whichwrap+=<,>,h,l 172 173 " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位) 174 set mouse=a 175 set selection=exclusive 176 set selectmode=mouse,key 177 178 " 启动的时候不显示那个援助索马里儿童的提示 179 set shortmess=atI 180 181 " 通过使用: commands命令,告诉我们文件的哪一行被改变过 182 set report=0 183 184 " 不让vim发出讨厌的滴滴声 185 set noerrorbells 186 187 " 在被分割的窗口间显示空白,便于阅读 188 set fillchars=vert:\ ,stl:\ ,stlnc:\ 189 190 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 191 " 搜索和匹配 192 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 193 " 高亮显示匹配的括号 194 set showmatch 195 196 " 匹配括号高亮的时间(单位是十分之一秒) 197 set matchtime=5 198 199 " 在搜索的时候忽略大小写 200 set ignorecase 201 202 " 高亮被搜索的句子(phrases) 203 set hlsearch 204 205 " 在搜索时,输入的词句的逐字符高亮(类似firefox的搜索) 206 set incsearch 207 208 " 输入:set list命令是应该显示些啥? 209 set listchars=tab:\|\ ,trail:.,extends:>,precedes:<,eol:$ 210 211 " 光标移动到buffer的顶部和底部时保持3行距离 212 set scrolloff=3 213 214 " 不要闪烁 215 set novisualbell 216 217 " 我的状态行显示的内容(包括文件类型和解码) 218 set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")} 219 220 " 总是显示状态行 221 set laststatus=2 222 223 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 224 " 文本格式和排版 225 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 226 " 自动格式化 227 set formatoptions=tcrqn 228 229 " 继承前一行的缩进方式,特别适用于多行注释 230 set autoindent 231 232 " 为C程序提供自动缩进 233 set smartindent 234 235 " 使用C样式的缩进 236 set cindent 237 238 " 制表符为4 239 set tabstop=4 240 241 " 统一缩进为4 242 set softtabstop=4 243 set shiftwidth=4 244 245 " 不要用空格代替制表符 246 set noexpandtab 247 248 " 不要换行 249 set nowrap 250 251 " 在行和段开始处使用制表符 252 set smarttab 253 254 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 255 " Autocommands 256 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 257 " 只在下列文件类型被侦测到的时候显示行号,普通文本文件不显示 258 259 if has("autocmd") 260 autocmd FileType xml,html,c,cs,java,perl,shell,bash,cpp,python,vim,php,ruby set number 261 autocmd FileType xml,html vmap <C-o> <ESC>'<i<!--<ESC>o<ESC>'>o--> 262 autocmd FileType java,c,cpp,cs vmap <C-o> <ESC>'<o 263 autocmd FileType html,text,php,vim,c,java,xml,bash,shell,perl,python setlocal textwidth=100 264 autocmd Filetype html,xml,xsl source $VIMRUNTIME/plugin/closetag.vim 265 autocmd BufReadPost * 266 \ if line("'\"") > 0 && line("'\"") <= line("$") | 267 \ exe "normal g`\"" | 268 \ endif 269 endif " has("autocmd") 270 271 "设置Java代码的自动补全 272 au FileType java setlocal omnifunc=javacomplete#Complete 273 274 let mapleader = "." 275 "绑定自动补全的快捷键<C-X><C-O>到<leader>; 276 imap <leader>; <C-X><C-O> 277 278 "设定开关Taglist插件的快捷键为F4,可以在VIM的左侧栏列出函数列表等 279 map <F4> <ESC>:Tlist<CR> 280 281 "设置程序的编译运行和调试的快捷键F5,F6,Ctrl-F5 282 map <F5> <ESC>:call CompileRun()<CR> 283 map <C-F5> <ESC>:call Debug()<CR> 284 map <F6> <ESC>:call Run()<CR> 285 286 "设置代码格式化快捷键F3 287 map <F3> <ESC>:call FormartSrc()<CR> 288 289 "NERDTree" 290 map <F2> <ESC>:exe 'NERDTreeToggle'<CR> 291 292 "设置tab操作的快捷键,绑定:tabnew到<leader>t,绑定:tabn, :tabp到<leader>n, 293 "<leader>p 294 map <leader>t :tabnew<CR> 295 map <leader>n :tabn<CR> 296 map <leader>p :tabp<CR> 297 298 "用cscope支持 299 "set csprg=d:\bin\cscope 300 301 "使用<leader>e打开当前文件同目录中的文件 302 if has("unix") 303 map ,e :e <C-R>=expand("%:p:h") . "/" <CR> 304 else 305 map ,e :e <C-R>=expand("%:p:h") . "\" <CR> 306 endif 307 308 "定义CompileRun函数,用来调用进行编译和运行 309 func CompileRun() 310 exec "w" 311 "C程序 312 if &filetype == 'c' 313 exec "!del %<.out" 314 exec "!gcc % -o %<.out" 315 exec "!./%<.out" 316 elseif &filetype == 'cpp' 317 exec "!del %<.out" 318 exec "!g++ % -o %<.out" 319 exec "!./%<.out" 320 "Java程序 321 elseif &filetype == 'java' 322 exec "!del %<.class" 323 exec "!javac %" 324 exec "!java %<" 325 endif 326 endfunc 327 "结束定义CompileRun 328 329 "定义Run函数,用来调用进行编译和运行 330 func Run() 331 exec "w" 332 "C程序 333 if &filetype == 'c' 334 exec "!%<.exe" 335 elseif &filetype == 'cpp' 336 exec "!%<.exe" 337 "Java程序 338 elseif &filetype == 'java' 339 exec "!java %<" 340 endif 341 endfunc 342 "结束定义Run 343 344 "定义Debug函数,用来调试程序 345 func Debug() 346 exec "w" 347 "C程序 348 if &filetype == 'c' 349 exec "!del %<.exe" 350 exec "!gcc % -g -o %<.exe" 351 exec "!gdb %<.exe" 352 elseif &filetype == 'cpp' 353 exec "!del %<.exe" 354 exec "!g++ % -g -o %<.exe" 355 exec "!gdb %<.exe" 356 "Java程序 357 exec "!del %<.class" 358 elseif &filetype == 'java' 359 exec "!javac %" 360 exec "!jdb %<" 361 endif 362 endfunc 363 "结束定义Debug 364 "定义FormartSrc() 365 func FormartSrc() 366 exec "w" 367 "C程序,Perl程序,Python程序 368 if &filetype == 'c' 369 exec "!astyle --style=gnu --suffix=none %" 370 exec "e! %" 371 elseif &filetype == 'cpp' 372 exec "!astyle --style=gnu --suffix=none %" 373 exec "e! %" 374 elseif &filetype == 'perl' 375 exec "!astyle --style=gnu --suffix=none %" 376 exec "e! %" 377 elseif &filetype == 'py' 378 exec "!astyle --style=gnu --suffix=none %" 379 exec "e! %" 380 "Java程序 381 elseif &filetype == 'java' 382 exec "!astyle --style=java --suffix=none %" 383 exec "e! %" 384 elseif &filetype == 'jsp' 385 exec "!astyle --style=gnu --suffix=none %" 386 exec "e! %" 387 elseif &filetype == 'xml' 388 exec "!astyle --style=gnu --suffix=none %" 389 exec "e! %" 390 elseif &filetype == 'html' 391 exec "!astyle --style=gnu --suffix=none %" 392 exec "e! %" 393 394 elseif &filetype == 'htm' 395 exec "!astyle --style=gnu --suffix=none %" 396 exec "e! %" 397 398 endif 399 endfunc 400 "结束定义FormartSrc 401 402 " 能够漂亮地显示.NFO文件 403 set encoding=utf-8 404 function! SetFileEncodings(encodings) 405 let b:myfileencodingsbak=&fileencodings 406 let &fileencodings=a:encodings 407 endfunction 408 function! RestoreFileEncodings() 409 let &fileencodings=b:myfileencodingsbak 410 unlet b:myfileencodingsbak 411 endfunction 412 413 au BufReadPre *.nfo call SetFileEncodings('cp437')|set ambiwidth=single 414 au BufReadPost *.nfo call RestoreFileEncodings() 415 416 " 高亮显示普通txt文件(需要txt.vim脚本) 417 au BufRead,BufNewFile * setfiletype txt 418 419 " 用空格键来开关折叠 420 set foldenable 421 set foldmethod=manual 422 nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR> 423 424 colo slate 425 set tags+=~/.vim/tags/cpp 426 set tags+=~/.vim/tags/gl 427 set tags+=~/.vim/tags/sdl 428 set tags+=~/.vim/tags/qt4 429 430 431 "自动补全 432 " 433 :inoremap ( ()<ESC>i 434 " 435 :inoremap ) <c-r>=ClosePair(')')<CR> 436 " 437 :inoremap { {<CR>}<ESC>O 438 " 439 :inoremap } <c-r>=ClosePair('}')<CR> 440 " 441 :inoremap [ []<ESC>i 442 " 443 :inoremap ] <c-r>=ClosePair(']')<CR> 444 " 445 :inoremap " ""<ESC>i 446 " 447 :inoremap ' ''<ESC>i 448 " 449 function! ClosePair(char) 450 if getline('.')[col('.') - 1] == a:char 451 return "\<Right>" 452 else 453 return a:char 454 endif 455 endfunction 456 457 set completeopt=longest,menu 458 459 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 460 461 " CTags的设定 462 " 463 " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 464 465 let Tlist_Sort_Type = "name" " 按照名称排序 466 467 let Tlist_Use_Right_Window = 1 " 在右侧显示窗口 468 469 let Tlist_Compart_Format = 1 " 压缩方式 470 471 let Tlist_Exist_OnlyWindow = 1 " 如果只有一个buffer,kill窗口也kill掉buffer 472 473 let Tlist_File_Fold_Auto_Close = 0 " 不要关闭其他文件的tags 474 475 let Tlist_Enable_Fold_Column = 0 " 不要显示折叠树 476 477 "autocmd FileType java set tags+=D:\tools\java\tags 478 479 "autocmd FileType h,cpp,cc,c set tags+=~/.vim/tags/cpp 480 481 482 " colo darkblue 483 set tags+=~/.vim/tags/c 484 set tags+=~/.vim/tags/cpp 485 set tags+=~/.vim/tags/gl 486 set tags+=~/.vim/tags/sdl 487 set tags+=~/.vim/tags/qt4 488 489 490 let Tlist_Show_One_File=1 "不同时显示多个文件的tag,只显示当前文件的 491 492 ""设置tags 493 494 set tags+=tags 495 496 "set autochdir 497 498 499 500 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 501 502 "其他东东 503 504 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 505 506 "默认打开Taglist 507 508 let Tlist_Auto_Open=1 509 510 """""""""""""""""""""""""""""" 511 512 " Tag list (ctags) 513 514 """""""""""""""""""""""""""""""" 515 let Tlist_Ctags_Cmd = '/usr/bin/ctags' 516 let Tlist_Show_One_File = 1 "不同时显示多个文件的tag,只显示当前文件的 517 518 let Tlist_Exit_OnlyWindow = 1 "如果taglist窗口是最后一个窗口,则退出vim 519 let TList_Use_Left_Window = 1 520 521 "Nerd_commenter" 522 map <F9> <leader>cc 523 map <F10> <leader>cu 524 525 526 "DoxygenToolkit" 527 map <F11> :Dox<CR> 528 let g:DoxygenToolkit_briefTag_pre="@Brief: " 529 let g:DoxygenToolkit_paramTag_pre="@Param: " 530 let g:DoxygenToolkit_returnTag_pre="@Returns: " 531 let g:DoxygenToolkit_authorName="Isaac_Li" 532 let g:DoxygenToolkit_briefTag_funcName="yes" 533 let g:Doxygen_enhanced_color=1 534 let g:DoxygenToolkit_blackHeader="====================================================" 535 let g:DoxygenToolkit_blackFooter="====================================================" 536 537 "Cscope" 538 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 539 " cscope setting 540 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 541 if has("cscope") 542 set csprg=/usr/local/bin/cscope 543 set csto=1 544 set cst 545 set nocsverb 546 " add any database in current directory 547 if filereadable("cscope.out") 548 cs add cscope.out 549 endif 550 set csverb 551 endif 552 553 nmap <C-@>s :cs find s <C-R>=expand("<cword>")<CR><CR> 554 nmap <C-@>g :cs find g <C-R>=expand("<cword>")<CR><CR> 555 nmap <C-@>c :cs find c <C-R>=expand("<cword>")<CR><CR> 556 nmap <C-@>t :cs find t <C-R>=expand("<cword>")<CR><CR> 557 nmap <C-@>e :cs find e <C-R>=expand("<cword>")<CR><CR> 558 nmap <C-@>f :cs find f <C-R>=expand("<cfile>")<CR><CR> 559 nmap <C-@>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR> 560 nmap <C-@>d :cs find d <C-R>=expand("<cword>")<CR><CR>