В VIM, как можно применять автокоммунды для файловой панели в области файла?

StackOverflow https://stackoverflow.com//questions/25086204

  •  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, как вы правильно заявляете.

Быстрый и простой

с плагином, таком как nrrrrgn - узкий флагин областей, похожий на Emacs Вы можете клонировать регионы для отдельных буферов царапин; Плагин автоматически синхронизирует их обратно на запись. Каждый буфер может быть предоставлен отдельный FileType через :setf.

Даже более простой подход - это определить некоторые сопоставления для быстрого переключения файлов FileTypes:

: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 может помочь, если у вас есть / может определить правильный синтаксис Регионы для каждого блока.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top