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


9

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

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

zx

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


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.