Vim, как перезагрузить подсветку синтаксиса

Ответы:

95

Использовать :syntax sync fromstart

Я получил этот совет от http://vim.wikia.com/wiki/Fix_syntax_highlighting

В этой статье также предлагается создать сопоставление для этой команды, например, для сопоставления F12:

noremap <F12> <Esc>:syntax sync fromstart<CR>
inoremap <F12> <C-o>:syntax sync fromstart<CR>
Майк Липперт
источник
Это работает, но удаляет подчеркивание для проверки орфографии. Есть способ предотвратить это?
Алек Джейкобсон,
1
Извините, я не знаю. У меня нет ничего, что проверяет орфографию. Это может зависеть от вашего конкретного аддона. Если никто не ответит, возможно, стоит составить вопрос со всей соответствующей информацией.
Майк Липперт
3
В конечном итоге я использую autocmd BufEnter,InsertLeave * :syntax sync fromstartдля принудительной синхронизации синтаксиса после того, как вхожу в буфер. Синтаксическая синхронизация также запускается, когда происходит InsertLeaveсобытие.
Сэмюэл Ли
Может быть, когда-нибудь это кому-нибудь пригодится. Используйте filetype=shили syntax=shдля bash и подобные, нет bash. Мне потребовалось время, чтобы понять это.
quapka
Я использую :do Syntaxэквивалент, :doautocmd Syntaxкоторый немного короче, поэтому вам не нужно его связывать (по крайней мере, мне не нужно вызывать эту команду так часто, поэтому я просто набираю ее). Я в основном использую его в некоторых файлах, содержащих регулярные выражения, из-за которых подсветка синтаксиса прерывается, когда я открываю файл через netrw.
Ренс Тилльманн,
53

Пытаться:

:e

Если у вас нет несохраненных изменений в файле.

Или:

:syn off | syn on
Холидик
источник
Создайте карту, чтобы облегчить боль, что-то вродеnmap <F6> :Rmodel|e<CR>
Holygeek
2
Кажется, должна быть какая-то встроенная команда для обновления подсветки синтаксиса. Что-то еще, что кажется работающим, - это перейти к другой части файла, например, к началу или концу, и вернуться назад, например:gg``
Кейт Пинсон,
2
Команда ": syntax sync fromstart" (без кавычек) не перезагружала подсветку синтаксиса типа файла для файлов, которые иногда не отображают цветовую окраску синтаксиса - по какой-то причине постоянная проблема для меня и Vim. Однако ": syn off | syn on" сразу сработало. ": е!" также выполнит эту перезагрузку, но будьте осторожны: несохраненные изменения в вашем файле будут потеряны!
Виктория Стюарт
:syn off | syn onменяет
цветовую схему
12

Пробовал все вышеперечисленное - у меня ничего не работало.

Единственное, что действительно работает: :filetype detect поэтому я переназначил быстрый ярлык :noremap <Leader>,ftd :filetype detect

JESii
источник
9

Иногда с синтаксисом все в порядке, но все, что ломается, - это складки. В этом случае очень zxпомогает.

Из документации VIM:

zx

Обновить складки: отменить открытые и закрытые вручную складки: повторно применить «foldlevel», затем выполнить «zv»: просмотреть строку курсора. Также заставляет пересчитывать складки. Это полезно при использовании Foldexpr и изменении буфера таким образом, что свертки не обновляются должным образом.

Wormer
источник
5

Другой вариант:

doautocmd Syntax
Чиро Сантилли 郝海东 冠状 病 六四 事件 法轮功
источник
1
fwiw, это единственный ответ, который исправил выделение синтаксиса, когда у меня была эта проблема ( syntax sync fromstartничего не сделал и не сделал ничего другого!)
TJ Ellis
1
Более короткая версия этого была бы:do Syntax
Ренс
-1

Пытаться:

:Rrefresh!

Эта команда обновляет определенные кешированные настройки, а также перезагружает rails.vim .
Это помогло мне обновить подсветку синтаксиса в Rails.

Дзенбро
источник
Это относится только к rails.vimобщему решению, а не к нему. Без этого плагина эта команда не существует.
wchargin
-1

Вы также можете попробовать:

CTRL-L

Из документации VIM ( :h CTRL-L):

Очистите и перерисуйте экран. Перерисовка может произойти позже, после предварительной обработки.

Иордания
источник
Ctrl-L обновляет экран. Не имеет значения, внесли ли вы изменения в соответствующий файл синтаксиса.
Alexis Wilke