Вопрос или проблема
Цвета Vim выглядят хорошо, и все кажется работает нормально, но при запуске я постоянно получаю эту ошибку:
Ошибка обнаружена при обработке функции <SNR>20_colorscheme..<SNR>20_highlight_do:
строка 1:
E421: Имя цвета или номер не распознан: ctermfg=SeaGreen ctermbg=none
E421: Имя цвета или номер не распознан: ctermbg=Grey40
E421: Имя цвета или номер не распознан: ctermbg=Grey40
Нажмите ENTER или введите команду, чтобы продолжить
Это значительно увеличивает время загрузки vim, и я не могу это исправить. silent!
при настройке цветовой схемы не работает.
Более того, поиск с помощью grep для попытки выяснить, откуда возникает ошибка, также не помогает
% grep -r "ctermbg=Grey40" ~/.vim/
%
Есть какие-нибудь советы, с чего начать?
Посмотрите на вывод :scriptnames
. Какой бы скрипт ни был указан как #20, он и есть виновник, поскольку функции <SNR>20_colorscheme
и <SNR>20_highlight_do
локальны для этого скрипта. Или вы можете попробовать искать по “highlight_do”.
Некоторые цветовые схемы требуют терминала на 256 цветов. В моем случае следующая команда помогла (перед запуском vim
):
export TERM='xterm-256color'
Ответ или решение
Чтобы решить проблему с ошибками в Vim, связанными с отсутствием цветов, давайте разобьем ее на несколько этапов. Ошибка, которую вы получаете, указывает на то, что ваш терминал не может распознать некоторые цвета, которые используются в вашей цветовой схеме. Вот несколько шагов, которые помогут вам устранить эту проблему.
1. Проверка используемого терминала
Убедитесь, что ваш терминал поддерживает 256 цветов. Для этого вы можете проверить переменную окружения TERM
. Обычно для терминалов, которые поддерживают 256 цветов, используется значение xterm-256color
. Для изменения этой переменной выполните следующую команду перед запуском Vim:
export TERM='xterm-256color'
Это гарантирует, что Vim будет использовать 256 цветовую схему.
2. Найдите источник ошибки
Чтобы точнее определить, откуда берутся эти сообщения об ошибках, выполните команду в Vim:
:scriptnames
Это выведет список всех загруженных скриптов, где вы сможете увидеть, какой скрипт соответствует номеру 20 (в данном случае это ваши функции <SNR>20_colorscheme
и <SNR>20_highlight_do
). Этот номер покажет вам, какой именно файл вызывает проблему.
Если вы хотите найти причину более быстро, вы можете попробовать выполнить поиск по ключевым словам, связанным с вашими ошибками. Например, вы можете выполнить следующий grep:
grep -r "highlight_do" ~/.vim/
Это поможет найти все вхождения, связные с функцией, где ошибка возникает.
3. Изменение цветовой схемы
Если ошибка продолжается, возможно, вы используете цветовую схему, которая не поддерживает определенные цвета в вашем текущем терминале. Попробуйте использовать другую цветовую схему, которая меньше зависит от специфичных цветов. Попробуйте установить «default» или другую простую цветовую схему в вашем Vim:
colorscheme default
К примеру, вы можете добавить эту строку в ваш ~/.vimrc
, чтобы она устанавливалась при каждом запуске Vim.
4. Проверка конфигурации
Проверьте ваш файл конфигурации Vim (~/.vimrc
), чтобы убедиться, что там нет неверных настроек, связанных с цветами. Убедитесь в том, что все команды, использующие ctermfg
и ctermbg
, определены корректно и что используемые цвета действительно поддерживаются вашим терминалом.
5. Устранение проблем с плагинами
Если вы используете плагины, такие как vim-polyglot
или vim-airline
, они могут также вызывать подобные проблемы. Отключите их по очереди, чтобы выявить, какой из них может быть причиной проблемы.
Заключение
Следуя вышеуказанным рекомендациям, вы сможете устранить ошибки, связанные с отсутствием цветов в Vim. Если проблема все еще остается после выполнения всех шагов, возможно, стоит рассмотреть переустановку Vim или использование другого терминала, который лучше поддерживает цветовые схемы.