[转]Vim健位映射2
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
与上边那个类似,不过那光标上的单词复制下来,不太完善。