http://hi.baidu.com/dingguo815/blog/item/2fef0f26d70be7108b82a122.html
Vim 的鍵位映射真是無所不能,一直以為插入模式中不夠普通模式的快捷鍵多,普通模式中,按“o”能在光標下插入一行行,按“dd”刪除一整行……,而在插入模 式中沒有這些快捷鍵,很多快捷命令一直都是按“Esc”返回普通模式使用后再切換來,很麻煩,能看過鍵位映射后,研究一陣,大呼過癮!於是把一系列自定義 鍵位映射寫到“_vimrc”中,現在Vim用起來真他媽的爽!!!
Alt組合鍵不映射到菜單上
set winaltkeys=no”
在 鍵位映射中,Ctrl加字母是不分大小寫的,Alt就分,這樣能映射的鍵位選擇就更多了。不過發現Alt+W等會跳到菜單上,即使設置了映射后還是那樣, 十分不爽,反正菜單又不常用,於是決定把它關掉了,后來又發現有這個選項能使Alt組合鍵不映射到菜單上,Vim想得真周到,后來又發現Alt+大寫(就 是同時按下Shift鍵)xp會切換輸入法,又一不爽,於是在系統控制面板那里將它關掉。
編譯程序
map <F9> :w<Esc><CR>:make %<CR>
imap <F9> <Esc><F9>
在VC 里按一個鍵就能編譯和運行,很方便,本來在Vim寫好代碼,然后用“:!”命令運行編譯程序,后來用得多了,決定麻煩,於是設置了鍵位映射,先保存,然后 執行make。當然在ftpplugin里設置好mkaeprg。java.vim我就直接在Runtime files里的ftpplugin文件夾復制到vimfiles里就行了,c.vim就這么一句“set makeprg=gcc\ -o\ %:r.exe”
運行程序
- “java.vim里的
map <F9> :w<Esc><CR>:make %<CR>
imap <F9> <Esc><F9>
map <F10> :!java %:r<CR> - “c.vim里的
map <F9> :w<Esc><CR>:make %<CR>
imap <F9> <Esc><F9>
map <F10> :!%:r.exe<CR>因為java運行命令是“java 類名不包括后綴”,就用“%:r”去掉后綴名;而C則去掉后綴名后加上“.exe”
錯誤跳轉
- “跳到下一個錯誤
map <A-n> :cnext<CR>
imap <A-n> <Esc><A-n>i - 跳到前一個錯誤
map <A-p> :cprevious<CR>
imap <A-p> <Esc><A-p>i - 顯示所有錯誤
map <F8> :clist<CR>
imap <F8> <Esc><F8>不用在切換到普通模式里輸入查看錯誤命令了,真方便
全文查找替換
map <C-H> :%s/
imap <C-H> <Esc><C-H>
在windows下一直習慣用“Ctil+H”打開查找對話框,這下好了,那幾個固定字母不用重復打了
取消查找高亮
map <A-/> :nohlsearch<CR>
imap <A-/> <Esc><A-/>i
查找過后總是查找內容高亮,這個映射能令它快速消失。
刪除當前行並重寫
imap <A-r> <Esc>ddO
寫代碼時有時想整行刪掉后重寫,按住“del”或者用鼠標選擇都是不夠有效率,這樣做最快捷。
刪除到行尾
imap <A-u> <Esc>wd$i
插入模式有刪除光標前到行首,但是沒有刪除到行尾,有時也學要用,映射一下。
刪除光標處的單詞
imap <A-w> <Esc>ebdei
“插入上次刪除的單詞
imap <A-W> <C-R>w
有時想把單詞換成另一個,像刪除整行一樣,移動好光標,然后按住“del”或者鼠標選擇都是不夠效率,這個映射一下子就把單詞刪掉。<A-W>就把剛用<A-w>刪除的單詞插入回來
刪除光標處雙引號之間的字符串
imap <A-s> <Esc>di"i
如果光標在“”"”之間,這個映射就馬上刪掉雙引號自己的內容並把光標用到雙引號之間,方便重寫。
開關tag窗口
map <A-t> :TlistToggle<CR>
imap <A-t> <Esc><A-t>i
快速開關Taglist窗口。
在光標下插入新行
imap <A-o> <Esc>o
就像普通模式下按“o”一樣,這樣不用把光標移動到行尾按回車了,按“Ctirl+o”,然后“o”也行,不過要多按一次鍵。
復制當前行
imap <A-c> <Esc>Ya
粘貼到當前行
imap <A-v> <Esc>pi
馬上把光標所在行整行復制,粘貼,這個功能也經常用。
為選擇行添加注釋
smap <A-c> <C-G>:s/^/\/\//ge<CR><A-/>
刪除選擇行的注釋
smap <A-C> <C-G>:s/\/\///ge<CR><A-/>
有時測試需要,要整段注釋,先用鼠標選擇好要注釋的代碼,這是時候在選擇模式下,然后切換到可視模式,在可是模式下運行替換命令,作用范圍就是選擇 段,查找 行首然后替換成“//”就行了,唯一不爽的是查找后全文行首高亮,於是又要取消高亮,屏幕就會“閃”一下。刪除反過來就是。
映射光標控制
imap <A-h> <Left>
imap <A-j> <Down>
imap <A-k> <Up>
imap <A-l> <Right>
現在右手移動到光標鍵都嫌麻煩了
插入當前行第一個單詞到下一行,用b寄存器
imap <A-b> <Esc>^"byeo<C-R>b
編寫Java時經常輸入多行private,public時很有用,按一下就自動把當前行第一個字符查入到下一行。
插入光標出上一行單詞,用i寄存器
imap <A-g> <Esc>keb"iyejA<C-R>i
與上邊那個類似,不過那光標上的單詞復制下來,不太完善。