vim жалуется на цвет в AnsiEsc # AnsiEsc

323
PVitt

Я сказал Mercurial использовать vim как редактор по умолчанию:

[ui] editor = /opt/local/bin/vim 

Ссылочный vim был установлен через MacPorts:

$ port installed | grep vim vim @8.0.0596_0+huge (active) 

При вызове vim в командной строке я также получаю тот, который установлен через MacPorts:

$ which vim /opt/local/bin/vim 

Когда я хочу проверить файл с помощью Mercurial, я получаю некоторые странные ошибки в соответствии с отсутствующим цветом none:

Обнаружена ошибка при обработке функции AnsiEsc # AnsiEsc:

строка 527:

E254: Невозможно выделить цвет

Нажмите клавишу ВВОД или введите команду, чтобы продолжить

Я понятия не имею, откуда это исходит. Моей первой идеей был последний установленный плагин. Я удалил его, но ничего не изменилось. Затем я обошёл свой .vimrc, тоже безуспешно. Перемещение ~ / .vimrc и ~ / .vim для получения более или менее ванильного vim не помогло. Так что теперь я застрял.

:scriptnamesне содержит AnsiEsc и поиск его через findтакже не дал результата. Кроме того, grepпоиск по папкам, в которых scriptnamesуказано, что они содержат скрипты, не дал совпадения.

Как избавиться от этого сообщения об ошибке? Что такое AnsiEsc (если? Not? Vim plugin), кто его использует и почему? Или как я могу узнать, почему vim загружает AnsiEsc и почему он имеет эту ошибку?

0

1 ответ на вопрос

0
Ingo Karkat

Простой веб-поиск показал бы вам страницу плагина на vim.org . AnsiEsc - это плагин, который расширяет подсветку синтаксиса для интерпретации escape-кодов ANSI (что-то вроде ^[[01;42;31m). Терминалы Unix используют их для добавления текстовых атрибутов и цветов. Если вы фиксируете вывод какой-либо команды и открываете его в Vim, плагин может творить чудеса, хотя обычно его нужно запускать вручную через :AnsiEsc.

Что касается ошибки: это может быть ошибка в плагине. Сначала я бы проверил последнюю версию, найденную на домашней странице автора . Или, если вы вообще не хотите этого, удалите его! Как? Ну, это зависит от того, используете ли вы менеджер плагинов . Если нет, то просто удалите plugin/AnsiEscPlugin.vimи autoload/AnsiEsc.vimи doc/AnsiEsc.txtиз вашего ~/.vim/каталога (или системного каталога, если он установлен для всех пользователей. :scriptnamesДает подсказку, где это).

Используете ли вы Vim "дистрибутив", как spf-13 и Janus ? Они заманивают вас быстрой установкой и готовыми настройками, но вы платите цену за повышенную сложность (вам нужно понимать как схему загрузки Vim во время выполнения, так и произвольные соглашения о распространении) и негибкость (распределение может сделать некоторые вещи проще, а другие очень сложно). Vim невероятно настраиваемый, использование чужой настройки не имеет смысла.

Спасибо за Ваш ответ. Но нигде не установлено AnsiEsc. Я уже говорил, что перемещение моего ~ / .vim / куда-либо ничего не изменило: имена сценариев не показывают, что AnsiEsc где-то устанавливается. И нет, я не использовал дистрибутив, так как пытался указать, что vim был установлен через MacPorts. Тем не менее, спасибо за ваш вклад, хотя это не решило мою проблему. Может ли быть так, что он содержится в каком-то другом сценарии? PVitt 6 лет назад 0
Если Vim выводит сообщение об ошибке, обнаруженной при обработке функции AnsiEsc # AnsiEsc, где-то должен быть файл с именем `AnsiEsc.vim` (правила автозагрузки), и после этой ошибки`: scriptnames` должен показывать свое местоположение. Ingo Karkat 6 лет назад 0
find и grep также не дали результата. Я немного озадачен, почему vim вообще использует AnsiEsc. PVitt 6 лет назад 0
Вы можете попытаться захватить журнал с помощью `vim -V20vimlog`; может быть, это показывает больше деталей. Ingo Karkat 6 лет назад 0
Хорошо, я понял это. Это происходит из плагина vimpager, который имеет отказ от поддержки AnsiEsc. Большое спасибо за вашу помощь! PVitt 6 лет назад 0
Ах, хорошо, рад, что смог помочь. Пожалуйста, примите ответ, нажав на отмеченную галочку. Таким образом, вопрос помечается как закрытый, и вы увеличиваете свои шансы получить ответы на будущие вопросы, поскольку это показывает, что вы заботитесь об ответах. Ingo Karkat 6 лет назад 0