vimrc配置文件解析

1. Vim配置文件.vimrc

Vim編輯器相關的所有功能開關都可以通過.vimrc文件進行設置。
.vimrc配置文件分系統配置和用戶配置兩種。

系統vimrc配置文件存放在Vim的安裝目錄,默認路徑爲/usr/share/vim/.vimrc。可以使用命令echo $VIM來確定Vim的安裝目錄。

用戶vimrc文件,存放在用戶主目錄下~/.vimrc。可以使用命令echo $HOME確定用戶主目錄。

在系統命令行下,執行 vim --version 命令可以查看當前 Vim 所使用的配置文件的保存路徑,如下所示。

[root@liupeng /]# vim --version
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Apr  5 2012 10:17:30)
包含補丁: 1-411
修改者 <[email protected]>
編譯者 <[email protected]>
巨型版本 無圖形界面。  可使用(+)與不可使用(-)的功能:
+arabic +autocmd -balloon_eval -browse ++builtin_terms +byte_offset +cindent 
-clientserver -clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments 
+cryptv +cscope +cursorshape +dialog_con +diff +digraphs -dnd -ebcdic 
+emacs_tags +eval +ex_extra +extra_search +farsi +file_in_path +find_in_path 
+float +folding -footer +fork() +gettext -hangul_input +iconv +insert_expand 
+jumplist +keymap +langmap +libcall +linebreak +lispindent +listcmds +localmap 
+menu +mksession +modify_fname +mouse -mouseshape +mouse_dec +mouse_gpm 
-mouse_jsbterm +mouse_netterm -mouse_sysmouse +mouse_xterm +multi_byte 
+multi_lang -mzscheme -netbeans_intg -osfiletype +path_extra +perl +postscript 
+printer +profile +python +quickfix +reltime +rightleft -ruby +scrollbind 
+signs +smartindent -sniff +startuptime +statusline -sun_workshop +syntax 
+tag_binary +tag_old_static -tag_any_white -tcl +terminfo +termresponse 
+textobjects +title -toolbar +user_commands +vertsplit +virtualedit +visual 
+visualextra +viminfo +vreplace +wildignore +wildmenu +windows +writebackup 
-X11 -xfontset -xim -xsmp -xterm_clipboard -xterm_save 
     系統 vimrc 文件: "/etc/vimrc"
     用戶 vimrc 文件: "$HOME/.vimrc"
      用戶 exrc 文件: "$HOME/.exrc"
         $VIM 預設值: "/usr/share/vim"
編譯方式: gcc -c -I. -Iproto -DHAVE_CONFIG_H     -O2 -g -pipe -Wall  -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64  -D_FORTIFY_SOURCE=1    -D_REENTRANT -D_GNU_SOURCE  -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/usr/lib64/perl5/CORE  -I/usr/include/python2.6 -pthread   
鏈接方式: gcc   -Wl,-E -Wl,-rpath,/usr/lib64/perl5/CORE   -L/usr/local/lib -o vim       -lselinux  -lncurses -lacl -lgpm   -Wl,-E -Wl,-rpath,/usr/lib64/perl5/CORE  -fstack-protector  -L/usr/lib64/perl5/CORE -lperl -lresolv -lutil -lc -L/usr/lib64/python2.6/config -lpython2.6 -lutil -lm -Xlinker -export-dynamic    
[root@liupeng /]# 

注意:用戶配置文件優先於系統配置文件,Vim啓動時會優先讀取當前用戶根目錄下的.vimrc文件。所以與個人用戶相關的個性化配置一般都放在~/.vimrc中。

2. 常用配置詳解

"===================
"適合自己用的vimrc配置文件
"===================

"設置編碼
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8

"保存.vimrc文件時自動重啓加載,即讓此文件立即生效
autocmd BufWritePost $MYVIMRC source $MYVIMRC

"語法高亮
syntax on

"設置ruler會在右下角顯示光標所在的行號和列號,不方便查看,改成設置狀態欄顯示內容
"set ruler

