• Sublime Text 3 安装 BracketHighlighter


    1 概述

    由于最近在Sublime Text 3安装 BracketHighlighter遇到不少问题,其中踩了不少坑,因此总结下来,形成博客,希望能帮助更多的人

    2 电脑环境

    windows 10

    Sublime Text 3 Version 3.2.1,Build 3207 已注册

    PS:

    如果不知道自己Sublime Text 3版本的小伙伴可以 通过 Help-> About Sublime Text

    3 安装BracketHighlighter

    ① 按照正常流程,我们会首先安装 Package control,如果不清楚的小伙伴,可以百度随意搜一搜,网上教程很多,我就不重复造轮子了,我默认大家已经安装好 Package control 并且知道如何使用它并安装相应插件

    ②安装 BracketHighlighter,大家的第一选择肯定是在线安装,我自己也是选择的在线安装,可是立马就遇到了问题

    第一个坑  ctrl+` 打开控制台,会发现有如下错误

    Package Control: The dependency 'python-jinja2' is not currently installed;             
    Package Control: The dependency 'python-jinja2' is not available
    Package Control: The dependency 'python-jinja2' could not be installed or updated
    

    这是因为 python-jinja2这个依赖包是放在bitbucket上而非Github上,目前Sublime Text 3在线安装,如果需要bitbucket上的依赖,基本上都会失败。估计是bitbucket那边的问题,具体原因我也不清楚,目前社区正在处理这个问题,如果感兴趣的朋友可以去github上看https://github.com/facelessuser/BracketHighlighter/issues/528

    ③既然在线安装已经行不通了,那就只有走离线安装了,安装BracketHighlighter总共需要6个插件,其中有两个插件在bitbucket上,我们必须手动下载下来,然后再通过在线安装。

    https://bitbucket.org/teddy_beer_maniac/sublime-text-dependency-jinja2 将解压过后的安装包更名为python-jinja2

    https://bitbucket.org/teddy_beer_maniac/sublime-text-dependency-markupsafe -> 将解压过后的安装包更名为markupsafe

    第二个坑 网上很多教程包括官网说离线安装包 放到 Packages 下,而安装目录刚好有一个Packages

    因此我就将 markupsafepython-jinja2放在该packages下,可是问题依旧没有解决,Sublime Text 3还是没有安装BracketHighlighter这个插件

    ④经过我一番研究,终于发现问题的解决之道。

    Sublime Text 3默认会在 C:Users用户名AppDataRoaming下 创建 Sublime Text 3文件夹

    我自己的电脑路径是C:UsersASUSAppDataRoamingSublime Text 3

    markupsafepython-jinja2放在C盘下的Sublime Text 3/Packages,然后再打开Sublime,进行在线安装,问题得以解决,成功安装上BracketHighlighter这个插件。

    于是我打算关闭电脑,准备睡觉,屏幕面前刚好有一个JS文件,我就随意点了点,但是好像括号不起效果,于是我就上网查了查,大家都说BracketHighlighter需要一些配置,于是我就按照网上相关教程进行配置,可是居然配置了一个小时都没有成功!!!我真的是惊呆了

    第三个坑

    直觉告诉我,应该是插件出问题了,于是乎我点开Quick Start Guide 和 Support Info

    果不其然,Quick Start Guide 点开是一个空文件,Support Info中 插件信息不完整,有的插件有版本信息,有的插件没有版本信息 PS:BracketHighlighter需要6个插件依赖

    于是乎,我立马重新回到官网http://facelessuser.github.io/BracketHighlighter/installation/,从头开始重新操作一遍。

    ①下载6个插件,并且按照官网要求更改解压包目录名,然后将文件放到Package下

    ②在github上下载BracketHighlighter并按照官网要求更改解压包目录,然后将文件放到Package下

    ③按照官网要求在Package包下创建00-dependencies文件夹并且在该文件夹下创建文件00-dependencies.py,然后将下列代码,复制到该文件中。

    import sys
    import os
    from os.path import dirname
    
    if os.name == 'nt':
        from ctypes import windll, create_unicode_buffer
    
    import sublime
    
    
    if sys.version_info >= (3,):
        def decode(path):
            return path
    
        def encode(path):
            return path
    
        if os.path.basename(__file__) == 'sys_path.py':
            pc_package_path = dirname(dirname(__file__))
        # When loaded as a .sublime-package file, the filename ends up being
        # Package Control.sublime-package/Package Control.package_control.sys_path
        else:
            pc_package_path = dirname(__file__)
        st_version = u'3'
    
    else:
        def decode(path):
            if not isinstance(path, unicode):
                path = path.decode(sys.getfilesystemencoding())
            return path
    
        def encode(path):
            if isinstance(path, unicode):
                path = path.encode(sys.getfilesystemencoding())
            return path
    
        pc_package_path = decode(os.getcwd())
        st_version = u'2'
    
    
    st_dir = dirname(dirname(pc_package_path))
    
    
    def add(path, first=False):
        """
        Adds an entry to the beginning of sys.path, working around the fact that
        Python 2.6 can't import from non-ASCII paths on Windows.
    
        :param path:
            A unicode string of a folder, zip file or sublime-package file to
            add to the path
    
        :param first:
            If the path should be added at the beginning
        """
    
        if os.name == 'nt':
            # Work around unicode path import issue on Windows with Python 2.6
            buf = create_unicode_buffer(512)
            if windll.kernel32.GetShortPathNameW(path, buf, len(buf)):
                path = buf.value
    
        enc_path = encode(path)
    
        if os.path.exists(enc_path):
            if first:
                try:
                    sys.path.remove(enc_path)
                except (ValueError):
                    pass
                sys.path.insert(0, enc_path)
            elif enc_path not in sys.path:
                sys.path.append(enc_path)
    
    
    def remove(path):
        """
        Removes a path from sys.path if it is present
    
        :param path:
            A unicode string of a folder, zip file or sublime-package file
        """
    
        try:
            sys.path.remove(encode(path))
        except (ValueError):
            pass
    
        if os.name == 'nt':
            buf = create_unicode_buffer(512)
            if windll.kernel32.GetShortPathNameW(path, buf, len(buf)):
                path = buf.value
            try:
                sys.path.remove(encode(path))
            except (ValueError):
                pass
    
    
    def generate_dependency_paths(name):
        """
        Accepts a dependency name and generates a dict containing the three standard
        import paths that are valid for the current machine.
    
        :param name:
            A unicode string name of the dependency
    
        :return:
            A dict with the following keys:
             - 'ver'
             - 'plat'
             - 'arch'
        """
    
        packages_dir = os.path.join(st_dir, u'Packages')
        dependency_dir = os.path.join(packages_dir, name)
    
        ver = u'st%s' % st_version
        plat = sublime.platform()
        arch = sublime.arch()
    
        return {
            'all': os.path.join(dependency_dir, 'all'),
            'ver': os.path.join(dependency_dir, ver),
            'plat': os.path.join(dependency_dir, u'%s_%s' % (ver, plat)),
            'arch': os.path.join(dependency_dir, u'%s_%s_%s' % (ver, plat, arch))
        }
    
    
    def add_dependency(name, first=False):
        """
        Accepts a dependency name and automatically adds the appropriate path
        to sys.path, if the dependency has a path for the current platform and
        architecture.
    
        :param name:
            A unicode string name of the dependency
    
        :param first:
            If the path should be added to the beginning of the list
        """
    
        dep_paths = generate_dependency_paths(name)
    
        for path in dep_paths.values():
            if os.path.exists(encode(path)):
                add(path, first=first)
    
    
    add_dependency('pygments')
    add_dependency('backrefs')
    add_dependency('markupsafe')
    add_dependency('python-markdown')
    add_dependency('python-jinja2')
    add_dependency('mdpopups')
    

    最后看一下文件目录:

    ④重启Sublime

    4 成功

    最终终于成功了!!!

    然后我们再点击 Quick Start Guide 和 Support Info

    Quick Start Guide 相应Markdown文件 能够正常显示

    Support Info 所有插件显示正常

    5 自定义配置

    这个时候我们也可以自定义相应的配置,比如我不想要下划线显示,而是高亮显示

    找到大概在686行左右,将style中的underline改成highlight

    PS:这里有两种修改方法

    ①直接在左面文件及插件默认配置文件中进行修改,如果后期想要恢复最初的配置,那就得看你的记忆力好不好了。

    ②在右边文件中进行修改,这种方式是最好的,及复制左边的文件内容到右边,在右边及用户文件中进行修改,这样不会影响插件默认配置文件,Sublime Text 3 优先读取用户自定义文件。

    如果大家还需要其他的配置,可以认真看这个配置文件,注释信息写的挺齐全的,当然如果英语不好或者时间紧迫的小伙伴,可以通过google、百度获取相关配置信息

    6 总结

    一:原因

    ​ 这次遇到安装BracketHighlighter插件问题的主要原因,是因为bitbucket服务器有问题,导致无法下载python-jinja2markupsafe两个依赖,社区目前正在处理这个问题。

    二:自己的问题

    其实如果按照官网离线下载,一步一步走下来,完全没有问题,而自己通过 离线安装+在线安装,及自己下载python-jinja2markupsafe两个无法在线下载的依赖,提前放到安装包下,然后通过Package control 下载 BracketHighlighter,它会在线下载其余4个依赖,结果看似是成功了,可是问题一大堆,BracketHighlighter无法识别python-jinja2markupsafe,相当于这个插件仅仅是一个半成品。

    三:剩余问题

    ​ 虽然通过离线成功安装了BracketHighlighter,可是还是有一些问题




    四:思考

    如果要使用离线安装,那么最好就不再安装Package Control,后期等社区处理好 markupsafepython-jinja2这两个依赖包问题,自己还是要使用Package Control 重新下载 BracketHighLighter

    作者:一杯热咖啡AAA
    出处:https://www.cnblogs.com/AdaiCoffee/
    本文以学习、研究和分享为主,欢迎转载。如果文中有不妥或者错误的地方还望指出,以免误人子弟。如果你有更好的想法和意见,可以留言讨论,谢谢!
  • 相关阅读:
    vue使用elementui合并table
    使用layui框架导出table表为excel
    vue使用elementui框架,导出table表格为excel格式
    前台传数据给后台的几种方式
    uni.app图片同比例缩放
    我的博客
    【C语言】取16进制的每一位
    SharePoint Solution 是如何部署的呢 ???
    无效的数据被用来用作更新列表项 Invalid data has been used to update the list item. The field you are trying to update may be read only.
    SharePoint 判断用户在文件夹上是否有权限的方法
  • 原文地址:https://www.cnblogs.com/AdaiCoffee/p/11162059.html
Copyright © 2020-2023  润新知