如何用快捷键在不打开org文件的情况下将剪贴板内容粘贴到org文件中去

本人经常使用印象笔记记笔记,它的好处是可以多平台、传照片、可搜索。同时,我也经常用org-mode记笔记,好处是整理起来比较方便。现在发现印象笔记中有一个好用的功能是按下ctrl+shift+v快捷键可以将剪贴板中的内容自动粘贴为笔记在线存储起来。在org-mode中同样有此需求,请教该如何实现?印象中emacs是可以通过命令行运行elisp代码的,是不是也可以写一段elisp代码实现该功能,再用ahk给该命令行加参数设置一个快捷键来实现?

https://emacs-china.org/t/emacs/10367

把剪贴板中的内容粘贴到指定org文件里面的elisp代码是: (write-region (current-kill 0 t) nil "~/.emacs.d/db/temp.org"),其中(current-kill 0 t) 是取到剪贴板内容

不论org文件是否打开都不影响,楼主的需求是每次都新建一个org写入吗?,还是就指定一个org文件每次都往里面写内容,比如我现在除了开多个窗口外基本就是 只用一个org文件

自己写的以下代码dbv771.el,运行emacs.exe -Q -script “d:/dbv771.el”

(find-file "d:/test.org")
(goto-char (point-max))
(write-region (current-kill 0 t) nil "d:/test.org")

实现的效果是每次都把之前test.org里面的内容覆盖了,不知道问题出在哪里,应该write-region使用不对,不过使用ctrl-h f,看不懂这条函数的用法,感觉emacs的函数帮助没例子,比较难理解

我的话一般这么写:

(let (origin-content)
  (with-temp-buffer
    (insert-file-contents "d:/test.org")
    (setq origin-content (buffer-string)))
  (with-temp-file "d:/test.org"
    (insert origin-content)
    (insert (current-kill 0 t))))
1 个赞

刚刚看了下 write-region 的文档,在文件名后面加上 t 参数就能追加而不是覆盖了

多谢,用这样的写法可行。谢谢诸位的指点。emacs用得越多越发现还是自己写lisp,自己定制感觉很爽!