我没有在 vim 中获得语法着色(使用 Cygwin)

ico*_*ast 4 vim cygwin

到目前为止,我一直无法弄清楚为什么 vim 的语法着色对大多数文件不起作用,这让我很生气。

如果这是相关的:我在 Cygwin(更具体地说/准确地说是 Windows 版 Git 附带的 bash shell)中工作,因为这是迄今为止我唯一能够走私到这家 Windows 商店的东西。(我有时会带上我的 MacBook Air,但它有点不受欢迎。此外,与大多数 Windows 商店一样,他们对安装软件感到偏执,因此完整的 Cygwin 安装需要理由。另外,我不使用 gvim,因为我更喜欢在终端中使用 vim。)

如果我告诉 vim 文件是 C++,我可以让语法着色工作

:set syntax=cpp
Run Code Online (Sandbox Code Playgroud)

或者如果它是一个 shell 脚本,但如果我使用的是 Ruby 或 PHP,则不是。

我已确保使用:syntax on和打开语法:syntax enable。

我试过在其中安装 vim 语法文件,~/.vim/syntax/<syntax-type>.vim但这并没有什么不同。

我确保文件具有标准文件扩展名,因此如果使用 Vagrantfile,我尝试添加“.rb”,并且尝试避免使用 .vimrc 文件(以及尝试其他 .vimrc 文件):

vim -u /dev/null Vagrantfile.rb
Run Code Online (Sandbox Code Playgroud)

我还确保 Ruby 文件具有正常的“shebang”行。

到目前为止,一切都没有奏效。

什么会阻止 vim 正确着色某些文件?

小智 6

你必须在不兼容模式下设置 vim,所以它的行为不像 vi。您应该打开语法并打开文件类型检测和插件检测。这是您可以尝试的最小 .vimrc:

set nocp
syntax on
filetype plugin indent on 
Run Code Online (Sandbox Code Playgroud)

这将使 vim 表现得更好一些并提供语法着色。但是还有很多事情可以改变。

您应该安装诸如pathogen或vundle 之类的东西,以便您可以轻松安装新的语法文件和其他脚本。