zoukankan      html  css  js  c++  java
  • VIM进阶学习之几种模式和按键映射

    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/

  • 相关阅读:
    atitit.TokenService v3 qb1 token服务模块的设计 新特性.docx
    Atitit attilax在自然语言处理领域的成果
    Atitit 图像清晰度 模糊度 检测 识别 评价算法 原理
    Atitit (Sketch Filter)素描滤镜的实现  图像处理  attilax总结
    atitit。企业的价值观 员工第一 vs 客户第一.docx
    Atitit 实现java的linq 以及与stream api的比较
    Atitit dsl exer v3 qb3 新特性
    Atititi tesseract使用总结
    Atitit 修改密码的功能流程设计 attilax总结
    atitit.TokenService v3 qb1  token服务模块的设计 新特性.docx
  • 原文地址:https://www.cnblogs.com/gladsomeboy/p/3982108.html
Copyright © 2011-2022 走看看