Можем ли мы экранировать типы, коды и т. д. в разделе комментариев, чтобы проверка орфографии не считала их опечаткой

Vim уже поддерживает проверку орфографии только в разделе комментариев, однако, если у меня есть имя типа или что-то не обычное слово, он будет считать это опечаткой. Например, в следующем примере std::endl будет выделено как опечатка.

// Don't use std::endl, it will flush unnecessarily

Я бы хотел, чтобы мы могли использовать ``, чтобы избежать их, как показано ниже.

// Don't use `std::endl`, it will flush unnecessarily

Есть ли какие-либо советы или решения для этого, кроме добавления всего в словарь?

Я действительно не хочу отключать проверку орфографии из-за этого, поэтому любая помощь очень ценится.

Благодарю вас!


person Validus Oculus    schedule 06.09.2020    source источник
comment
Рассмотрите возможность использования стека Vi и Vim для вопросов по Vim!   -  person filbranden    schedule 07.09.2020
comment
Я не знал, что он существует, спасибо @filbranden   -  person Validus Oculus    schedule 07.09.2020


Ответы (1)


Вы можете использовать это синтаксическое правило, чтобы создать новую группу, соответствующую блоку `...`, и отключить правописание внутри этих блоков:

syntax region cCommentNoSpell start=+`+ end=+`+
    \ contained containedin=cComment,cCommentL transparent
    \ contains=@NoSpell

Чтобы загрузить это для файлов cpp и c, добавьте эту строку (отдельно) в файл ~/.vim/after/syntax/c.vim, чтобы он загружался после файлов системного синтаксиса для C++ и C. (Правило синтаксиса cpp включает весь синтаксис для c, поэтому вы получите это и на cpp тоже.)

Синтаксическое правило использует ` как начальный, так и конечный разделитель.

Он использует contained и containedin только для соответствия внутренним комментариям. Правило cComment соответствует традиционным многострочным комментариям /* ... */, а правило cCommentL соответствует однострочным комментариям // .... (Оба определены в файле синтаксиса для C и C++, поставляемого с Vim.)

Атрибут transparent предписывает не использовать это синтаксическое правило в качестве группы выделения, поэтому он сохраняет нормальное выделение комментариев в частях, соответствующих этому правилу.

Наконец, contains=@NoSpell отключает проверку правописания в регионах, соответствующих этому правилу. См. :help spell-syntax для получения дополнительной информации о том, как правописание работает вместе с подсветкой синтаксиса.

person filbranden    schedule 07.09.2020
comment
Если я хочу распространить это на строки в кавычках, какое имя для этого соответствует правилу? Я искал в справке по синтаксису, но не смог найти ничего подходящего. Если вы знаете, это было бы очень полезно! - person Validus Oculus; 07.09.2020
comment
@ValidusOculus Это cString и cCppString. Я нахожу их в источнике, ищущем @Spell, так они получают правописание, поэтому их легко найти таким образом! - person filbranden; 07.09.2020
comment
Действительно ценю это! Он работает отлично! Спасибо и за предложение. - person Validus Oculus; 07.09.2020