Vim的常用键位映射

2007-12-31更新:根据习惯再作相关修改

这两天花又不少时间学习Vim,网上相关的文章大多数能看懂的我都看了,easwyVim系列文章看了学多遍了,手册更是查了无数遍(有中文的,翻译的人真伟大!),越来越觉得这个编辑器真是强大,深陷其中不能自拔,要记的东西太多了,趁印象深刻,先下记下来,不时复习下。

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

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

    该文章发布在 程序配置,标签:。收藏该永久链接

    发表评论

    您的电子邮箱不会被公开。 标记为 * 的区域必须填写

    *

    您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

    评论须知
    • 如果有人@你的用户名,系统会发送邮件通知你。
    • 请不要在评论正文处里留下邮箱,以防被垃圾机器人采集。
    • 有问题请留在相关话题的文章上,我都会看到的。