vim的map功能

原创 2013年12月01日 22:36:58

Map是Vim强大的一个重要原因,可以自定义各种快捷键,用起来自然得心应手。
vim里最基本的map用法也就是

 

这里把c映射成了a,在map生效的情况下,按下c就等同于按下了a
当然,常用的Ctrl,Shift,Alt自然也是支持的。

  • 令Ctrl+a对应到a
     
  • 令Alt+a对应到a
    class="c" style="">:map <A-a> a
  • 令Ctrl+Alt+a对应到a
    class="c" style="">:map <C-A-a> a

到此,我们已经可以做很多事情了。
但是map命令远不只这一种,在不同的模式下,同一组按键可以被映射到不同的组合上。
Vim的模式众多,但是一般被提及的也就是这么几种:

  1. Normal Mode

    也就是最一般的普通模式,默认进入vim之后,处于这种模式。

  2. Visual Mode

    一般译作可视模式,在这种模式下选定一些字符、行、多列。
    在普通模式下,可以按v进入。

  3. Insert Mode

    插入模式,其实就是指处在编辑输入的状态。普通模式下,可以按i进入。

  4. Select Mode

    在gvim下常用的模式,可以叫作选择模式吧。用鼠标拖选区域的时候,就进入了选择模式。
    和可视模式不同的是,在这个模式下,选择完了高亮区域后,敲任何按键就直接输入并替换选择的文本了。
    和windows下的编辑器选定编辑的效果一致。普通模式下,可以按gh进入。

  5. Command-Line/Ex Mode

    就叫命令行模式和Ex模式吧。两者略有不同,普通模式下按冒号(:)进入Command-Line模式,可以输入各种命令,
    使用vim的各种强大功能。普通模式下按Q进入Ex模式,其实就是多行的Command-Line模式。

对于Map,有几个基本的概念

  • 命令的组合

    同Vim下的其他命令一样,命令的名字往往由好几段组成。前缀作为命令本身的修饰符,微调命令的效果。
    对于map而言,可能有这么几种前缀

    1. nore

      表示非递归,见下面的介绍

    2. n

      表示在普通模式下生效

    3. v

      表示在可视模式下生效

    4. i

      表示在插入模式下生效

    5. c

      表示在命令行模式下生效

  • Recursive Mapping

    递归的映射。其实很好理解,也就是如果键a被映射成了b,c又被映射成了a,如果映射是递归的,那么c就被映射成了b。

    class="c" style="">:map a b:map c a

    对于c效果等同于

    class="c" style="">:map c b

    默认的map就是递归的。如果遇到[nore]这种前缀,比如:noremap,就表示这种map是非递归的。

  • unmap

    unmap后面跟着一个按键组合,表示删除这个映射。

    class="c" style="">:unmap c

    那么在map生效模式下,c不再被映射到a上。

    同样,unmap可以加各种前缀,表示影响到的模式。

  • mapclear

    mapclear直接清除相关模式下的所有映射。
    同样,mapclear可以加各种前缀,表示影响到的模式。

这里列出常用的一些map命令,默认map命令影响到普通模式和可视模式。

:map :noremap :unmap :mapclear
:nmap :nnoremap :nunmap :nmapclear
:vmap :vnoremap :vunmap :vmapclear
:imap :inoremap :iunmap :imapclear
:cmap :cnoremap :cunmap :cmapclear

可以试试这些命令

  1. 命令行模式下建一个mappingstyle="border:0px; font-family:'Courier 10 Pitch',Courier,monospace; font-size:13px; margin-top:0px; margin-bottom:1.625em; outline:0px; padding:0.75em 1.625em; vertical-align:baseline; background-color:rgb(244,244,244); line-height:1.5; overflow:auto"> nmap b a
  2. 现在普通模式下,按b,可以进入插入模式,随便输入一些字符
  3. 命令行模式下建一个mappingtyle="border:0px; font-family:'Courier 10 Pitch',Courier,monospace; font-size:13px; margin-top:0px; margin-bottom:1.625em; outline:0px; padding:0.75em 1.625em; vertical-align:baseline; background-color:rgb(244,244,244); line-height:1.5; overflow:auto"> vmap b d
  4. 现在普通模式下,按V,进入了可视模式,并且选定了一整行,按下b,可以删除整行
  5. 命令行模式下建一个mapping style="border:0px; font-family:'Courier 10 Pitch',Courier,monospace; font-size:13px; margin-top:0px; margin-bottom:1.625em; outline:0px; padding:0.75em 1.625em; vertical-align:baseline; background-color:rgb(244,244,244); line-height:1.5; overflow:auto"> imap b a
  6. 现在试着给正在编辑的这个文件输入一个字符”b”吧 :p
  7. 命令行模式下建一个mapping style="border:0px; font-family:'Courier 10 Pitch',Courier,monospace; font-size:13px; margin-top:0px; margin-bottom:1.625em; outline:0px; padding:0.75em 1.625em; vertical-align:baseline; background-color:rgb(244,244,244); line-height:1.5; overflow:auto"> cmap b c
  8. 命令行模式下, 按下b,会出来一个a

