【问题标题】:What's the meaning of 'inoremap' in vimrcvimrc中的'inoremap'是什么意思
【发布时间】:2012-03-02 13:37:10
【问题描述】:

vimrc 示例文件下面有一行

inoremap Ctrl-u Ctrl-G u Ctrl-u

inoremap是什么意思,这条线的作用是什么?

【问题讨论】:

    标签: vim


    【解决方案1】:

    我也想知道这个。见http://vim.wikia.com/wiki/Mapping_keys_in_Vim_-Tutorial(Part_1)#Insert_mode_maps

    插入模式地图

    要映射仅在插入和替换模式下工作的键,请使用“imap”或“inoremap”命令。

    示例:以下命令映射以插入当前缓冲区的目录名称:

    :inoremap <F2> <C-R>=expand('%:p:h')<CR>
    

    要显示当前定义的插入模式映射,请使用不带任何参数的“imap”命令:

    :imap
    

    要从插入模式中删除键盘映射,请使用 ':iunmap' 命令。例如,以下命令删除 .

    的插入模式映射
    :iunmap <F2>
    

    由于可打印键在插入模式下在当前缓冲区中插入字符,因此您应该使用不可打印键来创建插入模式映射。不可打印键的一些示例包括功能键、以 Ctrl 或 Alt 键为前缀的键。

    [剪辑]


    所以,例如,在我的 ~/.vimrc 我有

    inoremap jk <ESC>
    inoremap jj <Esc>
    

    在插入模式下按下它会返回正常模式。

    【讨论】:

      【解决方案2】:

      有关该命令为何具有如此奇怪名称的更多信息,请参阅this excellent descriptionmapnoremap 之间的区别。真的很高兴知道!

      总结那篇文章,这里有一个选择引用:

      *map 命令的一个缺点是递归的危险......

      Vim 提供了另一组不使用映射的映射命令 当他们执行他们的操作时考虑到。

      所以noremap 来避免可怕的映射递归,例如

      :nmap dd O<esc>jddk
      

      映射右侧的dd 递归到映射的左侧定义,Vim 陷入无限循环!

      【讨论】:

        【解决方案3】:

        vim:help inoremap 对此很有诗意:

        :ino[remap] {lhs} {rhs}         mapmode-i             :ino :inoremap
        :ln[oremap] {lhs} {rhs}         mapmode-l             :ln  :lnoremap
        :cno[remap] {lhs} {rhs}         mapmode-c             :cno :cnoremap
                            Map the key sequence {lhs} to {rhs} for the modes
                            where the map command applies.  Disallow mapping of
                            {rhs}, to avoid nested and recursive mappings.  Often
                            used to redefine a command.  {not in Vi}
        

        因此,它为 ^U 创建了一些插入模式映射,显示文件名(^G,撤消最近的更改(u),并将缓冲区向上滚动半屏(^U)。

        我不知道为什么有人会想要这个特定的命令序列,除了演示inoremap 功能——^U 指的是创建定义时命令的含义,而不是回调进入重新定义的^U 映射。

        【讨论】:

        • 我在看inoremap的意思。 (插入,没有递归映射),当我碰到这篇文章时。
        猜你喜欢
        • 1970-01-01
        • 2011-08-12
        • 2017-06-11
        • 2018-03-05
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 2010-09-29
        • 2011-04-18
        相关资源
        最近更新 更多