zoukankan      html  css  js  c++  java
  • 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/
    本文以学习、研究和分享为主,欢迎转载。如果文中有不妥或者错误的地方还望指出,以免误人子弟。如果你有更好的想法和意见,可以留言讨论,谢谢!
  • 相关阅读:
    CoreOS Hyper-V 安装
    RancherOS Hyper-V 安装
    Android sdk content loader 0%的解决方案
    在launcher隐藏应用图标[大杂烩]
    RTSP、HTTP、HTTPS、SDP四种协议详解
    Webview上下滑动渐变色问题解决
    调节listview的item高度
    软键盘消失有残影 不影响activity原有布局 不会重绘之前界面
    android横竖屏禁止重新绘制的方法
    去除actionbar的左侧图标
  • 原文地址:https://www.cnblogs.com/AdaiCoffee/p/11162059.html
Copyright © 2011-2022 走看看