Vim,如何重新加载语法高亮


Answers:


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>

这有效,但是删除了拼写检查的下划线。有什么办法可以防止这种情况?
亚历克·雅各布森2014年

1
对不起,我不知道。我没有进行拼写检查。这可能取决于您的特定插件。如果没有其他人回答,则可能值得提出所有相关信息的问题。
Mike Lippert 2014年

3
autocmd BufEnter,InsertLeave * :syntax sync fromstart输入缓冲区后,我最终不得不强制语法同步。InsertLeave发生事件时也会触发语法同步。
Samuel Li

也许有人会觉得这一天有用。请勿将filetype=shsyntax=sh用于bash等bash。花了一段时间找我解决这个问题。
quapka

我使用的:do Syntax等效项:doautocmd Syntax只是短一点,所以您不必绑定它(至少我不必经常调用此命令,因此我只需键入它)。我主要在某些包含正则表达式的文件中使用它,当我通过netrw打开文件时,这会导致语法高亮显示中断。
Rens Tillmann

53

尝试:

:e

如果没有未保存的文件更改。

要么:

:syn off | syn on

创建一个减轻疼痛的映射,就像nmap <F6> :Rmodel|e<CR>
holygeek 2012年

2
似乎应该有一些内置命令来刷新语法突出显示。似乎可行的其他方法是跳到文件的另一部分,例如开头或结尾,然后跳回,例如:gg``
Keith Pinson 2012年

2
“:syntax sync fromstart”(不带引号)未在有时不显示语法颜色的文件上重新加载文件类型语法高亮显示–由于某种原因,这对我和Vim来说都是一个持续的问题。但是,“:syn off | syn on”立即起作用。“:e!” 也会完成该重新加载,但是请注意:文件的未保存更改将丢失!
维多利亚·斯图尔特

:syn off | syn on为我改变了色彩设计,这很烦人
naught101 '18

12

尝试了以上所有方法-没有一个对我有用。

唯一起作用的是: :filetype detect 所以我重新映射了一个快捷方式 :noremap <Leader>,ftd :filetype detect


9

有时语法可以,但是所有折断的地方都是折叠。在那种情况下有zx很多帮助。

从VIM文档中:

x

更新折叠:撤消手动打开和关闭的折叠:重新应用'foldlevel',然后执行“ zv”:查看光标行。还强制重新计算折叠。当使用'foldexpr'并且缓冲区被改变而导致折叠无法正确更新时,这很有用。



-1

尝试:

:Rrefresh!

此命令刷新某些缓存的设置,并重新加载rails.vim
这有助于我刷新Rails中的语法高亮显示。


适用于rails.vim而非通用解决方案。没有该插件,该命令将不存在。
wchargin '16

-1

您也可以尝试:

CTRL-L

从VIM文档(:h CTRL-L):

清除并重新绘制屏幕。重画可能会在稍后处理后发生。


Ctrl-L刷新屏幕。如果更改了相应的语法文件,则没有任何区别。
亚历克西斯·威尔克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.