为了使用方便,查了org手册,使用 [[][]]
做了一个导航索引org文件,但是使用过程中很不方便,因为只能用鼠标或者触摸屏点击链接才能够跳转,而且是自动在另一个buffer打开。
查了一下函数,org-mark-ring-push
和org-mark-ring-goto
,我在链接处执行这两个命令都不能实现跳转到链接的位置,点击是正常的,相对链接地址没有问题。
我想请问三个问题
-
有没有办法实现用快捷键实现在链接处自动跳转打开所链接的文件
-
直接在当前org打开所链接的文件而不是另外新开一个buffer打开
-
在打开所链接的org文件里面绑定一个快捷键,可以返回到之前设置了链接的那个org文件
麻烦大家给我一些意见和建议,谢谢各位。
jscd
2
回复-问题2:[[file+sys:C:/myfile.txt][myfile.txt]]。文件路径前加file+sys可直接以系统默认的程序打开文件。
我使用的是debian9,而且我并不想用别的软件打开,那样会和当前的编辑习惯不一致,感谢您的建议
Weiss
4
我抄的是 doom-emacs 里的 +org/dwim-at-point,绑定在 RET 键上,很方便。当然如果你用的是 emacs 原生 keybinding 的话,RET 键就没法换行了,得绑到别的键上才行。
感谢您的介绍,我试用看看
抄过来了,第一个问题已经解决,再次感谢您的推荐以及那位大神的开发
Weiss
6
不过2和3没有解决,你 2 的意思是打开新文件时,自动删除原来的 buffer 吗,为啥要这么做。3 的话还是交给普通的 切换 buffer 的函数吧,没必要专门再设一个键。
第二个问题主要是我的平板电脑屏幕小,同时上下打开两个org,就很不方便编辑了,每个都半屏的样子,也不想每次都C-x 1
第三个问题还是为了方便,就好像浏览网页一样,因为个人习惯,编辑完当前org,然后返回索引列表,打开另一个去继续编辑,如果同时打开好几个文件,我个人会分散注意力
Weiss
8
那你应该指的是在同一个 frame,而不是 buffer 吧。
(setq org-link-frame-setup
'(
(vm . vm-visit-folder)
(vm-imap . vm-visit-imap-folder)
(gnus . gnus)
(file . find-file)
(wl . wl-frame)
))
比较简单的方法是绑一个键,功能就是回到上一个 buffer。
如果你一定要有个键只用来回到那个索引列表的话,估计要在打开文件的那个函数里多加几行,用来保存索引列表的 buffer 名,然后再绑定个其他键用来专门回到那个 buffer。(当然如果你只有一个索引列表,直接把那个键绑定成去那个索引列表就行)。
第二个问题的方案等一下就测试,是我的概念有问题,不是在同一个buffer,是同一个frame
第二个问题也解决
第三个我也同意你的观点,所以用一个全局按键绑定到索引文件了
不过又引申出来一个问题
请问在索引文件中,有没有类似函数实现单纯的在该文件的各个链接来回跳转
我怕描述不清楚,就说的更具体一点
Index.org:
- xxxxx链接1
- xxxxx链接2
- xxxxx链接3
实现打开org之后,在链接1,链接2,链接3这三个位置来回跳转
补充,我自己想了一个简单的办法
在org模式绑定两个快捷键,分别对应forward-word,backward-word两个函数,打开索引文件之后先定位到当前链接行首,执行forward-word直接跳转到链接1,然后使用drim-at-point绑定的快捷键打开该链接文件这样基本上很方便,也满足我的使用要求了
因为只能选择一个作为解决方案,所以集中到这里
感谢Weiss朋友的大力帮忙和drim-at-point开发者
1 从链接处跳转到文件,使用drim-at-point
2 整屏打开新文件,建立如下代码
(setq org-link-frame-setup
'(
(vm . vm-visit-folder)
(vm-imap . vm-visit-imap-folder)
(gnus . gnus)
(file . find-file)
(wl . wl-frame)
))
再次感谢
Weiss
11
没有很懂,你是怎么做到用 forward-word 在链接之间跳转的。
具体是这样,index.org结构如下
- org使用手册(链接1)
- emacs使用手册(链接2)
- 中医医案(链接3)
当我打开索引文件,按j到链接1行首,按b执行forward-word,就直接跳到链接1,再按t执行drim-at-point,就整屏打开链接1的文件
当光标位于链接1,再按b跳转到行尾,再按就直接跳转到链接2
没有一点技术含量,也是由于index.org的这种简单布局才可以这样用
说得不好,献丑了,我不懂编程,只能想这样的办法