在docker build期间自动执行vim PluginInstall

问题描述 投票:0回答:2

我正在构建一个docker镜像,我希望它能够下载我的dotfiles,保存在我的github上,以及安装我指定的vim插件。

RUN cd ~ && git clone https://github.com/bdhammel/dotfiles.git && \
    ./dotfiles/makesymlinks.sh && vim +silent! +PluginInstall +qall

但是,这样做会抛出此错误并杀死构建:

Vim: Warning: Output is not to a terminal
Vim: Warning: Input is not from a terminal

有任何解决这个问题的方法吗?

docker vim dockerfile
2个回答
0
投票

无声批处理模式

对于非常简单的文本处理(即使用Vim,如增强的'sed'或'awk',没有任何交互性<=这是阻止输入/输出不是来自终端错误的原因),使用Ex模式。

vim -T dumb -n -i NONE -es -S "commands.ex"

注意:如果"commands.ex"文件不存在,Vim将挂起等待输入;更好地检查它的存在!或者,Vim可以从stdin读取命令。您还可以使用从stdin读取的文本填充新缓冲区,如果使用-参数,则从stderr读取命令。

要避免使用命令单独的脚本,可以使用Bash的进程替换:

... -S <(echo -e "silent! PluginInstall\nqall")

0
投票

这是我使用的完整工作示例:

RUN [ "/bin/bash", "-c", "vim -T dumb -n -i NONE -es -S <(echo -e 'silent! PluginInstall')" ]
© www.soinside.com 2019 - 2024. All rights reserved.