Как сделать так, чтобы команды подсветки в .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 как несколько глав на эту тему.


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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.