我正在使用vim编辑一些Python文件,最近,我保存vim缓冲区后,语法高亮度会偶尔消失。 我尝试过重置syntax on
和set filetype=python
,但都没有用。 我没有任何关于导致这个问题的线索,所以现在我只能提供最少量的诊断信息。 但是有人之前遇到过这种情况吗?或者哪里可能出了问题?
我正在使用vim编辑一些Python文件,最近,我保存vim缓冲区后,语法高亮度会偶尔消失。 我尝试过重置syntax on
和set filetype=python
,但都没有用。 我没有任何关于导致这个问题的线索,所以现在我只能提供最少量的诊断信息。 但是有人之前遇到过这种情况吗?或者哪里可能出了问题?
.vimrc
时,我正在玩弄语法/突出显示,这就是为什么我注意到了它。syntax on
/ syntax enable
只是准备文件加载的内容(向 BufNewFile / BufRead
添加了很多 au
)。因此,如果某个插件在编写文件时搞乱了语法/高亮设置,则必须重新加载文件以使所有“魔法”发生,仅设置 filetype
是不够的。执行 :au BufRead
命令,您将看到启动语法时添加的所有自动命令。但是,必须加载文件才能获取所有设置。参见:syntax-loading
syntax enable
,我认为它与 syntax on
不同。:doautocmd filetypedetect BufRead %
,请参见 autocmd-execute
.vimrc
的末尾添加 autocmd BufWritePost * <with the commands above that works>
,在这种情况下使用 augroup
。以下是一个示例:augroup myResetSyntax
au!
autocmd BufWritePost * syntax enable | doautocmd filetypedetect BufRead "%"
augroup END
strace -f vim test-file.type 2>/tmp/vim-strace.out
命令期间,我注意到跟踪文件显示在 source $MYVIMRC
命令期间缺少了三个 VIM 文件。初始 Vim 会话期间的文件处理顺序为:/usr/share/vim/vim81/syntax,
/usr/share/vim/vim81/ftplugin.vim,
$HOME/.vim/ftplugin,
啊!!!无法在注释中格式化行。简而言之,在初始启动期间,:scriptnames
的加载顺序与 :source $MYVIMRC
命令期间的加载顺序不同。 - John Greene您也可以通过重新加载缓冲区来恢复语法,方法如下:
:e
一段时间后,我意识到不正常的突出显示是由折叠而不是与文件保存相关的神秘力量引起的,因此一个简单的解决方法*是在我的vimrc中加入以下内容:
noremap <F9> <Esc>:syntax sync fromstart<CR>
inoremap <F9> <C-o>:syntax sync fromstart<CR>
当出现问题时,只需按下F9键即可解决。
你可以先保存文件
:w
然后使用以下代码刷新缓冲区
:e
:e
命令有帮助吗?我曾经遇到过语法混乱的问题,仅设置filetype
是不够的。 - 244an:e
可以恢复高亮显示 - 但是有没有办法在一开始就避免这个问题?你所说的“混合语法”是什么意思(我的代码是纯Python代码)? - nye17