2011-09-28 75 views
3

所以我创建了自己的语法高亮文件,如果只打开一个文件,效果很好。但是,如果我做:split otherFile,打开的另一个缓冲区没有语法高亮显示。我尝试了各种各样的东西,如:syntax on等。可能是什么问题?使用拆分命令时,VIM会丢失语法高亮

我使用的是Ubuntu 11.04,64位版本。

VIM版本:VIM - 六提高7.3(2010年8月15日编译2011年3月24日7时07分34秒)

我创建了一个简单的语法高亮文件,并把它放在〜/ vim的/插件/ syntax.vim

语法高亮文件的最后一行是let b:current_syntax =“sth”。 我没有做过任何类型的连线,例如在.vimrc中指定文件位置,语法自动运行(打开一个文件)。

+0

你应该包括平台,版本。你是如何将语法连接到你的文件类型的?有没有自动命令? – sehe

+0

我在文中加入了更多描述。希望它能更好地澄清问题。 – mnovakovic

+1

当你在这两个文件上运行':set filetype?'时会发生什么? – PDug

回答

0

语法文件属于~/.vim/syntax/sth.vim而不是~/.vim/plugin/syntax.vim。后者在启动时只有一次采购,这可能是为什么它只适用于第一个加载的文件。

要使语法变为活动状态,您需要:setf sth,或者在您的文件中插入相应的模式行,或者为您的语法写入文件类型检测以使其自动化。

0

我最近有这个问题,更普遍。也就是说,问题出现在所有文件类型上。调试了一下后,我发现文件类型被正确识别,但是对于新的分割,语法在某种程度上变得未被设置。

我仍然不是100%肯定如何发生这种情况,但对于未来谷歌的访客,我会写下什么固定的麻烦我:我在.vimrc移动set syntax = on早得多。经过多年的增长,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. 
0

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

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