參考了幾篇文章以後,調整出 gvim 設定 (_vimrc/.vimrc)的最終版本.我把這份設定列在最後,作為以後參考:
如果要看 c/c++ 的 code, 可以用 ctags 預先為 c/c++ 程式產生 tags 檔案.
用法:
ctags -R
接著在看程式的時候,先用
set tags=your_tag_file
載入 tags 檔案,遇到變數或函數時,就可以按 g ctrl+] 或 ctrl+] 直接跳到該變數或函數的所在位置.
要往返的話,就按下 ctrl+t 返回.
如果要找對應括號的話,可以用 % (shift+5).
ctags 也可以 parse c# 的檔案,換句話說,你也可以用他來看 c# 的原始碼.
以後看 code 就輕鬆多了,之前應該早點聽 Irene 的話來學這個…~_~
再配合 Vim Intellisense, vim 真的是無敵了…
以下是 gvim 設定
" 繼承預設的 gvim win32 設定
set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
" 當輸入文字時隱藏 mouse
set mousehide
" 自動載入 ctags 產生的 tags 檔案.
set tags=./tags,tags
" 不自動存檔
set nobackup
" 自動縮排
set autoindent
set cindent
" 顯示行列位置
set ruler
" 自動找對應括號
set showmatch
" tab 設置
set shiftwidth=4
set tabstop=4
" 語法高亮度
syntax on
" 把 tab 展開成空白.
" set et
" 相反地設定
" set noet
" 下面都是從這裡抄來的: http://edt1023.sayya.org/vim/node10.html
" 使用 :update 代替 :w,以便在有修改時才會存檔,注意,這和 vi 不相容。
map <F2> :up<CR>
map <F3> :up<CR>:q<CR> " 存檔後離開
map <F4> :q!<CR> " 不存檔離開
map <F5> :bp<CR> " 前一個 buffer 檔案
map <F6> :bn<CR> " 下一個 buffer 檔案
" 單鍵 <F7> 控制 syntax on/off。倒斜線是 Vim script 的折行標誌
" 按一次 <F7> 是 on 的話,再按一次則是 off,再按一次又是 on。
" 原因是有時候顏色太多會妨礙閱讀。
map <F7> :if exists("syntax_on") <BAR>
\ syntax off <BAR><CR>
\ else <BAR>
\ syntax enable <BAR>
\ endif <CR>
" 按 F8 會在 searching highlight 及非 highlight 間切換
map <F8> :set hls!<BAR>set hls?<CR>
" Toggle on/off paste mode
map <F9> :set paste!<BAr>set paste?<CR>
set pastetoggle=<F9>
map <F10> <ESC>:read !date<CR> " 插入日期
map <F11> :%!xxd<CR> " 呼叫 xxd 做 16 進位顯示
map <F12> :%!xxd -r<CR> " 回復正常顯示
" 原本就有的設定.
set diffexpr=MyDiff()
function MyDiff()
let opt = ‘-a –binary ‘
if &diffopt =~ ‘icase’ | let opt = opt . ‘-i ‘ | endif
if &diffopt =~ ‘iwhite’ | let opt = opt . ‘-b ‘ | endif
let arg1 = v:fname_in
if arg1 =~ ‘ ‘ | let arg1 = ‘"’ . arg1 . ‘"’ | endif
let arg2 = v:fname_new
if arg2 =~ ‘ ‘ | let arg2 = ‘"’ . arg2 . ‘"’ | endif
let arg3 = v:fname_out
if arg3 =~ ‘ ‘ | let arg3 = ‘"’ . arg3 . ‘"’ | endif
if &sh =~ ‘\<cmd’
silent execute ‘!""C:\Program Files\Vim\vim64\diff" ‘ . opt . arg1 . ‘ ‘ . arg2 . ‘ > ‘ . arg3 . ‘"’
else
silent execute ‘!C:\Program" Files\Vim\vim64\diff" ‘ . opt . arg1 . ‘ ‘ . arg2 . ‘ > ‘ . arg3
endif
endfunction