Пользовательское действие при завершении ()

#vim

#vim

Вопрос:

В Atom IDE есть приятная функция под названием «сниппеты», которая позволяет вставлять определенные пользователем блоки кода, вводя определенную последовательность символов:

введите описание изображения здесь

Я сделал небольшой пример в соответствии с документацией Vim:

 inor <F5> <C-R>=ShowPopup()<CR>

func! ShowPopup()
        call complete(col('.'), ['inc', 'main'])
        retu ''
endf
 

введите описание изображения здесь

Теперь я хочу main , чтобы элемент стал int main() {} , когда я выбираю этот элемент во всплывающем меню и нажимаю Enterв режиме вставки. Возможно ли это с помощью встроенной функциональности Vim?

Ответ №1:

Это возможно. Это просто требует некоторой работы. Работа, которая обычно заканчивается … плагины для фрагментов. Так что да, плагины написаны на основе встроенных функций.

Идея заключается в том, что функция завершения запускает событие, которое используется для выполнения фактической замены. См., Например, этот вопрос / ответ на vi.SE где я исследую, как написать более динамичную функцию завершения: https://vi.stackexchange.com/questions/5820/dynamic-completion