光标返回至上一个位置

emacs有没有光标回到原位置的快捷键,就像放弃内容修改一样,一步一步退回,光标能否也这样退回

1 个赞

有没有我不知道

但是要实现并不是很难

写个idle-timer 记录marker

https://www.emacswiki.org/emacs/IdleTimers

https://www.emacswiki.org/emacs/MarkCommands

你还可以借 avy 来显示所有的marker

当然你得需要看懂abo-abo的代码

C-SPC 是 mark ,C-u 是反操作。所以 C-u C-SPC 是反 mark,就可以实现你说的,前提是你要 mark。你试试看。(虽然这个东西极其难用。。。搭车问一下你们都用什么。)

我觉得mark ring搭配helm-bm就够用了

送两个函数: lazycat-emacs/basic-toolkit.el at 7564ab859c6d37cf40f104d3c2193e003a7037b3 · manateelazycat/lazycat-emacs · GitHub

remember-init remember-jump

杀哥写的这个推荐看下

其实本身emacs本身就有mark的功能。不过隐藏得太深。

总结来说:

  1. 可以C-spc C-spc按两次设置一个mark。第二次C-spc是为了去掉高亮。
  2. 然后随便移动。
  3. 本文件内,C-u C-spc其实就是类似调用(set-mark-command t),就可以返回之前设置的mark中。
  4. 要在所有buffer中跳转,就直接使用 pop-global-mark命令。
  5. 我自己使用时,发现调用beginning-of-buffer类命令的时候,emacs会自动给你把之前的位置放入mark-ring中。
  6. 建议把C-spc绑一个好按的按键,比如xah-fly-key默认绑到t了。于是我的流程就是,需要暂存一下当前位置,就tt两下,然后随便跳都能回来。

不过有时候我还是会bm。

有时还用ivy-pop-view,ivy-push-view。

补充一下:使用mark-ring的时候,counsel-mark-ring和helm-all-mark-rings可以交互式地选择mark-ring。

2 个赞

推荐一个我自己魔改的一个小插件吧(依赖 ivy),主要就三个函数

sp-push-position-to-ring     来保存或者删除一个位置
sp-get-position-from-ring    来跳转不同的位置
sp-show-all-position-in-ring 来查看所有的位置
1 个赞

可以用 Mark,Mark 的历史有记录——(info "(emacs) Mark Ring")

https://github.com/jixiuf/vmacs/blob/master/conf/conf-bm.el 我是使用bm这个可视化书签来进行跳转, 可以手动调用bm-toggle 在当行位置设置一个书签, 也可以在任何跳转前在原位置调用bm-bookmark-add设置一个书签

比如 我结合evil使用时,evil 进行任何大范围光标移动的时候,也同时在原位置加一个bm书签 比如evil 的f F t T gg G / 等命令的跳转都可以用bm进行接管,进而统一管理,

(defadvice evil-set-jump (around evil-jump activate)
  (unless (string-match "bm-.*" (symbol-name this-command))
    (bm-bookmark-add nil nil t))
  ad-do-it)

又如在进行函数跳转前,在原位置设置书签

基本上加实现一套书签统一管理光标跳转

1 个赞

windows 上你们都是怎么绑定 set-mark-command 的?因为 C-SPC 被系统用于切换输入法,我把它绑到 F5 ,发现有点远不是很好按

用这个包: MELPA

Goto Last Change

Goto the point of the most recent edit in the buffer. When repeated, goto the second most recent edit, etc. Negative argument, C-u -, for reverse direction. Works by looking into buffer-undo-list to find points of edit.

You would probably like to bind this command to a key. For example in your ~/.emacs:

  (require 'goto-chg)

  (global-set-key [(control ?.)] 'goto-last-change)
  (global-set-key [(control ?,)] 'goto-last-change-reverse)

Works with emacs-19.29, 19.31, 20.3, 20.7, 21.1, 21.4, 22.1 and 23.1 Works with XEmacs-20.4 and 21.4 (but see todo about `last-command’ below)

1 个赞

我绑了C-v

一个新插件

这是看过最短的一个包了 :smile:

windows下按 C-S-SPC可以实现C-SPC的功能

1 个赞

把系统输入法切换快捷键改一下呗,系统设置里面有。:full_moon_with_face:

1 个赞

感谢,确实这个方法最直接。(我原来应该试过,没有生效就放弃了,现在 ok 了)

evil有evil-jump和evil-insert-resume

1 个赞