Отключение подсветки синтаксиса vim внутри комментариев на С++

Недавно я загрузил vim 8.0. Я не знаю, перепутал ли я что-то или изменил значение по умолчанию, но в этом коде...

int foo()
{
    // This is a comment containing a "string" and the number 5.
    return 42;
}

... "string" и 5 находятся в другом цвете. Это тот же цвет, что и при обычном коде. Я этого раньше не видел. Как отключить его?

Ответы

Ответ 1

Это было необычно сложно найти, но ответ в файлах справки vim. Это особенность подсветки синтаксиса для кода C и С++, который поставляется с vim. От :h ft-c-syntax:

Несколько вещей в подсветке C являются необязательными. Чтобы дать им возможность назначить любое значение соответствующей переменной. Пример:
  :let c_comment_strings = 1
Чтобы отключить их, используйте ": unlet". Пример:
  :unlet c_comment_strings

Переменная c_comment_strings управляет подсветкой строк, символов и чисел внутри комментариев. Должно быть, это было включено где-то в моей настройке. Если я :unlet, все комментарии выделены одним цветом снова.

Ответ 2

Ну, я понимаю автоответчик, но я настоятельно рекомендую, чтобы кто-то серьезно относился к использованию Vim в качестве инструмента для кодирования на С++ для просмотра vim color_coded. Невозможно добиться удовлетворительного раскрашивания с помощью простой схемы, основанной на рефгексе. Хотя это и не без проблем, этот плагин (на мой взгляд) максимально приближен к тому, что он делает правильную раскраску в Vim.

Ответ 3

Если я правильно понимаю, вы хотите отключить подсветку синтаксиса.

:syntax disable

Если вы не root и установите nocompatible, вы можете прокомментировать его в последней строке (см. "h: modeline" ).

// vi:syntax disable:

Каждый раз, когда вы открываете его как пользователя без полномочий root, команда вступает в силу.