Autocmd 忽略映射吗?

Autocmd 忽略映射吗?

为了方便起见,我在 .vimrc 中将“取消缩进”映射到 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 不能使用我的映射,尽管它处于正确的模式。

答案1

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

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

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

看::help nore

相关内容