我正在使用vim来编辑一些python文件,最近它偶尔发生,我将缓冲区保存在vim中后语法突出显示消失了。我尝试重置syntax on
和set filetype=python
,但无济于事。我根本不知道导致这个问题的原因,所以现在我的诊断信息很少。但是之前有没有人遇到过这种情况,或者哪里可能发生故障?
答案 0 :(得分:5)
这不是一个解决方案,但在评论中写/读很难。
当我开始修复自己的.vimrc
时,我的意思是我正在搞乱语法/突出显示,这就是为什么我注意到它。
syntax on
/ syntax enable
仅准备文件加载内容(向au
添加了大量BufNewFile / BufRead
)。因此,如果某个插件在编写文件时弄乱了语法/高亮设置,则必须再次加载该文件才能发生所有“魔法”,设置filetype
是不够的。执行:au BufRead
,您将看到启动语法时添加的所有自动命令。但是必须加载该文件才能获得所有的settigs
见:> 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
答案 1 :(得分:2)
过了一段时间后,我意识到螺旋式突出显示是由折叠而不是与文件保存相关的任何神秘力量引起的,所以一个简单的修复*就是将以下内容放在我的vimrc中
noremap <F9> <Esc>:syntax sync fromstart<CR>
inoremap <F9> <C-o>:syntax sync fromstart<CR>
每当发生棘手的事情时按F9键。
答案 2 :(得分:2)
您还可以通过以下方式重新加载缓冲区来恢复语法:
:e
答案 3 :(得分:0)
您可以首先使用保存文件
:w
然后用
刷新缓冲区:e