Linux 配置 vimrc

    因爲熟悉了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中添加插件能夠參考這篇博客學習

http://blog.csdn.net/namecyf/article/details/7787479

相關文章
相關標籤/搜索