需求
sublime 相對VScode有更快的啟動速度,這一點是我比較偏愛sublime的原因。 使用sublime編輯markdown的時候,有時候需要頻繁插入截圖,但是剪切板中的截圖不能直接拷貝到文本中,造成markdown插入圖片很麻煩。
有一種想法:截圖自動保存在本地某一個位置,sublime插件自動找到剛剛獲取的截圖位置,修改為
的markdown圖片形式自動插入到編輯文本中。
幸運的是,有人已經(jīng)做過這件事情了 https://blog.csdn.net/darkread/article/details/79682380
實現(xiàn)
sublime自定義python插件的方法看這里,介紹相當(dāng)詳細(xì)了
http://www.itdecent.cn/p/e2558ee1d503
python腳本主要拷貝自https://blog.csdn.net/darkread/article/details/79682380
,此腳本注意以下幾點:
- 腳本讀取當(dāng)前編輯文件的所在目錄下的/image子文件夾,意味著應(yīng)該把全部截圖都放在這里
- 圖片文件的選擇根據(jù)編輯時間,腳本自動選擇最近編輯的文件。
腳本:
import sublime
import sublime_plugin
import sys
import os
class SaveImage(sublime_plugin.TextCommand):
def run(self, edit):
full = self.view.file_name()
print("hello world")
print("full", full)
[p,f] = os.path.split(full)
print("path", p)
print("file",f)
# 獲取剪切板 獲取不到圖片 不使用
clipf = sublime.get_clipboard()
for root,dirs,files in os.walk(os.path.join(p,"image")):
print("root", root)
print("dirs", dirs)
print("files", files)
mtime=0
lastfile=""
for f1 in files:
(main,ext) = os.path.splitext(f1)
print("ext",ext)
if ext and ext.lower() not in [".jpg",".png",".gif",".bmp",".jpeg"]:
continue
mtime1 = os.path.getmtime(os.path.join(root,f1))
if mtime < mtime1:
lastfile = os.path.join(p,"image", f1)
mtime=mtime1
self.flist = files
self.path = root
for regoin in self.view.sel():
self.view.insert(edit,regoin.begin(),"![%s]()"%lastfile)
保存文件名應(yīng)該和類相同,ctrl + s就可以自動選擇sublime的插件目錄,文件名為SaveImage.py
ctrl + ` 調(diào)出sublime自帶的python解釋器命令行界面,輸入
view.run_command("save_image")
可進(jìn)行測試,注意到和命令參數(shù)為文件/類名稱的下劃線風(fēng)格命名。
設(shè)置快捷鍵
{ "keys": ["shift+ctrl+command+p"], "command": "save_image"}
就可以在輸入上述快捷點的時候插入圖片(快捷點設(shè)置為個人喜好)。