Autocmd игнорирует сопоставление?

286
omnesia

Для удобства я сопоставил «неопределяющий» с SHIFT + TAB в моем .vimrc:

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

1 ответ на вопрос

2
Heptite

В этом случае autocmdэто не имеет отношения к проблеме.

Вы используете вариант «nore» команд отображения, который явно указывает Vim не запускать другие отображения при запуске первого отображения. Удалите часть «nore» вашей команды map, и она сделает то, что вы ожидали:

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

Увидеть: :help nore

Спасибо тебе за пояснение. Я подумал, что «nore» просто запрещает перезапись того же отображения. Очевидно, это имеет гораздо больше смысла, как это на самом деле. omnesia 6 лет назад 0