[转]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

与上边那个类似,不过那光标上的单词复制下来,不太完善。

posted on 2012-02-15 10:00  perlman  阅读(3573)  评论(0编辑  收藏  举报

导航