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

:map c a

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

    • 令Ctrl+a对应到a
:map <C-a> a
    • 令Alt+a对应到a
:map <A-a> a
    • 令Ctrl+Alt+a对应到a
:map <C-A-a> a

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

    1. Normal Mode

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

    1. Visual Mode

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

    1. Insert Mode

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

    1. Select Mode

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

    1. Command-Line/Ex Mode

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

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

    • 命令的组合

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

      1. nore

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

      1. n

表示在普通模式下生效

      1. v

表示在可视模式下生效

      1. i

表示在插入模式下生效

      1. c

表示在命令行模式下生效

    • Recursive Mapping

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

:map a b
:map c a

对于c效果等同于

:map c b

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

    • unmap

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

: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. 命令行模式下建一个mapping

     nmap b a 
  2. 现在普通模式下,按b,可以进入插入模式,随便输入一些字符
  3. 命令行模式下建一个mapping
     vmap b d 
  4. 现在普通模式下,按V,进入了可视模式,并且选定了一整行,按下b,可以删除整行
  5. 命令行模式下建一个mapping
     imap b a 
  6. 现在试着给正在编辑的这个文件输入一个字符”b”吧 :p
  7. 命令行模式下建一个mapping
     cmap b c 
  8. 命令行模式下, 按下b,会出来一个a

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

转自:http://haoxiang.org/2011/09/vim-modes-and-mappin/

VIM进阶学习之几种模式和按键映射的更多相关文章

  1. 辛星跟您玩转vim第一节之vim的下载与三种模式

    首先值得一提的是,我的vim教程pdf版本号已经写完了,大家能够去下载,这里是csdn的下载地址:点此下载 ,假设左边的下载地址挂掉了,也能够自行在浏览器以下输入例如以下地址进行下载:http://d ...

  2. RabbitMQ学习笔记之五种模式及消息确认机制

    本文详细介绍简单模式Simple.工作模式Work.发布订阅模式Publish/Subscribe.Topic.Routing. Maven依赖引用 <dependencies> < ...

  3. 逐步搭建Lamp环境之vim的三种模式以及基本命令

    在Linux中vim的三种模式分别为:命令模式.末行模式.编辑模式.以下是三者的关系图: 三种模式的彼此切换: 命令模式是vim中的默认模式. 命令模式切换至末行模式: 使用英文冒号(:). 末行模式 ...

  4. vi/vim 三种模式的操作

    来源:http://www.runoob.com/linux/linux-vim.html ps:刚刚进入vi/vim 是命令模式 一.命令模式 i 切换到输入模式,以输入字符. x 删除当前光标所在 ...

  5. vim的三种模式

    vim的三种模式(最基本的) 命令模式:在该模式下是不能对文件进行编辑的,可以输入快捷键进行一些操作(删除. 复制.移动光标.粘贴)[打开默认                  是进入命令模式] 编辑 ...

  6. Vim操作的四种模式

    Vim的四种模式一.启动Vim1.双击桌面的图标,就可以启动Vim(是图形界面的)2.在开始菜单---点--运行 接着输入 vim 或者gvim,就可以启动Vim或Gvim了.二.Vim的模式1.Vi ...

  7. 小白学习VUE第一篇文章---如何看懂网上搜索到的VUE代码或文章---使用VUE的三种模式:

    小白学习VUE第一篇文章---如何看懂网上搜索到的VUE代码或文章---使用VUE的三种模式: 直接引用VUE; 将vue.js下载到本地后本目录下使用; 安装Node环境下使用; ant-desig ...

  8. vim(vi)下的三种模式及其相关命令

    vim(vi)下的三种模式1.命令行模式 2.末行模式 3.插入模式 三种模式的联系及其相互转换 在我们输入vi命令进入编写程序的页面后,我们看到的是命令行模式,在我们输入“a”.“i”.“o”.“O ...

  9. vim的几种模式&快捷键

    vim的几种模式&快捷键 2017年01月01日 14:05:24 阅读数:3060 一.vim的模式 基本上vim可以分为三种模式:命令模式,插入模式和底行模式,其实vim有多种模式,我们只 ...

随机推荐

  1. poj1141 区间dp+路径

    //Accepted 176 KB 47 ms //感谢大神们为我们这群渣渣铺平前进的道路!! //用scanf("%s",s)!=EOF WA到死 #include <cs ...

  2. 学会使用Ogitor

    这几天在用Ogre读取Ogitor的场景,遇到了不少问题,在网上也找不到详细的说明,虽然读取Ogitor的场景对很多人来说太简单了,但对一些新手来说就有点难了,我刚开始就觉得是无从下手,因此简单的描述 ...

  3. 王家卫i

    〈旺角卡门〉 因为我很了解我自己,我不能对你承诺什么. 你不要说两次,说两次我就相信了. 我宁愿做一日英雄,都不想成世做条虫! 厨房里有煮好的饭,另外我还买了几个杯子,我知道,用不了多久就都会被打破, ...

  4. 属性的定义以及@synthesize的使用

    1.属性通常是指某些由对象封装或储存的数据.它可以是标志(如名称或颜色),也可以是与一个或多个其他对象的关系. 2.属性的基本声明使用 @property 编译器指令,后面紧跟属性的类型信息和名称.您 ...

  5. 封装数据库mysql, mysqli

    <?php header("content-type:text/html;charset=utf-8"); class db{    //私有的静态属性    private ...

  6. C++面向对象编程解决三阶矩阵相加减

    /*此处用面向对象编程*/ #include<iostream> #include<string.h> using namespace std; class Matrices ...

  7. HDU5441 Travel 并查集

    http://acm.hdu.edu.cn/showproblem.php?pid=5441 无向图,n个点,m条带权边,q次询问,给出数值d,点a可以到点b当且仅当存在一条路线其中最大的权值不超过d ...

  8. Android重写getResources规避用户调整系统字体大小影响Android屏幕适配

    Android屏幕适配一直是一个头疼的问题.除此之外还要考虑APP在实际应用场景中,用户千奇百怪的设置,最常见的用户设置行为就是设置手机的字体大小,比如把字体设置成超大或者超小,这对屏幕适配又带来额外 ...

  9. Digit (数位DP)

    一个正整数的价值就是把这个数的十进制写出来之后,最长的等差子串的长度. 求出在[l,r]范围内的数字的价值总和. (l<=r<=10^12) 记f[now,ml,l,d,pre,st,li ...

  10. HDU 1848

    http://acm.hdu.edu.cn/showproblem.php?pid=1848 利用计算grundy数组,把一类博弈转化为nim博弈,最后x不为0为先手必胜态 #include < ...