Roife
1
(defun org-insert-image ()
(interactive)
(let* ((path (concat default-directory "img/"))
(image-file (concat
path
(buffer-name)
(format-time-string "_%Y%m%d_%H%M%S.png"))))
(if (not (file-exists-p path))
(mkdir path))
(shell-command (concat "pngpaste " image-file))
(org-insert-link nil (concat "file:" image-file) ""))
;; (org-display-inline-images) ;; inline显示图片
)
需要安装一个小插件pngpaste
可以通过brew install pngpaste
安装
可以自己修改路径/文件名。
用途:
- macOS下用系统截图,借助这个函数可以直接插入。
- 网页上的图片可以直接复制然后放进来(我已经卸载了
org-download
)。
似乎也可以不用插件,用AppleScript实现。但是我不会
UPDATE1:有了一个AppleScript的版本,不需要安装pbpaste
#4楼
4 个赞
很棒,有一个类似的包叫org-download很好用。
Roife
3
我卸载了这个包,因为在emacs全屏的情况下不好拖入其他图片。
据说这个包也可以粘贴剪贴板中的图片,但是在我这里并不能工作。
1 个赞
Roife
4
我写了一个AppleScript的版本,不需要安装pbpaste
(defun org-insert-image ()
"insert a image from clipboard"
(interactive)
(let* ((path (concat default-directory "img/"))
(image-file (concat
path
(buffer-name)
(format-time-string "_%Y%m%d_%H%M%S.png"))))
(if (not (file-exists-p path))
(mkdir path))
(do-applescript (concat
"set the_path to \"" image-file "\" \n"
"set png_data to the clipboard as «class PNGf» \n"
"set the_file to open for access (POSIX file the_path as string) with write permission \n"
"write png_data to the_file \n"
"close access the_file"))
;; (shell-command (concat "pngpaste " image-file))
(org-insert-link nil
(concat "file:" image-file)
"")
(message image-file))
(org-display-inline-images)
)
已知的问题:AppleScript更慢一些,文件较大时延迟略大(尤其是截图,其他网页上复制的可以接受)。
怎么异步后台执行command?
2 个赞
Roife
5
我又仿造了一个org-insert-file
……输入路径加入文件
(defun org-insert-file (file-path)
"insert a file in org"
(interactive (list (read-buffer (format "path: " ) (current-kill 0) t)))
(let* ((path (concat default-directory "file/"))
(new-file (concat
path
(buffer-name)
(format-time-string "_%Y%m%d_%H%M%S_")
(file-name-nondirectory file-path))))
(if (not (file-exists-p path))
(mkdir path))
(shell-command (concat "cp " file-path " " new-file))
(org-insert-link nil (concat "file:" new-file) "")
(message new-file))
)
EDIT: 好像C-u C-c C-l就可以插入文件了
1 个赞
谢谢老哥,挺好用的。我也喜欢先截图后粘贴的形式。org-download是调用命令截图。不习惯
1 个赞