Sublime Text 3 安装 BracketHighlighter

1 概述

因为最近在Sublime Text 3安装 BracketHighlighter遇到很多问题,其中踩了很多坑,所以总结下来,造成博客,但愿能帮助更多的人python

2 电脑环境

windows 10git

Sublime Text 3 Version 3.2.1,Build 3207 已注册github

PS:windows

若是不知道本身Sublime Text 3版本的小伙伴能够 经过 Help-> About Sublime Textsublime-text

3 安装BracketHighlighter

① 按照正常流程,咱们会首先安装 Package control,若是不清楚的小伙伴,能够百度随意搜一搜,网上教程不少,我就不重复造轮子了,我默认你们已经安装好 Package control 而且知道如何使用它并安装相应插件服务器

②安装 BracketHighlighter,你们的第一选择确定是在线安装,我本身也是选择的在线安装,但是立马就遇到了问题markdown

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

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/528less

③既然在线安装已经行不通了,那就只有走离线安装了,安装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\用户名\AppData\Roaming下 建立 Sublime Text 3文件夹

我本身的电脑路径是C:\Users\ASUS\AppData\Roaming\Sublime 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/ 本文以学习、研究和分享为主,欢迎转载。若是文中有不妥或者错误的地方还望指出,以避免误人子弟。若是你有更好的想法和意见,能够留言讨论,谢谢!
相关文章
相关标签/搜索