为了方便起见,我在 .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