Vim 让lnoremap(带L)工作
是否需要为Vim 让lnoremap(带L)工作,vim,Vim,是否需要为lnoremap(l在这里是最重要的)工作设置任何特殊的先决条件 我已经使用map来交换数字键和它们的符号(因为符号的书写频率更高)。我成功地使用了noremap和noremap可以毫无问题地交换这些密钥 我注意到映射在f中没有生效。最近,我了解了r,发现映射也不会因此生效。在mapmode-l的帮助下: Some commands work both in Insert mode and Command-line mode, some not: commands:
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*
然后继续(在语言映射中
):
这似乎是完美的映射类型。因为lnoremap
应该也映射到Insert和命令行,所以我尝试替换noremap代码>带有lnoremap
。结果是,Lang Arg、Insert和命令行都不再具有这种映射
我的问题是,在使用lnoremap
之前,是否需要设置一些特定的设置?lnoremap
的yes
es旁边的那些*
是什么?这是否意味着“是”是有条件的?如果是这样会怎样?您可以在插入模式下通过
打开/关闭语言映射的使用,或者通过
:set iminsert=1
有关详细说明,请参见:help i_CTRL-^
和:help'iminsert'
。这种切换的原因是一些用户只希望在某些情况下应用语言映射(或特定语言的整体键映射)
对于命令行模式,您还需要
:set imcmdline
谢谢这使得它可以在插入模式和f
和r
下工作,但不能在命令行上工作。我添加了cnoremap
来完成它(但仍然不知道为什么lnoremap
没有自己做cnoremap
)@Shahbaz随机猜测:尝试设置'imcmdline'
@mMontu,实际上它不起作用(尽管我发现set imsearch=1
(或-1)修复了搜索。(我正在使用vim 7.3,不幸的是在windows下)。无论如何,cnoremap
解决了这个问题。好吧,似乎这还不是全部。如果我录制了一个宏,其中我在插入模式下输入了其中一个键,或者在f
之后使用它,那么重放宏将使用原始键而不是映射的键。例如,在d
之后使用它们没有这个问题。当我以前使用inoremap
在过去,这种情况没有发生。因此,似乎lnoremap
withiminsert=1
与inoremap
@Shahbaz并不完全相同。我会尝试一个更新的版本,它可能工作得更好。我使用的是Vim 7.4——如果你提供一个测试过程,我可以检查它。
:set imcmdline