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