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

Aar*_*ron 24 vim

vimrc示例文件中有一行

inoremap Ctrl-u Ctrl-G u Ctrl-u
Run Code Online (Sandbox Code Playgroud)

这条线的意义是inoremap什么?这个线的功能是什么?

Lon*_*Rob 18

欲了解更多关于为什么命令有这样一个奇怪的名字就能看出这个优秀的描述之间的差异之间mapnoremap.真的很高兴知道!

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

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

Vim提供了另一组映射命令,这些命令在执行操作时不会考虑映射.

所以noremap来避免像这样的映射的可怕递归

:nmap dd O<esc>jddk
Run Code Online (Sandbox Code Playgroud)

dd地图右边的地方递归回到地图的左侧定义,Vim卡在无限循环中!


sar*_*old 16

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}
Run Code Online (Sandbox Code Playgroud)

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

我不知道为什么会有人想命令的这个特定序列,除了展示inoremap特点- ^U在指意义的定义创建时,而不是调用回重新定义的命令有^U映射.

  • 我在看 inoremap 的意思。(插入,没有递归图),当我碰到这篇文章时。 (6认同)

Vic*_*art 6

我也想过这个问题。参见http://vim.wikia.com/wiki/Mapping_keys_in_Vim_-教程(Part_1)#Insert_mode_maps

插入模式图

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

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

:inoremap <F2> <C-R>=expand('%:p:h')<CR>
Run Code Online (Sandbox Code Playgroud)

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

:imap
Run Code Online (Sandbox Code Playgroud)

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

:iunmap <F2>
Run Code Online (Sandbox Code Playgroud)

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

[剪辑]


因此,例如,在我的 ~/.vimrc 中,我有

inoremap jk <ESC>
inoremap jj <Esc>
Run Code Online (Sandbox Code Playgroud)

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