"設置狀態行顯示的內容. %F: 顯示當前文件的完整路徑. %r: 如果readonly,會顯示[RO]
"%B: 顯示光標下字符的編碼值,十六進制. %l:光標所在的行號. %v:光標所在的虛擬列號.
"%P: 顯示當前內容在整個文件中的百分比. %H和%M是strftime()函數的參數,獲取時間.
set statusline=%F%r\ [HEX=%B][%l,%v,%P]\ %{strftime(\"%H:%M\")}

"顯示行號
set nu "等同於 set number

"突出顯示當前行
set cursorline "等同於 set cul

"突出顯示當前列
set cursorcolumn "等同於 set cuc

"共享剪貼板  
set clipboard+=unnamed 

"從不備份  
set nobackup

"自動保存
set autowrite

"隱藏工具欄
"set guioptions-=T
"隱藏菜單欄
"set guioptions-=m

"高亮顯示所有搜索到的內容.後面用map映射快捷鍵來方便關閉當前搜索的高亮.
"set hlsearch

"光標立刻跳轉到搜索到內容
"set incsearch

"搜索到最後匹配的位置後,再次搜索不回到第一個匹配處
"set nowrapscan

"去掉輸入錯誤時的提示聲音
set noeb

" 默認按下Esc後,需要等待1秒才生效,設置Esc超時時間爲100ms,儘快生效
set ttimeout
set ttimeoutlen=100

"在處理未保存或只讀文件的時候,彈出確認
set confirm

"讓Backspace鍵可以往前刪除字符.
"Debian系統自帶的vim版本會加載一個debian.vim文件,默認已經設置這一項,
"可以正常使用Backspace鍵.如果使用自己編譯的vim版本,並自行配置.vimrc文件,
"可能就沒有設置這一項,導致Backspace鍵用不了,或者時靈時不靈.所以主動配置.
"使回格鍵(backspace)正常處理indent, eol, start等
set backspace=indent,eol,start

"允許backspace和光標鍵跨越行邊界
"set whichwrap+=<,>,h,l

"去掉有關vi一致性模式,避免操作習慣上的侷限.
set nocompatible

"FIXME 在MS-DOS控制檯打開vim時,控制檯使用鼠標右鍵來複制粘貼,設置
"全鼠標模式,鼠標右鍵被映射爲visual mode,不能用來複制粘貼,不方便.
"但是如果不設置鼠標模式,會無法使用鼠標滾輪來滾動界面.經過驗證,發現
"可以設成普通模式mouse=n來使用鼠標滾輪,也能使用鼠標右鍵複製粘貼.
" mouse=c/mouse=i模式都不能用鼠標滾輪. Linux下還是要設成 mouse=a
set mouse=n
"set selection=exclusive
"set selectmode=mouse,key

"高亮顯示括號匹配
set showmatch

"設置Tab長度爲4空格
set tabstop=4
"設置自動縮進長度爲4空格
set shiftwidth=4
"自動縮進,這個導致從外面拷貝多行以空格開頭的內容時,會有多的縮進,先不設置
"set autoindent
"不要用空格代替製表符
set noexpandtab
"輸入tab製表符時,自動替換成空格
"set expandtab
"設置softtabstop有一個好處是可以用Backspace鍵來一次刪除4個空格.
"softtabstop的值爲負數,會使用shiftwidth的值,兩者保持一致,方便統一縮進.
"set softtabstop=4


"顯示空格和tab鍵
set listchars=tab:>-,trail:-

"1=啓動顯示狀態行, 2=總是顯示狀態行.設置總是顯示狀態行,方便看到當前文件名
set laststatus=2

"自動補全
:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { {<CR>}<ESC>O
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap " ""<ESC>i
:inoremap ' ''<ESC>i
function! ClosePair(char)
    if getline('.')[col('.') - 1] == a:char
        return "\<Right>"
    else
        return a:char
    endif
endfunction 
"打開文件類型檢測,並載入文件類型插件,爲特定文件類型載入相關縮進文
filetype plugin indent on
" 設置自動補全的選項. longest表示只自動補全最大匹配的部分,剩餘部分通過
" CTRL-P/CTRL-N來選擇匹配項進行補全. menu表示彈出可補全的內容列表.
" 如果有多個匹配,longest選項不會自動選中並完整補全,要多按一次CTRL-P,比較
" 麻煩,不做設置,保持默認設置,vim默認沒有設置longest.
"set completeopt=longest,menu "啓用這句纔會開啓自動補全


"設置背景主題 
"color asmanian2
"設置字體
"set guifont=Courier_New:h10:cANSI
"設置顏色主題,適用於黑色背景.
colorscheme slate

"=============顯示中文幫助
if version >= 603
    set helplang=cn
    set encoding=utf-8
endif

"=============新建.c,.h,.sh,.java文件,自動插入文件頭 
autocmd BufNewFile *.cpp,*.[ch],*.sh,*.java exec ":call SetTitle()" 
""定義函數SetTitle,自動插入文件頭 
func SetTitle() 
    "如果文件類型爲.sh文件 
    if &filetype == 'sh' 
        call setline(1,"\############################") 
        call append(line("."), "\# File Name: ".expand("%")) 
        call append(line(".")+1, "\# Author: LPeng") 
        call append(line(".")+2, "\# mail: [email protected]") 
        call append(line(".")+3, "\# Created Time: ".strftime("%c"))
        call append(line(".")+4, "\############################") 
        call append(line(".")+5, "\#!/bin/bash") 
        call append(line(".")+6, "") 
    else 
        call setline(1, "/******************************") 
        call append(line("."), "    > File Name: ".expand("%")) 
        call append(line(".")+1, "    > Author:LPeng") 
        call append(line(".")+2, "    > Mail: [email protected] ") 
        call append(line(".")+3, "    > Created Time: ".strftime("%c")) 
        call append(line(".")+4, " *****************************/") 
        call append(line(".")+5, "")
    endif

    "新建文件後,自動定位到文件末尾
    autocmd BufNewFile * normal G
endfunc 

3. 結語

世界上沒有最好的配置,只有適合自己的vimrc配置。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章