希望在Spacemacs中,通过helm swoop搜索方式匹配出当前buffer中的某一含有搜索关键字的line/heading,然后通过一个操作,把当前光标所在的line或heading所辖的内容移动或复制到helm swoop中匹配的line/heading的前后位置上去。
这种操作在macOS的todo软件TaskPaper中实现了,叫做“Move to Project”,也就是将当前光标所在的line的文本内容移动到“Move to Project”所调出pop-up中匹配出的heading上(TaskPaper中是只能移动到Project类型的line或heading的,无法实现移动到任何line或heading)。
TaskPaper这个操作非常方便将一个todo从一个Project转移动到另一个Project下,但是有时候,需要将当前todo或行的内容,转移到其它任意line或heading下。这个功能,TaskPaper暂时没有实现。
谢谢。
如果是 org-mode 的话,可以用 org-refile
如下图,将 inbox.org
中的一个 headline 移动到了 task.org
的 Writing
一节下,相应的配置是
(setq org-refile-targets
'(("~/Dropbox/org/inbox.org" :level . 1)
("~/Dropbox/org/task.org" :level . 1)))
见 Refile and copy
1 个赞
这个org-file操作,可以用于将heading移动到同一个buffer/文件中的另一个heading下吗?
(我刚才试了一下,在同一个org文件中,尝试将head2移动到head3下,启动org-file操作,结果什么也没发生。然后反馈信息是,“user-error: Please indicate a target file in the refile path
”)
请指正。
Please indicate a target file in the refile path
,你有把这个文件加到 org-refile-targets
这个变量么?
注意看是 emacs24 ,几年前自己调的色……现在老老实实用现成的主题了……
问题解决了。
刚才我的问题出在使用的是scratch buffer,没有保存为文件。
一旦保存为文件后,再测试org-refile和org-copy,就都成功了!!
这个方案很好地解决了针对org文件的heading间移动/复制问题。
谢谢您。
那么,对于非org文件的任意当前行文本,移动/复制到其它任意匹配的文本行下,如何可以实现呢?
是否存在着基于Helm swoop的某种更普适的方案呢?
希望大家能再进一步深挖一下普适方案哈。
(defun move-content-line-to-another-window (&optional N)
"移动当前光标下 N 行到另一个窗口,只适用于 2 个窗口的情况.
Usage:
1. 打开文件, 光标移动到粘贴文本的位置:
+------------+
| |
| window 1 |
| |
+------------+
2. 分割窗口 `C-x 2', (把 window 1 中的)光标移动到剪切文本的位置:
+------------+
| window 1 |
|------------|
| window 2 |
+------------+
3. 执行 `move-content-line-to-another-window',从 `window 1'
剪切 1 或 N 行文本到 `window 2'。
也可以在不同文件之间剪切。"
(interactive "P")
(kill-whole-line N)
(save-window-excursion
(switch-window)
(yank)))
其他功能自己发挥了。
4 个赞
犀利 我想实现类似的功能,在同一个BUFFER里移动选中的行,正好可以借鉴一下:grinning: