需求
sublime 相对VScode有更快的启动速度,这一点是我比较偏爱sublime的原因。 使用sublime编辑markdown的时候,有时候需要频繁插入截图,但是剪切板中的截图不能直接拷贝到文本中,造成markdown插入图片很麻烦。
有一种想法:截图自动保存在本地某一个位置,sublime插件自动找到刚刚获取的截图位置,修改为
的markdown图片形式自动插入到编辑文本中。
幸运的是,有人已经做过这件事情了 https://blog.csdn.net/darkread/article/details/79682380
实现
sublime自定义python插件的方法看这里,介绍相当详细了
https://www.jianshu.com/p/e2558ee1d503
python脚本主要拷贝自https://blog.csdn.net/darkread/article/details/79682380
,此脚本注意以下几点:
- 脚本读取当前编辑文件的所在目录下的/image子文件夹,意味着应该把全部截图都放在这里
- 图片文件的选择根据编辑时间,脚本自动选择最近编辑的文件。
脚本:
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)
保存文件名应该和类相同,ctrl + s就可以自动选择sublime的插件目录,文件名为SaveImage.py
ctrl + ` 调出sublime自带的python解释器命令行界面,输入
view.run_command("save_image")
可进行测试,注意到和命令参数为文件/类名称的下划线风格命名。
设置快捷键
{ "keys": ["shift+ctrl+command+p"], "command": "save_image"}
就可以在输入上述快捷点的时候插入图片(快捷点设置为个人喜好)。