11.30 vim技巧:我的 .vimrc 配置文件,詳解每一個配置項的作用


vim技巧:我的 .vimrc 配置文件,詳解每一個配置項的作用

下面是我的 .vimrc 配置文件,每一個配置項都添加了註釋說明,詳解每一個配置項的作用,以便確認為什麼要添加這個配置項。

" 使用vim的modeline來設置當前文件的textwidth,
" 避免輸入超過78個字符時自動換行
" 使用:verbose set textwidth?命令可以看到vim默認
" 為vim配置腳本設置了textwidth為78,當輸入超過78個字符
" 並按下空格鍵時會自動換行.將textwidth設成0關閉該功能
"" vim: tw=0 :

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

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

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

set laststatus=2

" 設置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\")}

" 顯示還沒有輸入完整的命令.例如yy命令,輸入第一個y會在右下角顯示y.
set showcmd

" 使用Tab鍵補全時,在狀態欄顯示匹配的列表,
" 方便查看都有哪些命令符合補全條件.
set wildmenu

" 顯示行號
set number

" 高亮顯示匹配的括號
set showmatch

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

set hlsearch

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

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

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

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

" 設置文件編碼,主要是避免中文亂碼.
" 先註釋,後續遇到中文亂碼再打開
"" set fileencodings=utf-8,cp936,big5,latin1

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


" FIXME 在MS-DOS控制檯打開vim,光標很小,不方便看到光標
" 在哪裡.下面設置cursorline,高亮光標所在的行.
" cursorlineopt=number只高亮行號部分,不影響正文內容
" 的顯示. 在其他容易看到光標的終端上可以去掉這兩個設置.
set cursorline
set cursorlineopt=number

" 開啟語法高亮
syntax enable

" 檢測文件類型,並載入文件類型插件,
" 為特定文件類型載入相關縮進文件
filetype plugin indent on

" 設置自動補全的選項. longest表示只自動補全最大匹配的部分,
" 剩餘部分通過CTRL-P/CTRL-N來選擇匹配項進行補全. menu表示
" 彈出可補全的內容列表.如果有多個匹配,longest選項不會自動選中
" 並完整補全,要多按一次CTRL-P,比較麻煩,不做設置,保持默認設置,
" vim默認沒有設置longest.
"" set completeopt=longest,menu

" 自動縮進.這個導致從外面拷貝多行以空格開頭的內容時,
" 會有多的縮進,先不設置.
"" set autoindent

" 設置C風格的自動縮進.設置filetype indent on後,就會根據文件

" 類型自動縮進.按照vim用戶手冊'30.3 Automatic indenting'的
" 說明,可以不再單獨設置cindent.
"" set cindent

" 自動縮進時,縮進長度為4
set shiftwidth=4

" 輸入Tab字符時,自動替換成空格
set expandtab

" 設置softtabstop有一個好處是可以用Backspace鍵來一次
" 刪除4個空格. softtabstop的值為負數,會使用shiftwidth
" 的值,兩者保持一致,方便統一縮進.
set softtabstop=-1

" 設置顏色主題,適用於黑色背景.
colorscheme slate

" 創建一個新的 MyTabSpace 組,並設置它的顏色
highlight MyTabSpace ctermfg=darkgrey

" 指定tab字符和空格的顏色組為MyTabSpace,不同字符串
" 之間用|隔開,要使用\\|轉義.
match MyTabSpace /\\t\\| /

" 針對特定類型的代碼文件,設置顯示Tab鍵和行尾空格以便在
" 查看代碼時注意到它們.
" TODO 後續查看代碼如果體驗不好再改成用map映射快捷鍵
" 開關list來動態切換顯示.
autocmd FileType c,cpp,java,xml setlocal list | set listchars=tab:>~,trail:.


" 配置 gtags 插件,用於在函數之間跳轉,方便查看源代碼.
" 參考 gtags-cscopde.vim 的註釋,添加下面語句來
" 使用 ':tag' 和 ''
set cscopetag
" 設置 cscopetag 後,由於gtags-cscopde默認沒有啟動,
" 還需要進行下面的設置.結合這兩個設置, gtags 就可以
" 使用Ctrl-]鍵來跳轉到函數定義處.
let GtagsCscope_Auto_Load = 1
" 配置 GtagsCscope_Auto_Load = 1 後,在沒有GTAGS文件
" 的目錄下使用vim,會提示 Gtags-cscope: GTAGS not found.
" Press ENTER or type command to continue
" 需要按回車才會打開文件.如果要去掉這個報錯,需要設置GtagsCscope_Quiet = 1
let g:GtagsCscope_Quiet = 1
" 設置只有一個匹配結果時,不顯示quickfix窗口
let g:Gtags_Close_When_Single = 1

" 配置 quickfix 相關命令的快捷鍵. 可以用:map命令
" 查看vim已有的快捷鍵映射.
nnoremap :cclose
nnoremap :cn
nnoremap :cp

" vim 用 map 命令來映射快捷鍵,它前面可以加一些前綴來對應
" 不同的場景.下面 map 前面的 nore 表示非遞歸. nore 前面

" 的n表示只在普通模式下生效.即,基於下面的配置,在插入模式下,
" 按F6沒有這個映射效果.插入模式對應i. 下面配置cscope查找
" 文件命令的快捷鍵為F6,由於需要手動輸入文件名,不要加
nnoremap :cs find f<space>

" 如果要去掉高亮顯示搜索到的內容,需要再次搜索一些不存在的字符串,
" 比較麻煩.可以在vim的命令行中執行nohlsearch命令去掉當前高亮.
" 下面的 nohlsearch 以 : 開頭表示在命令行執行.
nnoremap :nohlsearch
" 插入模式下也用F9來去掉搜索高亮.下面的表示CTRL-O.
" CTRL-O鍵可以在插入模式執行一次命令
inoremap :nohlsearch
/<space>


分享到:


相關文章: