Почему Vim активирует мою конфигурацию подсветки только после того, как я вручную отправляю свой .vimrc?

Почему Vim активирует мою конфигурацию подсветки только после того, как я вручную отправляю свой .vimrc?

Я убирался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.

Связанный контент