vim 在 Docker 容器中使用时不突出显示语法
Posted
技术标签:
【中文标题】vim 在 Docker 容器中使用时不突出显示语法【英文标题】:vim not highlighting syntax when used in a Docker container 【发布时间】:2017-08-07 22:10:43 【问题描述】:我创建了一个基于 Opensuse 42.3 映像的 Docker 容器。我遇到问题,vim 在我的 Opensuse 42.3 容器中没有执行任何语法突出显示。我在 Opensuse 42.3 主机上运行我的 Docker 映像。如果我从容器中打开一个 bash 文件并使用 :syntax on
,则不会发生任何事情。我在调用docker run
时使用了-it 标志,当我使用ls
时我可以看到文件/文件夹上的颜色。采购 .vimrc 文件似乎也没有任何作用。我的 XTERM 环境变量设置为“xterm”,而我用 vim 查看的文件是一个 bash shell 脚本文件。
我已将我的 linux 主目录挂载到容器的主目录中。有哪些方法可以验证或运行测试以查看问题的根源可能在哪里?
【问题讨论】:
可能环境变量TERM
没有正确设置。如果您在问题中包含您正在使用的终端仿真器和/或多路复用器,以及:echo $TERM
的输出,它可能会对其他人有所帮助。您可能还对:h 06.2
感兴趣。此外,您可能更喜欢:syntax enable
而不是:syntax on
。 :syntax enable
不会将语法项链接到突出显示组(如果已完成)。
我有一个 shell 脚本,我在进入容器时获取该脚本,其中包含:export TERM=xterm。我不确定如何找出我正在使用的模拟器。我只是使用 OpenSuse 42.3 的默认终端。我也不明白“:h 06.2”的上下文。这意味着什么?语法启用对语法高亮没有任何影响。
我投票结束这个问题作为题外话,因为没有办法知道 OP 的环境,或者 filetype
vim 语法颜色不适用。
颜色方案是否激活;即:hi
是否有彩色输出?如果是,则容器中没有安装语法定义/文件类型检测。如果不是,请检查:set t_Co?
,它可能是2
。这表明$TERM
或已安装的终端定义存在问题。
@wandadars :h 06.2
是您可以在 Vim 命令行上键入的命令。一旦执行,Vim 应该会显示一个来自内置帮助的页面,解释可能导致颜色缺失的原因。
【参考方案1】:
我使用:hi
命令并打开vi,输出是彩色的。根据 Ingo Karkat 的说法,这意味着容器中没有安装语法定义/文件类型检测。我用zypper install -y vim-data
,vi开始高亮文件中的语法。
【讨论】:
【参考方案2】:我也遇到了同样的问题。我使用的系统是docker + centos7+ vim7。我通过将 vim 7 更新为 vim 8 解决了这个问题。
【讨论】:
以上是关于vim 在 Docker 容器中使用时不突出显示语法的主要内容,如果未能解决你的问题,请参考以下文章
Docker 容器在本地工作,但在上传到 elasticbeanstalk 时不工作