В VIM, как можно применять автокоммунды для файловой панели в области файла?
-
02-01-2020 - |
Вопрос
У меня есть вид полиглот Filetype, который может встроить C, Python, Ruby и т. Д. (Подумайте «Wiki Page», если она поможет).Есть ли способ выполнить автокоммуню для известного FileType в области файла?
Например, у меня может быть:
#!bash
if [ a = b ]; then
echo 'equal'
fi
#!python
if a = b:
print('equal')
.
И я хочу применить Bash FileType AutoCommands на первую часть и автокоммуника Python FileType до последней части.
Я могу получить просто синтаксис Hitlighting, определив регион, используя Это метод , но я неt Понимать AutoCommands достаточно, чтобы иметь возможность применить их аналогичным образом.
Решение
Это автоматически сложно, поскольку настройки FileType являются буферными локальными; Vim не имеет представления о регионах, поэтому необходимо использовать :autocmds
, как вы правильно заявляете.
Быстрый и простой
:nnoremap <Leader>fp :setf python<CR>
:nnoremap <Leader>fs :setf sh<CR>
.
Действительно отдельные области в одном буфере
Эскиз этого легко:
:autocmd CursorMoved,CursorMovedI <buffer> if line('.') >= 6 | setf python | else | setf sh | endif
.
Это зависит от каждого плагина FileType, выполняющей правильную очистку (или переопределить все соответствующие варианты).
Как определить регионы
Вы, безусловно, не хотите явно указывать номера строки, как в эскизе выше. My onsyntaxChange Plugin может помочь, если у вас есть / может определить правильный синтаксис Регионы для каждого блока.