要使lnoremap(此处的重要内容l)起作用需要设置任何特殊的前提条件吗?

我有一段时间使用map来交换数字键及其符号(因为符号的书写频率更高)。我已经成功地使用noremapnoremap!毫无问题地交换了这些密钥。

我注意到该映射对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/

10-12 21:32