让lnoremap(带L)工作

时间:2014-09-09 12:52:38

标签: vim

是否需要为lnoremapl这里重要的事情)设置一个特殊的前提条件才能工作?

我有时候使用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的{​​{1}}旁边的lnoremap是什么?这是否意味着“是”取决于什么?如果是这样的话呢?

1 个答案:

答案 0 :(得分:5)

您可以在插入模式下通过<C-^>切换开/关语言映射的使用,或通过

全局启用它
:set iminsert=1

有关详细说明,请参阅:help i_CTRL-^:help 'iminsert'。切换的原因是某些用户只希望在某些情况下应用语言映射(或特定语言的整体键映射)。

对于命令行模式,您还需要

:set imcmdline