4

所以我创建了自己的语法高亮文件,如果只打开一个文件,它就可以很好地工作。但是,如果我这样做:split otherFile,则打开的另一个缓冲区没有语法突出显示。我已经尝试过各种各样的事情,比如:syntax on等等。可能是什么问题?

我正在运行 Ubuntu 11.04,64 位版本。

VIM 版本:VIM - Vi IMproved 7.3(2010 年 8 月 15 日,2011 年 3 月 24 日 07:07:34 编译)

我创建了一个简单的语法高亮文件并将其放入 ~/.vim/plugin/syntax.vim

语法高亮文件的最后一行是 let b:current_syntax = "sth"。我没有做任何类型的连接,比如在 .vimrc 中指定文件位置,语法会自动工作(对于打开的一个文件)。

4

3 回答 3

1

我最近遇到了这个问题,而且更普遍。也就是说,所有文件类型都出现了问题。在调试了一下之后,我发现文件类型被正确识别,但是对于新的拆分,语法不知何故变得未设置。

我仍然不能 100% 确定这是怎么发生的,但是对于未来的 Google 访问者,我会写下解决问题的原因:我set syntax = on.vimrc. 经过多年的积累,这条线set syntax = on已经下降到低于其他一些东西。将它移回(几乎)文件顶部为我解决了问题。这是我.vimrc现在开始的样子:

" First two uncommented lines only useful if you use Tim Pope's vim-pathogen.  
" https://github.com/tpope/vim-pathogen
execute pathogen#infect()
execute pathogen#helptags()

" Most general settings first
set nocompatible            " Vim rather than Vi; implied by this file
syntax on                   " Syntax highlighting on
filetype plugin indent on   " Filetype detection

" ... etc.
于 2013-09-08T14:31:04.007 回答
0

语法文件属于~/.vim/syntax/sth.vim,而不是~/.vim/plugin/syntax.vim. 后者在启动时仅提供一次,这可能就是它仅适用于第一个加载的文件的原因。

为了使您的语法变得活跃,您需要:setf sth或将相应的模式行插入到您的文件中,或者为您的语法编写文件类型检测以自动执行该操作。

于 2012-11-02T14:33:43.857 回答
0

复活这一点,因为我刚刚观察到同样的行为。我找到的解决方案是将filetype on设置添加到我的 .vimrc 文件中。fwiw,我在之后立即添加了它syntax onsyntax on碰巧已经在我的 .vimrc 文件的顶部。所以,这里是我的 .vimrc 的前几行:

1 " Activates Syntax Highlighting 2 syntax on 3 4 " Filetype on 5 filetype on

于 2016-03-30T21:23:33.823 回答