【问题标题】:Provide vim syntax highlighting system wide by debian package通过 debian 包在系统范围内提供 vim 语法高亮
【发布时间】:2015-06-30 18:05:18
【问题描述】:

我在/etc 下使用自己的配置文件编写了一个自定义软件。该软件内置在 Debian 软件包中,并由自定义存储库提供。

为了在 vim 中提供良好的语法突出显示,我编写了所有必要的文件来很好地突出显示我自己的配置文件。如果我将它们放在~/.vim/syntax 下并在~/.vim/filetype.vim 中添加一行,一切正常。

现在我的问题是:如何将我的 vim 扩展打包到我的 Debian 包中,以便在安装期间在系统范围内安装 vim 语法突出显示,而不仅仅是安装用户(root)?

【问题讨论】:

  • /usr/lib 中可能有一个目录或任何具有系统范围文件的目录。找到它,然后把你的文件放在那里。
  • vim 将其语法文件存储在 /usr/share/vim/vim74/syntax 下,但我认为在其他包目录中编写并不好,但也许这是唯一的方法...
  • 不要忘记将vim 添加到您的依赖项中。如果您想获得vim 软件包安装的文件夹和文件列表,请使用dpkg -S vim
  • 那么可能有 /usr/local/share,用于本地模组之类的。
  • @ChrisNbg 试试dpkg -S vim | awk '/addons\/syntax/&&!/vim-runtime/' ...其他包也使用/usr/share/vim/addons。恕我直言,只要您的包需要vim,就可以这样做。

标签: linux vim debian syntax-highlighting packaging


【解决方案1】:

作为ChrisNbg pointed out,有一个名为Packaging of Vim Addons的文档。


imo 如果一个包将文件安装到它所依赖的另一个包所公开的文件夹中,这是可以的。其实是很常用的,比如可以通过插件扩展的软件包,比如vim。

在 Ubuntu 上,vim 期望插件包将其语法文件安装到 /usr/share/vim/addons/syntax/

已使用以下命令来找出答案:

dpkg -S vim | awk '/addons\/syntax/&&!/vim-runtime/'

注意:如果你没有安装插件包,上面的命令可能什么都不显示。

在我的系统上,输出是:

systemtap-common: /usr/share/vim/addons/syntax/stp.vim
python-jinja2: /usr/share/vim/addons/syntax/jinja.vim
apparmor-utils, systemtap-common, python-jinja2: /usr/share/vim/addons/syntax
apparmor-utils: /usr/share/vim/addons/syntax/apparmor.vim

【讨论】:

  • 感谢您的帮助。可以在pkg-vim.alioth.debian.org/vim-policy.html/x113.html 找到有关打包插件的其他 vVim 文档
  • 你为什么害怕使用其他包目录?唯一的问题是,如果您提供 same files 作为另一个包(但即使这样,Debian 也提供 Conflicts: 关系)
  • @umläute 实际上,Conflicts 不适用于可以粉碎文件的情况。如果您的包有一个文件存在于另一个包中,那么它将无法安装,除非您--force-overwrite(请参阅man dpkg 并搜索--force 了解详细信息)。所以还是很安全的。
  • 这显示了如何安装语法文件,filetype.vim 怎么样。那个是怎么处理的?
  • 在 Debian 上,我建议将其放在 /usr/share/addons/plugin/your-plugin-filetype.vim(参见:vim-team.pages.debian.net/vim/x126.html
【解决方案2】:

在大多数 Unices 上的另一种可能性是将文件安装在 /etc/skel 下。这是找到默认用户文件的地方。这种方法的一个小问题是只有新用户才能获得这些默认值。对于现有用户,您必须为每个现有用户轻轻地复制它们(即仅在目标不存在时复制)。

所以你可以把你的文件放在:

/etc/skel/.vim/plugin/my-config.vim
/etc/skel/.vim/syntax/my-config.vim

警告: filetype.vim 文件必须是插件。这是因为filetype.vim 文件只能有一个,如果您想支持其他插件,则必须对其进行编辑。这不太可行。

复制到现有用户需要debian/<package>.postinst 脚本:

#!/bin/sh -e
#
# Finish up the installation

#DEBHELPER#

# Source debconf library.
. /usr/share/debconf/confmodule

if [ "$1" = "configure" ]
then
    # Install files in user folders
    #
    for u in /root /home/*
    do
        name="`basename ${u}`"

        mkdir -p "${u}/.vim/syntax"
        cfg="${u}/.vim/syntax/my-config.vim"
        if ! test -f "${cfg}"
        then
            cp "/etc/skel/.vim/syntax/my-config.vim" "${cfg}"
            chmod 700 "${cfg}"
            chown "${name}" "${cfg}"
        fi

        mkdir -p "${u}/.vim/plugin"
        plg="${u}/.vim/syntax/my-config.vim"
        if ! test -f "${plg}"
        then
            cp "/etc/skel/.vim/plugin/my-config.vim" "${plg}"
            chmod 700 "${plg}"
            chown "${name}" "${plg}"
        fi
    done
fi

这种方法的一个优点是用户可以根据自己的喜好编辑文件。

【讨论】:

    猜你喜欢
    • 2011-06-14
    • 2012-08-16
    • 2013-09-06
    • 2014-11-14
    • 1970-01-01
    • 2011-01-19
    • 2015-08-08
    • 2014-02-18
    • 1970-01-01
    相关资源
    最近更新 更多