因爲熟悉了Windows下利用編譯器進行編程,因此在剛剛接觸Linux後的編程過程當中會感受其vim編譯器的各類不方便編寫程序,在逐漸的學習過程當中瞭解到能夠經過配置vimrc使得vim編譯時相似於VS。 html
首先咱們須要瞭解vimrc這個文件:vimrc有兩個版本,分別爲全局版本和用戶版本,經過在vi下命令模式下輸入【:version】會看到以下圖所示的內容
java
其中系統vimrc文件是全局版本即系統中的公共版本,對其配置後全部用戶下的vim編譯器均被配置,用戶vimrc文件是存在於每一個用戶的主目錄下的私有配置文件。
ios
瞭解這些之後就能夠開始配置本身喜歡的vim環境了
編程
切換至root用戶而後cd /etc目錄下輸入ll查看此目錄下的vimrc,並經過vim vimrc進入vimrc文件中,能夠看到裏面的內容以下
vim
ps:爲避免配置過程當中出錯,建議將vimrc文件中的內容備份,如cp vimrc temp.txtbash
如下是一些我在配置vimrc時選擇的配置文件,參考http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html這篇博客,若是你須要其餘配置功能能夠在網上查找app
1 set nu " 顯示行號 2 3 set go= " 不要圖形按鈕 4 5 color asmanian2 " 設置背景主題 6 7 set guifont=Courier_New:h10:cANSI " 設置字體 8 9 syntax on " 語法高亮 10 11 autocmd InsertLeave * se nocul " 用淺色高亮當前行 12 13 autocmd InsertEnter * se cul " 用淺色高亮當前行 14 15 set ruler " 顯示標尺 16 17 set showcmd " 輸入的命令顯示出來,看的清楚些 18 19 set cmdheight=1 " 命令行(在狀態行下)的高度,設置爲1 20 21 set scrolloff=3 " 光標移動到buffer的頂部和底部時保持3行距離 22 23 set novisualbell " 不要閃爍(不明白) 24 25 set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")} "狀態行顯示的內容 26 27 set laststatus=1 " 啓動顯示狀態行(1),老是顯示狀態行(2) 28 29 set foldenable " 容許摺疊 30 31 set foldmethod=manual " 手動摺疊 32 33 set background=dark "背景使用黑色 34 35 set nocompatible "去掉討厭的有關vi一致性模式,避免之前版本的一些bug和侷限 36 37 " 顯示中文幫助 38 39 if version >= 603 40 41 set helplang=cn 42 43 set encoding=utf-8 44 45 endif 46 47 " 設置配色方案 48 49 colorscheme evening 50 51 "字體 52 53 "if (has("gui_running")) 54 55 " set guifont=Bitstream\ Vera\ Sans\ Mono\ 10 56 57 "endif 58 59 60 61 set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936 62 63 set termencoding=utf-8 64 65 set encoding=utf-8 66 67 set fileencodings=ucs-bom,utf-8,cp936 68 69 set fileencoding=utf-8 70 71 72 73 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 74 75 """""新文件標題"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 76 77 "新建.c,.h,.sh,.java文件,自動插入文件頭 78 79 autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()" 80 81 ""定義函數SetTitle,自動插入文件頭 82 83 func SetTitle() 84 85 "若是文件類型爲.sh文件 86 87 if &filetype == 'sh' 88 89 call setline(1,"\#########################################################################") 90 91 call append(line("."), "\# File Name: ".expand("%")) 92 93 call append(line(".")+1, "\# Author: ma6174") 94 95 call append(line(".")+2, "\# mail: ma6174@163.com") 96 97 call append(line(".")+3, "\# Created Time: ".strftime("%c")) 98 99 call append(line(".")+4, "\#########################################################################") 100 101 call append(line(".")+5, "\#!/bin/bash") 102 103 call append(line(".")+6, "") 104 105 else 106 107 call setline(1, "/*************************************************************************") 108 109 call append(line("."), " > File Name: ".expand("%")) 110 111 call append(line(".")+1, " > Author: ma6174") 112 113 call append(line(".")+2, " > Mail: ma6174@163.com ") 114 115 call append(line(".")+3, " > Created Time: ".strftime("%c")) 116 117 call append(line(".")+4, " ************************************************************************/") 118 119 call append(line(".")+5, "") 120 121 endif 122 123 if &filetype == 'cpp' 124 125 call append(line(".")+6, "#include<iostream>") 126 127 call append(line(".")+7, "using namespace std;") 128 129 call append(line(".")+8, "") 130 131 endif 132 133 if &filetype == 'c' 134 135 call append(line(".")+6, "#include<stdio.h>") 136 137 call append(line(".")+7, "") 138 139 endif 140 141 "新建文件後,自動定位到文件末尾 142 143 autocmd BufNewFile * normal G 144 145 endfunc 146 147 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 148 149 "鍵盤命令 150 151 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 152 153 154 155 nmap <leader>w :w!<cr> 156 157 nmap <leader>f :find<cr> 158 159 160 161 " 映射全選+複製 ctrl+a 162 163 map <C-A> ggVGY 164 165 map! <C-A> <Esc>ggVGY 166 167 map <F12> gg=G 168 169 " 選中狀態下 Ctrl+c 複製 170 171 vmap <C-c> "+y 172 173 "去空行 174 175 nnoremap <F2> :g/^\s*$/d<CR> 176 177 "比較文件 178 179 nnoremap <C-F2> :vert diffsplit 180 181 "新建標籤 182 183 map <M-F2> :tabnew<CR> 184 185 "列出當前目錄文件 186 187 map <F3> :tabnew .<CR> 188 189 "打開樹狀文件目錄 190 191 map <C-F3> \be 192 193 "C,C++ 按F5編譯運行 194 195 map <F5> :call CompileRunGcc()<CR> 196 197 func! CompileRunGcc() 198 199 exec "w" 200 201 if &filetype == 'c' 202 203 exec "!g++ % -o %<" 204 205 exec "! ./%<" 206 207 elseif &filetype == 'cpp' 208 209 exec "!g++ % -o %<" 210 211 exec "! ./%<" 212 213 elseif &filetype == 'java' 214 215 exec "!javac %" 216 217 exec "!java %<" 218 219 elseif &filetype == 'sh' 220 221 :!./% 222 223 endif 224 225 endfunc 226 227 "C,C++的調試 228 229 map <F8> :call Rungdb()<CR> 230 231 func! Rungdb() 232 233 exec "w" 234 235 exec "!g++ % -g -o %<" 236 237 exec "!gdb ./%<" 238 239 endfunc 240 241 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 242 243 ""實用設置 244 245 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 246 247 " 設置當文件被改動時自動載入 248 249 set autoread 250 251 " quickfix模式 252 253 autocmd FileType c,cpp map <buffer> <leader><space> :w<cr>:make<cr> 254 255 "代碼補全 256 257 set completeopt=preview,menu 258 259 "容許插件 260 261 filetype plugin on 262 263 "共享剪貼板 264 265 set clipboard+=unnamed 266 267 "從不備份 268 269 set nobackup 270 271 "make 運行 272 273 :set makeprg=g++\ -Wall\ \ % 274 275 "自動保存 276 277 set autowrite 278 279 set ruler " 打開狀態欄標尺 280 281 set cursorline " 突出顯示當前行 282 283 set magic " 設置魔術 284 285 set guioptions-=T " 隱藏工具欄 286 287 set guioptions-=m " 隱藏菜單欄 288 289 "set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\ 290 291 " 設置在狀態行顯示的信息 292 293 set foldcolumn=0 294 295 set foldmethod=indent 296 297 set foldlevel=3 298 299 set foldenable " 開始摺疊 300 301 " 不要使用vi的鍵盤模式,而是vim本身的 302 303 set nocompatible 304 305 " 語法高亮 306 307 set syntax=on 308 309 " 去掉輸入錯誤的提示聲音 310 311 set noeb 312 313 " 在處理未保存或只讀文件的時候,彈出確認 314 315 set confirm 316 317 " 自動縮進 318 319 set autoindent 320 321 set cindent 322 323 " Tab鍵的寬度 324 325 set tabstop=4 326 327 " 統一縮進爲4 328 329 set softtabstop=4 330 331 set shiftwidth=4 332 333 " 不要用空格代替製表符 334 335 set noexpandtab 336 337 " 在行和段開始處使用製表符 338 339 set smarttab 340 341 " 顯示行號 342 343 set number 344 345 " 歷史記錄數 346 347 set history=1000 348 349 "禁止生成臨時文件 350 351 set nobackup 352 353 set noswapfile 354 355 "搜索忽略大小寫 356 357 set ignorecase 358 359 "搜索逐字符高亮 360 361 set hlsearch 362 363 set incsearch 364 365 "行內替換 366 367 set gdefault 368 369 "編碼設置 370 371 set enc=utf-8 372 373 set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936 374 375 "語言設置 376 377 set langmenu=zh_CN.UTF-8 378 379 set helplang=cn 380 381 " 個人狀態行顯示的內容(包括文件類型和解碼) 382 383 "set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")} 384 385 "set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%] 386 387 " 老是顯示狀態行 388 389 set laststatus=2 390 391 " 命令行(在狀態行下)的高度,默認爲1,這裏是2 392 393 set cmdheight=2 394 395 " 偵測文件類型 396 397 filetype on 398 399 " 載入文件類型插件 400 401 filetype plugin on 402 403 " 爲特定文件類型載入相關縮進文件 404 405 filetype indent on 406 407 " 保存全局變量 408 409 set viminfo+=! 410 411 " 帶有以下符號的單詞不要被換行分割 412 413 set iskeyword+=_,$,@,%,#,- 414 415 " 字符間插入的像素行數目 416 417 set linespace=0 418 419 " 加強模式中的命令行自動完成操做 420 421 set wildmenu 422 423 " 使回格鍵(backspace)正常處理indent, eol, start等 424 425 set backspace=2 426 427 " 容許backspace和光標鍵跨越行邊界 428 429 set whichwrap+=<,>,h,l 430 431 " 能夠在buffer的任何地方使用鼠標(相似office中在工做區雙擊鼠標定位) 432 433 set mouse=a 434 435 set selection=exclusive 436 437 set selectmode=mouse,key 438 439 " 經過使用: commands命令,告訴咱們文件的哪一行被改變過 440 441 set report=0 442 443 " 在被分割的窗口間顯示空白,便於閱讀 444 445 set fillchars=vert:\ ,stl:\ ,stlnc:\ 446 447 " 高亮顯示匹配的括號 448 449 set showmatch 450 451 " 匹配括號高亮的時間(單位是十分之一秒) 452 453 set matchtime=1 454 455 " 光標移動到buffer的頂部和底部時保持3行距離 456 457 set scrolloff=3 458 459 " 爲C程序提供自動縮進 460 461 set smartindent 462 463 " 高亮顯示普通txt文件(須要txt.vim腳本) 464 465 au BufRead,BufNewFile * setfiletype txt 466 467 "自動補全 468 469 :inoremap ( ()<ESC>i 470 471 :inoremap ) <c-r>=ClosePair(')')<CR> 472 473 :inoremap { {<CR>}<ESC>O 474 475 :inoremap } <c-r>=ClosePair('}')<CR> 476 477 :inoremap [ []<ESC>i 478 479 :inoremap ] <c-r>=ClosePair(']')<CR> 480 481 :inoremap " ""<ESC>i 482 483 :inoremap ' ''<ESC>i 484 485 function! ClosePair(char) 486 487 if getline('.')[col('.') - 1] == a:char 488 489 return "\<Right>" 490 491 else 492 493 return a:char 494 495 endif 496 497 endfunction 498 499 filetype plugin indent on 500 501 "打開文件類型檢測, 加了這句才能夠用智能補全 502 503 set completeopt=longest,menu 504 505 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 506 507 " CTags的設定 508 509 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 510 511 let Tlist_Sort_Type = "name" " 按照名稱排序 512 513 let Tlist_Use_Right_Window = 1 " 在右側顯示窗口 514 515 let Tlist_Compart_Format = 1 " 壓縮方式 516 517 let Tlist_Exist_OnlyWindow = 1 " 若是隻有一個buffer,kill窗口也kill掉buffer 518 519 let Tlist_File_Fold_Auto_Close = 0 " 不要關閉其餘文件的tags 520 521 let Tlist_Enable_Fold_Column = 0 " 不要顯示摺疊樹 522 523 autocmd FileType java set tags+=D:\tools\java\tags 524 525 "autocmd FileType h,cpp,cc,c set tags+=D:\tools\cpp\tags 526 527 "let Tlist_Show_One_File=1 "不一樣時顯示多個文件的tag,只顯示當前文件的 528 529 "設置tags 530 531 set tags=tags 532 533 "set autochdir 534 535 536 537 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 538 539 "其餘東東 540 541 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 542 543 "默認打開Taglist 544 545 let Tlist_Auto_Open=1 546 547 """""""""""""""""""""""""""""" 548 549 " Tag list (ctags) 550 551 """""""""""""""""""""""""""""""" 552 553 let Tlist_Ctags_Cmd = '/usr/bin/ctags' 554 555 let Tlist_Show_One_File = 1 "不一樣時顯示多個文件的tag,只顯示當前文件的 556 557 let Tlist_Exit_OnlyWindow = 1 "若是taglist窗口是最後一個窗口,則退出vim 558 559 let Tlist_Use_Right_Window = 1 "在右側窗口中顯示taglist窗口 560 561 " minibufexpl插件的通常設置 562 563 let g:miniBufExplMapWindowNavVim = 1 564 565 let g:miniBufExplMapWindowNavArrows = 1 566 567 let g:miniBufExplMapCTabSwitchBufs = 1 568 let g:miniBufExplModSelTarget = 1
關於設置配色方案colorscheme evening這個語句後面的evening能夠根據本身的喜愛配置,vim中自帶幾種配色方案以下:函數
下面是我配置的vim界面工具
若是你還須要在你的vim中添加插件能夠參考這篇博客學習