要使lnoremap
(此处的重要内容l
)起作用需要设置任何特殊的前提条件吗?
我有一段时间使用map来交换数字键及其符号(因为符号的书写频率更高)。我已经成功地使用noremap
和noremap!
毫无问题地交换了这些密钥。
我注意到该映射对f
无效。最近,我了解了r
,并且看到映射也没有生效。在mapmode-l
的帮助下:
Some commands work both in Insert mode and Command-line mode, some not:
commands: modes: ~
Insert Command-line Lang-Arg ~
:map! :noremap! :unmap! :mapclear! yes yes -
:imap :inoremap :iunmap :imapclear yes - -
:cmap :cnoremap :cunmap :cmapclear - yes -
:lmap :lnoremap :lunmap :lmapclear yes* yes* yes*
然后继续(在
language-mapping
中):":lmap" defines a mapping that applies to:
- Insert mode
- Command-line mode
- when entering a search pattern
- the argument of the commands that accept a text character, such as "r" and
"f"
- for the input() line
这似乎是完美的映射类型。由于
lnoremap
也应该映射为插入和命令行,因此我尝试用noremap!
替换lnoremap
。结果是Lang-Arg,Insert和Command-line都不再具有该映射。我的问题是,在使用
lnoremap
之前需要设置一些特定的东西吗? *
的yes
旁边的那些lnoremap
是什么?这是否意味着“是”以某种条件为条件?如果是这样怎么办? 最佳答案
您可以在插入模式下通过<C-^>
打开/关闭语言映射的使用,也可以通过以下方式全局启用它:
:set iminsert=1
有关详细说明,请参见
:help i_CTRL-^
和:help 'iminsert'
。进行此切换的原因是,某些用户只希望在某些情况下应用语言映射(或特定语言的整体键映射)。对于命令行模式,您还需要
:set imcmdline
关于vim - 使lnoremap(带有L)工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25745169/