Vim "syntax on" 无效

16

这是我的.vimrc

  1 syntax on
  2 set ts=4
  3 set number
  4 set smartindent
  5 set shiftwidth=4

然而,我尝试编辑 HelloWorld.javaHelloWorld.c ,但它们都是纯正常黑色字体,没有任何高亮!

我也尝试在打开vim后输入:syntax on命令,但没成功。

\>vim -version
VIM - Vi IMproved 7.3 (2010 Aug 15)

\>cat /etc/*-release
openSUSE 11.4 (x86_64)
VERSION = 11.4
CODENAME = Celadon
6个回答

20

当您编辑文件时,您是否正在使用

vim filename

这很重要。在某些服务器配置中,如果您使用 vi 文件名 命令,会得到 vim 编辑器,但它是非常精简的,非常类似于原始的 vi(其中不包括语法着色等功能)。在这种配置下的系统中,如果您改为使用 vim 文件名 命令,就可以得到完整功能的 vim。

我刚刚帮助一个使用 vim-minimal 和其他 vim 包的服务器的人解决了这个问题。我怀疑(但没有验证)vim-minimal 这个软件包把它的可执行文件安装成了 /bin/vi

当您查看实际文件时 (例如,运行ls -l /bin/vils -l /usr/bin/vim),差异非常明显--其中一个大约是另一个的十倍大小。它们都是同一个版本的 vim,但是 /bin/vi 版本编译时启用了非常少的功能。

更让人困惑的是:

vi existing.pl

打开了.pl文件,但没有语法高亮。

vi [enter]

显示了 Vim 的欢迎界面,从那里开始。

:e existing.pl

我打开了带有语法着色的文件。

Jan Wilamowski的评论建议进行以下检查:

vi --version

如果显示语法功能未编译,请尝试

vim --version

并查看是否已经在其中编译。


1
太棒了。在过去的几年里,我花了数小时来尝试让语法高亮正常工作。它在我2005年安装的CentOS 4服务器上开箱即用,但之后的任何东西都不行。我阅读了许多文章,都告诉我要在.vimrc中添加“syntax on”,但直到现在仍然没有效果。vim和vi实际上是不同的二进制文件。向你致敬,先生。 - mdoyle
@mdoyle,我刚收到有关这个问题的通知,所以过来重新阅读了您的评论。我希望我能把所有的问题声誉都给您,感谢您让我知道这对您有多大帮助!感谢您抽出时间打字。即使两年后回想起来,我仍然感到非常高兴。 - msouth
1
运行 vi --version 命令后,我得到了一个功能列表,其中指出 syntax 确实没有被包含在内。 - Jan Wilamowski
感谢@JanWilamowski,我将其添加为答案中的诊断工具。感谢您抽出时间进行评论。 - msouth

7
您需要在openSUSE上安装vim-data软件包才能使vim语法着色正常工作。听起来有些奇怪,我知道这不是vim软件包的默认设置,但据我所知,这是为那些想要创建微型基础安装的人准备的。 软件包vim-data包含了运行时文件。
此外,请确保您的远程环境设置了适当的TERM变量,TERM=screen-256color、TERM=xterm、TERM=xterm-256color都可以与ssh和ssh with screen/tmux一起正常使用。

1
感谢您让我免于在终端上挣扎了30分钟。 - tonysdg

3
如果您已经完成了上述所有步骤,但看到的是一些下划线和加粗,而不是实际的颜色...那么这个方法可能适合您:
export TERM=xterm-color

谢谢!这个修复了我的语法高亮;tmux将TERM设置为screen-256color,而vim似乎不喜欢。 - Haldean Brown

2
在你的 .vimrc 文件中,我没有看到 filetype 设置。你可以尝试添加以下内容:
filetype plugin indent on 

添加到你的vimrc文件中。

如果你没有set nocp,也要添加这一行。

如果你查看:h filetype

:filetype on

Each time a new or existing file is edited, Vim will try to recognize the type
of the file and set the 'filetype' option.  This will trigger the FileType
event, which can be used to set the syntax highlighting, set options, etc.

谢谢,肯特。我尝试了,但没有成功。顺便说一下,我使用ssh连接这个openSUSE服务器。 - JackWM

2

没有提到的一项是:set syntax=<type>,例如:set syntax=markdown

在其他技术无法解决问题时,这种方法也取得了成功。


2

由于某种奇怪的原因,在MacOS上,“syntax on”必须是您的.vimrc文件中的第一行。如果将该行放置在文件的其他位置,则该行似乎会被忽略。


这解决了我的错误。另外,如果你在其他行号上设置了“syntax on”,虽然它会抱怨“-bash: syntax: command not found”,但你将开始在vi/vim编辑器中看到颜色。 - Testing123

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接