vimrc
示例文件
inoremap Ctrl-u Ctrl-G u Ctrl-u
inoremap
的含义是什么?这一行的功能是什么?
答案 0 :(得分:18)
有关命令为何具有如此奇怪名称的详细信息,请参阅map
与noremap
之间的差异this excellent description。真的很高兴知道!
总结那篇文章,这是一个选择引用:
*map
命令的一个缺点是递归的危险......Vim提供了另一组不会采用映射的映射命令 在他们执行行动时考虑到这一点。
所以noremap
来避免像
:nmap dd O<esc>jddk
其中地图右侧的dd
递归到地图的左侧定义,而Vim陷入了无限循环!
答案 1 :(得分:14)
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
映射。
答案 2 :(得分:4)
我也想知道这件事。见http://vim.wikia.com/wiki/Mapping_keys_in_Vim_-Tutorial(Part_1)#Insert_mode_maps:
要映射仅在插入和替换模式下工作的键,请使用&#39; imap&#39;或者&#39; inoremap&#39;命令。
示例:以下命令映射以插入当前缓冲区的目录名:
:inoremap <F2> <C-R>=expand('%:p:h')<CR>
要显示当前定义的插入模式地图,请使用&#39; imap&#39;没有任何参数的命令:
:imap
要从插入模式中删除键盘映射,请使用&#39;:iunmap&#39;命令。例如,以下命令将删除插入模式映射。
:iunmap <F2>
由于可打印键在插入模式下在当前缓冲区中插入字符,因此应使用不可打印的键来创建插入模式映射。不可打印键的一些示例包括功能键,以Ctrl或Alt键为前缀的键。
[剪断]
所以,例如,在我的〜/ .vimrc中我有
inoremap jk <ESC>
inoremap jj <Esc>
在插入模式下按下时,返回普通模式。