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