Расширение Vim (через Python)?

Можно ли расширить функциональность vim с помощью пользовательского расширения (желательно, написанного на Python)?

В идеале мне нужна настраиваемая команда в командном режиме. Например.

ESC

: do_this

: do_that

Ответ 1

vim поддерживает скрипты в python (и в perl также, я думаю).

Вам просто нужно убедиться, что дистрибутив vim, который вы используете, был скомпилирован с поддержкой python.

Если вы используете систему Linux, вы можете загрузить исходный код и затем скомпилировать его с помощью

./configure --enable-pythoninterp 
make
sudo make install

Внутри vim вы можете ввести

:version

чтобы просмотреть доступные функции; если у него есть поддержка python, вы должны увидеть где-то "+ python" (иначе "-python" ).

Затем, чтобы проверить использование модуля python, вы можете ввести

:help python

P.S: если вы собираетесь скомпилировать источники vim, обязательно проверьте доступные параметры конфигурации, вам может потребоваться указать --with-python-config-dir.

PPS: для создания "пользовательской команды в командном режиме" (если я правильно понимаю, что вы имеете в виду), вы можете создать функцию "MyFunction" в vim script (используя скрипт python или vim), а затем вызывать его с помощью

:Call MyFunction()

Проверьте

:help user-functions

для деталей

Ответ 3

Были проблемы с компиляцией Vim с Python.

... проверка, если флаги компиляции и ссылки для Python являются нормальными... no: PYTHON DISABLED "в выходном файле. /configure.

В Ubuntu 10.04 вам нужно установить python2.6-dev. Флаги для ./configure:

--enable-pythoninterp
--with-python-config-dir=/usr/lib/python2.6/config

Убедитесь, что у вас есть путь к каталогу, который содержит файл config.c. Также нет / в конце пути! Это вызвало у меня проблемы.