#vim
#vim
Вопрос:
Я должен это знать, но сейчас у меня в голове пусто… долгая ночь…
Как определить сопоставление, которое активно только тогда, когда активен определенный тип файла (скажем, markdown, и я хочу определить сопоставление / сокращение для вставки скобок] [поскольку у меня их нет на клавиатуре в моей языковой раскладке)?
Ответ №1:
Чтобы определить сопоставление, эффективное только в буферах, имеющих определенное filetype
значение, можно использовать комбинацию автокоманды типа файла (см. :help
,
autocmd :help FileType
) и локального сопоставления (см. :help map-local
).
:autocmd FileType markdown inoremap <buffer> (( [
:autocmd FileType markdown inoremap <buffer> )) ]
Комментарии:
1. Цифры, это должно было быть что-то очень простое 😉 Спасибо ib.!
Ответ №2:
Первым, обязательным шагом действительно является определение локальных сопоставлений буфера с :h :map-<buffer>
помощью as ib сказал.
Тогда у вас есть выбор. Вы можете :
- либо загромождайте ваш файл .vimrc автокомандами
- или используйте ftplugins, решение, которое масштабируется, может быть легко перераспределено и так далее.
Первый подход хорош, когда мы используем vim только для нескольких языков / типов файлов и когда у нас очень мало сопоставлений / команд / сокращений /… Первые пару лет в Vim все в порядке. После определенного количества настроек, специфичных для ft, предпочтительным является второе решение.
(Кстати, эта тема является дубликатом, но мне сейчас лень искать другие сообщения)
Ответ №3:
Добавьте, где это уместно (например ~/.vimrc
):
au FileType markdown inoremap <C-b> [
Комментарии:
1. Команда работает не так, как вы, вероятно, ожидаете. Как только буфер с
markdown
типом файла открыт, он определяет глобальное сопоставление, которое работает для любого буфера даже после закрытия этого файла Markdown !2. @ib Спасибо, забыл об этом. (Я делаю эту ошибку довольно регулярно в моем собственном ~/.vimrc).