vimrc
示例文件中有一行
inoremap Ctrl-u Ctrl-G u Ctrl-u
inoremap
的含义是什么?这条线的作用是什么?
有关命令名称如此怪异的更多信息,请参阅以下对map
和noremap
之间差异的精彩描述。真的很高兴知道!
为了总结这篇文章,这里有一句精选名言:
*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>
当在插入模式下按下时,会将我返回到正常模式。