我不用evil,我想在imenu之后可以跳回原来光标的位置,然后也可以再前进. 目前只发现有一个goto-last-point可以支持后退,但它不支持前进. 想请教各位兄弟,有这类专门的插件同时支持前进后退吗?
用 imenu 跳转会自动推入 mark ring 吧,用 pop-global-mark
就可以了,来回跳转可以用 consult-mark
谢谢哦, pop-global-mark是那个后退.但consult-mark是选择,不是我想要的那个前进
- GitHub - Fuco1/better-jump: Better ace-jump-mode
- ivy-push-view/ivy-pop-view/ivy-switch-view
;; 位置跳转和记录
(defvar point-stack nil
"The stack position.")
(defun my-point-stack-clear ()
"Clear point stack."
(interactive)
(setq point-stack nil)
(message "Clear point stack, now stack size: %d" (length point-stack)))
(defun my-point-stack-push ()
"Push current point in stack."
(interactive)
(setq point-stack (cons (list (current-buffer) (point)) point-stack))
(message "Location marked, now stack size: %d" (length point-stack)))
(defun my-point-stack-pop ()
"Pop point from stack."
(interactive)
(if (null point-stack)
(message "Stack is empty.")
(switch-to-buffer (caar point-stack))
(goto-char (cadar point-stack))
(setq point-stack (cdr point-stack))
(message "Location poped, now stack size: %d" (length point-stack))))
(global-set-key (kbd "C-c p") 'my-point-stack-push)
(global-set-key (kbd "C-c [") 'my-point-stack-pop)
(global-set-key (kbd "C-c ]") 'my-point-stack-clear)
不知这几个是否满足。
可以试用一下我写的跳转的插件。
我用的是 meow,所以绑定命令 binky-binky
到快捷键 '
,同时也把跳回标记设置为 '
(setq binky-mark-back ?')
比如说你的情况:
- imenu 跳转之前先标记当前位置(比如说 j )
'j
- imenu 正常跳转
- 想跳转回 j,只需要按
'j
- 想跳转回上次 imenu 的位置,只需要按
''
,之后在两者之间跳转,只需要疯狂按''
就行了
Emacs 默认就支持吧,试试 C-u C-SPC
1 个赞
然后
'("C-o" . xref-go-back)
'("C-i" . xref-go-forward)
补充
(with-eval-after-load 'xref
(customize-set-variable
'xref-history-storage 'xref-window-local-history))
这样可以使得 xref
的跳转列表 window local
多谢各位的建议,我会自己尝试摸索一番
evil的back/forward有点用,但不多,我已经不用了,因为如何判断什么时候要在jump history里面加新的一项,这是很难的。我在一行内移动编辑,肯定不加,那移动到下一行呢,下两行呢。只有evil-goto-last-change
是可靠的,因为last change的只有一项,没有前述的问题。要获得可靠的jump列表,还是要自己手动加bookmark evil-marker然后跳,最多consul/consult一下mark列表。
一些不完全相关的思路:对某些可能要反复看的东西,比如某些symbol定义,在find-definition之类操作的时候把位置记下来,之后可以helm/ivy来看看,可以省去手动加bookmark。我自己写了一个:在xref-find-definitions
和lsp-bridge-find-def
的时候,把这个symbol加入当前project的symbol列表,随后随时用ivy查看这个列表:
1 个赞