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
因此我就將 markupsafe
和python-jinja2
放在該packages下,可是問題依舊沒有解決,Sublime Text 3還是沒有安裝BracketHighlighter
這個插件
④經過我一番研究,終於發現問題的解決之道。
Sublime Text 3默認會在 C:\Users\用戶名\AppData\Roaming下 創建 Sublime Text 3文件夾
我自己的電腦路徑是C:\Users\ASUS\AppData\Roaming\Sublime Text 3
將 markupsafe
和python-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-jinja2
和 markupsafe
兩個依賴,社區目前正在處理這個問題。
二:自己的問題
其實如果按照官網離線下載,一步一步走下來,完全沒有問題,而自己通過 離線安裝+在線安裝,及自己下載python-jinja2
和 markupsafe
兩個無法在線下載的依賴,提前放到安裝包下,然后通過Package control 下載 BracketHighlighter,它會在線下載其余4個依賴,結果看似是成功了,可是問題一大堆,BracketHighlighter無法識別python-jinja2
和 markupsafe
,相當於這個插件僅僅是一個半成品。
三:剩余問題
雖然通過離線成功安裝了BracketHighlighter,可是還是有一些問題
①
②
③
四:思考
如果要使用離線安裝,那么最好就不再安裝Package Control,后期等社區處理好 markupsafe
和python-jinja2
這兩個依賴包問題,自己還是要使用Package Control 重新下載 BracketHighLighter
出處: https://www.cnblogs.com/AdaiCoffee/
本文以學習、研究和分享為主,歡迎轉載。如果文中有不妥或者錯誤的地方還望指出,以免誤人子弟。如果你有更好的想法和意見,可以留言討論,謝謝!