vimrc
示例文件中有一行
inoremap Ctrl-u Ctrl-G u Ctrl-u
Run Code Online (Sandbox Code Playgroud)
这条线的意义是inoremap
什么?这个线的功能是什么?
Lon*_*Rob 18
欲了解更多关于为什么命令有这样一个奇怪的名字就能看出这个优秀的描述之间的差异之间map
和noremap
.真的很高兴知道!
总结那篇文章,这是一个选择引用:
这些
*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
映射.
我也想过这个问题。参见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)
在插入模式下按下时,我会返回正常模式。
归档时间: |
|
查看次数: |
24806 次 |
最近记录: |