
В Vim есть понятиефункции, т. е. подмножества функций, которые могут или не могут поддерживаться в фактической установке, на основе флагов времени компиляции. Наличие функции можно проверить с помощью функции has()
, а все возможные функции можно перечислить с помощью feature-list
команды.
Я хочу, чтобы мой скрипт vim был более надежным, проверяя функции перед их использованием. Моя проблема в том, что не документировано явно, какая команда полагается на какую функцию.
Конкретный пример: некоторые дистрибутивы Linux поставляются vim.tiny
по умолчанию, что является версией с сильно ограниченными возможностями vim
. Если я запускаю vim.tiny
, мой .vimrc
выдает множество сообщений об ошибках. Например, let
команда недоступна, но не очевидно, какая функция предоставляет эту команду. Как я могу надежно это определить? Или, если это невозможно, как мне сделать так, чтобы запуск vim корректно деградировал для vim.tiny
?
решение1
Нацеливание плагина Vim наvim-крошечныйсложно, так как оно состоит изоченьограниченный набор функций. Он предназначен как простая заменави, поддерживающий всего несколько отображений, не более того.
Тем не менее, действительно возможно обнаружить и подтвердить определенные возможности, используя has()
и exists()
. Ошибки на :let
можно было бы предотвратить, обернув в :if 1
, но, как я уже сказал, лучше стремиться к Vim с «нормальными» функциями и просто добавить проверки на наличие новых вещей (например,скрыть, постоянная отмена, введенная в Vim 7.3) и существенные исправления ошибок (но только если они вам нужны).