Как сделать так, чтобы команды подсветки в .vimrc вступили в силу немедленно с Vim 7.4?

9

У меня есть несколько highlightкоманд в моем .vimrcфайле. В Vim 7.3 они вступили в силу сразу после запуска Vim. После обновления до Vim 7.4 это уже не так. Vim изначально использует подсветку по умолчанию. Когда я загружаюсь .vimrcвторой раз source ~/.vimrc, выделение работает так, как я хочу.

Вы должны быть в состоянии воспроизвести эту проблему, используя следующие шаги:

  1. Сделайте копию вашего .vimrcфайла.

  2. Замените ~/.vimrcфайлом, содержащим только строку highlight Type ctermfg=28 cterm=bold.

  3. Запустите vim dummy.cв 256-цветном терминале (например, GNOME Terminal).

  4. Введите intв буфер. Символ intдолжен отображаться обычным шрифтом и иметь светло-зеленый цвет, а это не то, что я хочу.

  5. Введите :source ~/.vimrc. Теперь они intдолжны быть выделены жирным шрифтом и окрашены в темно-зеленый цвет.

В соответствии со статьей « Как управлять / настраивать цвета vim» , можно просто поместить highlightкоманды в .vimrc. В статье говорится, что вы должны поставить syntax enableпосле highlightкоманд, но это не имеет никакого значения.

Мое первое исправление было предварять каждую highlightкоманду .vimrcс autocmd VimEnter *. Это работало для некоторых типов файлов, но не для других (файлы C являются примером).

В чем причина такого поведения? Как highlightвыполнить команды при запуске Vim, чтобы они действовали для всех буферов в течение всего сеанса Vim?

Вольфганг Ельч
источник
звучит как выпуск 542
Кристиан Брабандт
Да, при добавлении set compatibleв начале .vimrcподсветка синтаксиса работает как положено. Так что это действительно похоже на эту ошибку в действии.
Вольфганг Йельч
Я предшествовал highlightкомандам autocmd ColorScheme *, которые были предложены в качестве обходного пути в отчете об ошибках. Это все еще не работает. Wolf
Вольфганг Ельч
Сейчас я пишу свою собственную цветовую схему, которая, очевидно, также работает вокруг этой ошибки.
Вольфганг Ельч
Кристиан, можешь просто написать свой комментарий как ответ? В конце концов, это правильный ответ на мою проблему. Или есть какой-то другой подход для решения вопросов, которые действительно выявляют ошибки?
Вольфганг Ельч

Ответы:

5

Это не однозначный ответ, и ваша проблема звучит как проблема 542 . Очевидно, вы можете обойти это, написав свою собственную базовую цветовую схему, вместо того, чтобы записывать эти hi ...утверждения непосредственно в ваш .vimrc.

Кристиан Брабандт
источник
Я думаю, что это из-за этой проблемы с Vim; так что ваш ответ действительно кажется правильным ответом на мою проблему.
Вольфганг Ельч
3

На самом деле вы не должны помещать свои собственные основные моменты в ваш vimrc, но в файлы синтаксиса таможни.

Эти файлы должны быть расположены ~/.vim/after/syntax/filetype.vimтам, где filetypeнаходится ожидаемый тип файла. Если вы в основном удовлетворены синтаксическим файлом, но хотите добавить несколько команд, вы можете выполнить следующие действия (взяты из :h mysyntaxfile-add):

  1. Создайте каталог там с именем "after / syntax". Для Unix:

    mkdir ~/.vim/after
    mkdir ~/.vim/after/syntax
    
  2. Напишите скрипт Vim, содержащий команды, которые вы хотите использовать. Например, чтобы изменить цвета для синтаксиса C:

    highlight cComment ctermfg=Green guifg=Green
    
  3. Запишите этот файл в каталог «after / syntax». Используйте имя синтаксиса с добавлением «.vim». Для нашего синтаксиса C:

    :w ~/.vim/after/syntax/c.vim
    

Вот и все. При следующем редактировании файла C цвет комментария будет другим. Вам даже не нужно перезапускать Vim.

:h mysyntaxfileэто хорошее место, чтобы получить информацию о том, как исправить ваши собственные файлы синтаксиса. Также изучите Vimscript The Hard Way как несколько глав на эту тему.

statox
источник
2
Что делать, если я хочу изменить подсветку для всех типов файлов. Например, я хочу, чтобы цвет комментариев был синим, независимо от типа файла.
Вольфганг Ельч
Я опробовал более или менее подход, который вы предложили. Я добавил файл .vimrc/highlighting.vim, создал каталог .vimrc/syntax/afterи добавил несколько символических ссылок вида * filetype *, .vimкоторые указывают .vimrc/highlighting.vimна этот каталог. Подсветка синтаксиса по-прежнему не работает.
Вольфганг Йельч
@WolfgangJeltsch Да , как мой пост и док говорит , каталог должен быть ~/.vim/after/syntaxне~/.vimrc
statox
Это правильно. Тем не менее, это была только опечатка в моем комментарии. На самом деле, я работал в каталоге, .vimи подсветка синтаксиса не работала, возможно, из-за этой ошибки 542.
Вольфганг Йельч,
нет! не работает.
Яр
1

Для чего это стоит, у меня была эта проблема с MacVim (8.1.950 (155)). Размещение оператора выделения после colorscheme.vimrc исправило его для меня. Например:

highlight SpellCap guisp=Yellow
...
colorscheme evening

->

colorscheme evening
...
highlight SpellCap guisp=Yellow

Халил Озгюр
источник