Если бы просто :function
отсутствовало, вы могли бы встроить отдельные команды в длинную, неприглядную последовательность команд.Но вряд ли эмуляция Vim просто пропустит функции;проблема заключается в том, что сам Vimscript тесно связан с самим Vim и в основном определяется поведением его единственной реализации внутри Vim.Таким образом, я бы предположил, что strlen()
, repeat()
и даже :put ={expression}
не будут работать в PyCharm, также.
Большинство эмуляций Vim просто предлагают базовые :map
команды.Не зная ничего о PyCharm, можно попробовать следующие общие подходы:
- Если эмуляция предлагает команду
:!
(или :{range}!
) для вызова внешних команд, вы можете реализовать эту функциональность ввнешняя команда, реализованная на любом языке программирования, который вы предпочитаете.(Если эмуляция не предлагает команду :{range}!
, вам нужно сначала :write
буфер и передать каким-либо образом имя файла и текущее местоположение внешней команде.) - Некоторые эмуляции также предлагаютнестандартная команда для вызова их собственных функций редактора ядра (так что вы можете реализовать ее с этим) или даже произвольный пользовательский код;например, для редактора на основе NodeJS это может быть код JavaScript.
В общем, эмуляции Vim весьма ограничены и могут эмулировать только основные функции vi (хотя я также видел пользовательскиереализации некоторых популярных плагинов Vim, таких как surround.vim).
Alternative
Чтобы получить больше специальных возможностей Vim в вашей IDE, используйте одновременно обоих ;в вашей среде IDE очень легко настроить внешний инструмент, который запускает Vim с текущим файлом (и позицией).Автоматическая перезагрузка изменений (в Vim через :set autoread
) позволяет одновременно редактировать исходный код в обоих.