VIM命令

作者: 郁中道 | 来源:发表于2018-10-29 22:37 被阅读0次

    打印信息

    echo 打印信息,脚本运行完毕后打印的信息就会消失

    echom 打印信息,信息会被存储在==messages==中,适合再次查看信息

    设置选项

    布尔选项

    布尔选项都可以设置off或者on,都可以通过:

    :set <name>     打开选项
    :set no<name>   前缀no关闭选项
    :set <name>!    !切换布尔选项
    :set <name>?    ?查看选项当前值
    

    键值选项

    键值选项可以设置一个值。可以通过:

    :set <name>=<value> 设置选项的值
    :set <name?         ?查看选项当前值
    

    一次性设置多个选项

    例如:

    :set numberwidth=2
    :set nonumber
    :set number numberwidth=6   同时设置两个选项
    

    基本映射

    使用 map 命令可以同时映射 normal模式和visual模式 的键盘,如:

    :map - x    - 映射为 x
    :map - dd   - 映射为 dd
    

    使用 <keyname> 映射一个特殊的按键

    :map <space> viw 高亮选中整个单词
    :map <c-d> dd    ctrl+d 将执行dd命令
    

    ==注意 键盘映射后面无法使用注释:==,如

    :map <space> viw "Select word
    

    当按下空格键时,Vim认为是想执行命令 viw<space>"<space>Select<space>word

    模式映射

    • nmap normal模式的键盘映射
    • vmap visual模式的键盘映射
    • imap insert模式的键盘映射
    • nunmap 删除normal映射
    • vunmap 删除visual映射
    • iunmap 删除insert映射

    映射的递归特性

    :nmap - dd
    :nmap \ -
    

    当按下 \ 时,Vim会解释其为 - 。但是因为映射了 - !Vim会继续解析 -dd , 即它会删除整行。

    :nmap dd O<esc>jddk
    

    这个映射实际上是 递归 的!当你按下dd后,Vim解释为:

    • dd存在映射,执行映射的内容。
    • 新建一行。
    • 退出insert模式。
    • 向下移动一行。
    • dd 存在映射,执行映射的内容。
    • 新建一行。
    • 退出insert模式。
    • 向下移动一行。
    • dd 存在映射,执行映射的内容。然后一直这样。

    ==这个映射永远不会结束!==

    映射的递归特性存在危险,自定义的映射和插件极容易发生冲突

    非递归映射

    Vim提供另一组映射命令,这些命令创建的映射在运行时, 不会进行递归

    :nnoremap  
    :vnoremap
    :inoremap
    :noremap
    

    正常情况下应当优先使用这写不会产生递归的映射命令

    设置Leader键

    相关文章

      网友评论

          本文标题:VIM命令

          本文链接:https://www.haomeiwen.com/subject/vbaitqtx.html