![Почему Vim активирует мою конфигурацию подсветки только после того, как я вручную отправляю свой .vimrc?](https://rvso.com/image/31675/%D0%9F%D0%BE%D1%87%D0%B5%D0%BC%D1%83%20Vim%20%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%B8%D1%80%D1%83%D0%B5%D1%82%20%D0%BC%D0%BE%D1%8E%20%D0%BA%D0%BE%D0%BD%D1%84%D0%B8%D0%B3%D1%83%D1%80%D0%B0%D1%86%D0%B8%D1%8E%20%D0%BF%D0%BE%D0%B4%D1%81%D0%B2%D0%B5%D1%82%D0%BA%D0%B8%20%D1%82%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE%20%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%20%D1%82%D0%BE%D0%B3%D0%BE%2C%20%D0%BA%D0%B0%D0%BA%20%D1%8F%20%D0%B2%D1%80%D1%83%D1%87%D0%BD%D1%83%D1%8E%20%D0%BE%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D1%8F%D1%8E%20%D1%81%D0%B2%D0%BE%D0%B9%20.vimrc%3F.png)
Я убиралсяvimrcсегодня, разделив его на отдельные файлы, чтобы было легче поддерживать. После завершения этих изменений вся моя конфигурация, сопоставления и плагины, похоже, работают, за исключением подсветки конечных пробелов.
У меня в .vim/rc/appearance.vim есть следующие строки:
highlight RedundantSpaces term=standout ctermbg=red guibg=red
match RedundantSpaces /\s\+$\| \+\ze\t/ "\ze sets end of match so only spaces highlighted
Насколько я понимаю, первая строка создает группу подсветки 'RedundantSpaces' и указывает vim сделать фон любого текста, соответствующего группе подсветки, красным, когда он находится на цветном терминале. Вторая строка определяет шаблон, используемый для идентификации текста, соответствующего группе подсветки.
Когда я открываю файл в vim и начинаю вводить пробелы на пустой строке, они не выделяются красным. Если я запускаю :source ~/.vimrc
, выделение появляется.
Если я удалю строки, rc/*.vim
из которых исходят все мои отдельные файлы .vimrc
, и вставлю две приведенные выше RedundantSpaces
строки .vimrc
напрямую, vim будет вести себя так, как и ожидалось, а конечные пробелы будут подсвечены.
Однако если я оставлю строки sourcing rc/*.vim
, а затем добавлю RedundantSpaces
строки в конец my .vimrc
(т. е. эти команды будут выполняться последними при вызове vim), подсветка все равно не будет работать, а мне нужно source ~/.vimrc
.
Кажется, ясно, что что-то в моих rc/*.vim
файлах плохо взаимодействует с конфигурацией подсветки, однако я не могу объяснить, что именно. Ничто в этих файлах не должно взаимодействовать с конфигурацией подсветки.
Может ли кто-нибудь подсказать, что здесь не так?
решение1
Проблема вызвана тем, чторазумный плагин:строка 93.:help t_Co
" Allow color schemes to do bright colors without forcing bold.
if &t_Co == 8 && $TERM !~# '^linux'
set t_Co=16 " << --- Causes hickup
endif
Если вы запустите vim в режиме подробного журнала ( vim -V15load_log.vim
) и выполните поиск t_Co=
, RedundantSpaces
вы увидите, что sensible
на самом деле анализируетсяпослеваш appearance.vim
файл.
Быстрое решение — закомментировать этот раздел кода и добавить его в свой .vimrc
, но поскольку вы ссылаетесь на репозитории git, это, возможно, не то, что вам нужно.
Другой подход — переместить его из каталога bundle
и добавить как отдельную source
строку в ваш vimrc
,доваш глобальный цикл.
То есть:
source ~/.vim/hacks/vim-sensible/plugin/sensible.vim
for f in split(glob ...
Другой способ — загрузить пользовательскую подсветку в BufLoad.
И т. д. …
решение2
Если вы используете NeoBundle, то использование NeoBundleLazy 'tpope/vim-sensible'
, затем NeoBundleSource
в конце вашего vimrc делает свое дело. Также см.https://github.com/tpope/vim-sensible/issues/74.