我正在使用 vim 编辑一些 python 文件,最近在我将缓冲区保存在 vim 后偶尔会出现语法突出显示消失的情况。我试图重置syntax on
,set filetype=python
但无济于事。我根本不知道是什么导致了这个问题,所以现在我的诊断信息很少。但是以前有没有人遇到过这种情况,或者事情可能在哪里发生故障?
4 回答
这不是一个解决方案,但很难在评论中写/读。
我的意思是当我开始修复自己的语法/突出显示时,我正在搞乱.vimrc
,这就是我注意到它的原因。
syntax on
/syntax enable
只是为文件加载做准备(添加很多au
到BufNewFile / BufRead
)。因此,如果某些插件在编写文件时弄乱了语法/突出显示设置,则必须再次加载文件以使所有“魔术”发生,仅设置filetype
. 执行:au BufRead
此操作,您将看到启动语法时添加的所有自动命令。但是必须加载该文件才能获取所有设置。
看到这个:>syntax-loading
如果您不想重新加载文件,请尝试syntax enable
,我认为这与syntax on
.
或尝试也这样做:doautocmd filetypedetect BufRead %
,请参阅>autocmd-execute
我不知道是什么导致了问题,可能是你吗?如果您添加了一些自动命令,或者使用自己的颜色/语法?
否则,在您得到解决方案之前,您也许可以尝试autocmd BufWritePost * <with the commands above that works>
在 , 末尾添加.vimrc
,在这种情况下使用augroup
。
这是一个例子:
augroup myResetSyntax
au!
autocmd BufWritePost * syntax enable | doautocmd filetypedetect BufRead "%"
augroup END
现在过了一会儿,我意识到扭曲的突出显示是由折叠引起的,而不是与文件保存相关的任何神秘力量,所以一个简单的修复*是将以下内容放入我的 vimrc
noremap <F9> <Esc>:syntax sync fromstart<CR>
inoremap <F9> <C-o>:syntax sync fromstart<CR>
并在发生奇怪的事情时按 F9。
您还可以通过简单地通过以下方式重新加载缓冲区来恢复语法:
:e
您可以先保存文件
:w
然后刷新缓冲区
:e