Autocmd忽略映射?


1

为了方便起见,我在.vimrc中将“ unindenting”映射到SHIFT + TAB:

nnoremap <S-Tab> <<
inoremap <S-Tab> <C-D>

如果我自己在编辑时使用它,则效果很好,因此我也想使用该映射autocmd

autocmd FileType html inoremap ;p <p><Enter><Tab>INDENTED<Enter><S-Tab></p>

虽然这不会工作。我现在<C-D>直接使用:

autocmd FileType html inoremap ;p <p><Enter><Tab>INDENTED<Enter><C-D></p>

它可以正常工作,甚至更短,所以没有问题。


因此,出于好奇,这更多是一个问题,为什么autocmd处于正确的模式却不能使用我的映射。

Answers:


2

在这种情况下,autocmd与问题无关。

您正在使用map命令的“ nore”变体,该变体明确告诉Vim在触发第一个映射时不要触发其他映射。删除map命令的“ nore”部分,它将执行您期望的操作:

imap ;p <p><Enter><Tab>INDENTED<Enter><S-Tab></p>

看到: :help nore


谢谢你的澄清。我想到的nore只是禁止覆盖相同的映射。显然,它实际上是更有意义的。
失忆症
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.