'inoremap'在 vimrc 中的含义是什么

  • 本文关键字:是什么 inoremap vimrc vim
  • 更新时间 :
  • 英文 :


vimrc示例文件中有一行

inoremap Ctrl-u Ctrl-G u Ctrl-u

inoremap的含义是什么?这条线的作用是什么?

有关命令名称如此怪异的更多信息,请参阅以下对mapnoremap之间差异的精彩描述。真的很高兴知道!

为了总结这篇文章,这里有一句精选名言:

*map命令的一个缺点是重复出现。。。

Vim提供了另一组不进行映射的映射命令当他们采取行动时,要考虑到这一点。

因此noremap避免了像这样可怕的映射递归

:nmap dd O<esc>jddk

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

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映射。

我也对此感到疑惑。看见http://vim.wikia.com/wiki/Mapping_keys_in_Vim_-教程(第1部分)#Insert_mode_maps:

插入模式映射

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

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

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

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

:imap

要从插入模式中删除关键点映射,请使用":iunmap"命令。例如,以下命令将删除的插入模式映射。

:iunmap <F2>

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

[狙击]


例如,在我的~/.virc中,我有

inoremap jk <ESC>
inoremap jj <Esc>

当在插入模式下按下时,会将我返回到正常模式。

最新更新