好了,到此vim的按键已经被你弄得乱七八糟了,试着用unmap和mapclear清除这些mapping吧。:]

版权声明:本文为博主原创文章,未经博主允许不得转载。

VIM键盘映射 (Map)

转自:http://www.pythonclub.org/linux/vim/map设置键盘映射使用:map命令,可以将键盘上的某个按键与Vim的命令绑定起来。例如使用以下命令,可以通过F5键将单词用...
  • lym152898
  • lym152898
  • 2016年08月10日 14:50
  • 1065

【Vim】使用map自定义快捷键

map简介map是一个映射命令,将常用的很长的命令映射到一个新的功能键上。map是Vim强大的一个重要原因,可以自定义各种快捷键,用起来自然得心应手。映射的种类有五种映射存在: 用于普通模式...
  • JasonDing1354
  • JasonDing1354
  • 2015年04月29日 21:33
  • 4396

个性化vim之映射(map,vmap)

map是一个映射命令,将常用的很长的命令映射到一个新的功能键上。 map的格式: map ,比如 map T :q!后,则在命令模式下按T并按回车,就会退出vim vmap...
  • jiangredsheep
  • jiangredsheep
  • 2015年05月19日 22:53
  • 1338

每日一vim(12)ab 与 map命令

(这篇挺好的) ab命令: ab命令可以将一长串字符用缩写来定义,这有点象Linux中的alias,比如Linux中的ll命令就是ls -l的别名,ab的语法为: :ab abb...
  • G1036583997
  • G1036583997
  • 2015年12月28日 09:57
  • 815

史上最强的Vim 配置文件(修正版)

转载自:http://blog.csdn.net/redguardtoo/article/details/1172136 史上最强的vimrc文件,据说有800行,还是作者精简后的结...
  • jslink_l
  • jslink_l
  • 2016年07月19日 09:20
  • 4577

与辛星一起在vim中加入目录浏览功能

随着用vim越来越多,也就越发感觉到vim的强大,比如最近又很需要目录浏览这一功能,于是就去搜索了下相关的东西,感觉网上的知识很多,但是很杂,于是,就自己花点时间去整理一下。        第一步,...
  • xinguimeng
  • xinguimeng
  • 2014年08月09日 09:25
  • 849

vim的几种模式和按键映射(初学者的科普文)

vim的几种模式和按键映射 Map是Vim强大的一个重要原因,可以自定义各种快捷键,用起来自然得心应手。 vim里最基本的map用法也就是 :map c a 这里把c映射成了a,在map生效的情况下...
  • guyue35
  • guyue35
  • 2016年03月27日 23:52
  • 832

Linux下的Vim的功能实在太多太全,

Linux下的Vim的功能实在太多太全,Vim的很多功能也许我们很少用得到,真正为大家常用的功能可能只占到所有功能的冰山一角。Vim终归只是一个编写代码或编辑文档的工具,所以只要掌握一些足够我们使用的...
  • wxl1986622
  • wxl1986622
  • 2016年09月22日 09:25
  • 301

vim代码智能提示功能及相关配置

转自:http://www.cnblogs.com/ggjucheng/archive/2012/08/19/2646455.html vim 代码提示功能,让vim可以媲美IDE v...
  • shanliangliuxing
  • shanliangliuxing
  • 2013年04月28日 14:59
  • 6537

vim 代码提示功能,让vim可以媲美IDE

vim是一款支持插件、功能无比强大的编辑器,无论你的系统是linux、unix、mac还是windows,都能够选择他来编辑文件或是进行工程级别 的coding。如果能把vim用好了,不仅编程效率能得...
  • u013991521
  • u013991521
  • 2016年08月08日 21:01
  • 3787
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:vim的map功能
举报原因:
原因补充:

(最多只允许输入30个字)