Як я можу зробити так, щоб команди підсвічування в .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).

  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 *, які було запропоновано як вирішення у звіті про помилку. Це все ще не працює. ☹
— Вольфганг Йелтч

Зараз я пишу власну кольорову гаму, яка, очевидно, також працює навколо цієї помилки.
— Вольфганг Йелтш

Крістіан, ти можеш просто написати свій коментар як відповідь? Зрештою, це правильна відповідь на мою проблему. Або є якийсь інший підхід для вирішення питань, які насправді виявляють помилки?
— Вольфганг Йелтч

Відповіді:


5

Це не є однозначною відповіддю, і ваша проблема звучить як питання 542 . Мабуть, ви можете обійти його, написавши власну базову hi ...схему кольорів , замість того, щоб писати ці заяви безпосередньо у свій .vimrc.


Я думаю, що саме через це питання Vim; тож ваш відгук справді здається правильною відповіддю на мою проблему.
— Вольфганг Йелтч

3

Насправді не слід розміщувати власні виділення у файлі vimrc, а у файлах митного синтаксису.

Ці файли повинні розташовуватися ~/.vim/after/syntax/filetype.vimтам, де filetypeочікується тип файлу. Якщо ви в основному задоволені синтаксичним файлом, але хочете додати кілька команд, ви можете виконати наступні дії (взяті з :h mysyntaxfile-add):

  1. Створіть там каталог, який називається "після / синтаксис". Для Unix:

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

    highlight cComment ctermfg=Green guifg=Green
    
  3. Запишіть цей файл у каталог "після / синтаксис". Використовуйте ім’я синтаксису, додавши ".vim". Для нашого синтаксису С:

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

Це воно. Наступного разу, коли ви редагуєте файл C, колір коментаря буде іншим. Вам навіть не доведеться перезапускати Vim.

:h mysyntaxfileце гарне місце для отримання інформації про те, як правильно виправити власні файли синтаксису. Також вивчіть Vimscript The Hard Way як кілька глав на цю тему.


3
Що робити, якщо я хочу змінити виділення для всіх типів файлів. Наприклад, я хочу, щоб колір коментарів був темно-синім, незалежно від типу файлу.
— Вольфганг Йелтч

Я випробував більш-менш підхід, який ви запропонували. Я додав файл .vimrc/highlighting.vim, створив каталог .vimrc/syntax/afterі додав декілька символічних посилань форми * тип файлу *, .vimякі вказують .vimrc/highlighting.vimна цей каталог. Підсвічування синтаксису все ще не працює.
— Вольфганг Йелтч

@WolfgangJeltsch Так , як мій пост і док каже , каталог повинен бути ~/.vim/after/syntaxНЕ~/.vimrc
— statox

Це правильно. Однак це був лише друкарський помилок у моєму коментарі. Насправді я працював у довіднику, .vimі підсвічування синтаксису не працювало, ймовірно, через цю помилку 542.
— Вольфганг Йелтш

ні! не працює.
— Яр

1

Оскільки це варте, у мене була ця проблема з MacVim (8.1.950 (155)). Розміщення оператора підсвічування після colorschemein .vimrc виправило його для мене. Наприклад:

highlight SpellCap guisp=Yellow
...
colorscheme evening

->

colorscheme evening
...
highlight SpellCap guisp=Yellow

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.