• VIM


    map映射

    在vim配置文件中经常会看到map、nmap、imap、vmap、vnoremap、nunmap、nmapclear等,都是什么意思呢?

    map前的n、v、nore、un等表示下列含义:

    nore 非递归
    n 普通模式生效
    v 可视模式生效
    i 插入模式生效
    c 命令行模式生效
    un 后面跟组合键, 表示删除这个映射
    clear 清楚相关模式下所有映射
    • 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

    可以试试这些命令:

    命令行模式下建一个mapping

    现在普通模式下,按b,可以进入插入模式,随便输入一些字符

    nmap b a 

    现在普通模式下,按b,可以进入插入模式,随便输入一些字符

    命令行模式下建一个mapping

    vmap b d 

    现在普通模式下,按V,进入了可视模式,并且选定了一整行,按下b,可以删除整行

    命令行模式下建一个mapping

    imap b a 

    现在试着给正在编辑的这个文件输入一个字符”b”吧 :p

    命令行模式下建一个mapping

    cmap b c 
    1. 命令行模式下, 按下b,会出来一个a

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

    映 射 与 运 行 模 式

    有五种映射存在
    - 对于普通模式: 当输入命令时.
    - 对于可视模式: 当输入命令并且 Visual 区域已被设置为高亮时.
    - 对于 Operator-pending mode: 当一个操作符正在进行中 ("d", "y", "c",等等之后)
      例如: ":omap { w" 会使 "y{" 和 "yw" 一样, "d{" 和 "dw"一样.
    - 对于插入模式: 也被用于替换模式.
    - 对于命令行模式: 当输入一个 ":" 或 "/" 命令时.

    没有独立针对选择模式的映射.  和可视模式在 |Select-mode-mapping|
    中的一样.

    特殊情况:当在普通模式里为一个命令输入一个数时,对 0 的映射就会禁用。这样
    在输入一个带有0的数字时不会受到对 0 键映射的干扰。

    参考:

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

  • 相关阅读:
    USACO Section 1.3 : Mixing Milk
    USACO Section 1.3 : Prime Cryptarithm
    USACO Section 1.2 : Name That Number
    USACO Section 1.3 : Calf Flac
    USACO Section 1.2 : Palindromic Squares
    Global.asax详解
    sql语句字符串处理大全
    ASP.net:URL重写实现IHttpHandler接口
    asp.net中使用基于角色role的Forms验证
    时间Table.TransformColumns(Power Query 之 M 语言)
  • 原文地址:https://www.cnblogs.com/firestar277/p/14665816.html
Copyright © 2020-2023  润新知