是否需要为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
的{{1}}旁边的lnoremap
是什么?这是否意味着“是”取决于什么?如果是这样的话呢?
答案 0 :(得分:5)
您可以在插入模式下通过<C-^>
切换开/关语言映射的使用,或通过
:set iminsert=1
有关详细说明,请参阅:help i_CTRL-^
和:help 'iminsert'
。切换的原因是某些用户只希望在某些情况下应用语言映射(或特定语言的整体键映射)。
对于命令行模式,您还需要
:set imcmdline