添加 org-capture 模板时 %x 系统剪贴板没有效果?

一直想要使用 Org mode 来保存自己书签,刚刚使用,暂时不想用protocol这种比较复杂的功能。

想要使用一下这个模版来保存:

(add-to-list 'org-capture-templates
             '("b" "Bookmark" entry
               (file+headline "~/Public/Drop box/org/bookmark.org" "Link")
               "* [[%x][%?]] \n:PROPERTIES:\n:CREATED: %U\n:END:\n\n" :empty-lines 1))

其中 [[%x][%?]] 的部分并没有生效,是不是 [] 使得其转义了,还是 %x 根本不能抓去系统剪贴板?

%x 目前支持 X 和 Windows,参见C-h f org-get-x-clipboard

1 个赞

好的,我去看看

mac下C-h f 没有这个函数吧

C-h f 是快捷键……

另外实测我这是有效果的

capture-x

  1. 图上只是用鼠标选中了文字,没有 Ctrl-c 复制

  2. 系统是 Ubuntu

1 个赞

大神的就是看了你的blog才开始用capture的 看来是针对mac的失效了吗

根据前面 @xuchunyang 的回答,我去查了下,确认 %x 这个标记在 MAC 上是不能使用的。

填充模板用的是 org-capture-fill-template 这个函数,对应 %x 的部分为

(let* ((template (or template (org-capture-get :template)))
      ;; 省略
	 (v-x (or (org-get-x-clipboard 'PRIMARY)
		  (org-get-x-clipboard 'CLIPBOARD)
		  (org-get-x-clipboard 'SECONDARY)))
      ;; 省略

这就是刚才前面的回答里提到 org-get-x-clipboard 函数的原因。在这个函数里,只处理 window-systemxwin32 这两种情况,MAC 上这个变量的值应该是 ns,参考 Window Systems ,你可以试试 C-h v 然后输入 window-system 查看它的值来确认一下。

我想到可能的一种解决办法是,利用 pbcopy/pbpaste 拿到 MAC 系统上剪贴板里的内容,然后塞到 kill-ring 的前面,这样你模板里的 %x 也许可以用 %c 替代。

不过我没有 MAC 的环境,没有办法做这个尝试了……

好的 我这边使用手动粘贴好了,只是稍微麻烦了点。不过以后的会跑去linux的

如果用的是 Emacs Mac Port 是自带 Org-protocol 支持的,然后浏览器设置一个 js 的书签就好,非常方便,建议试下。 可以参考:

1 个赞