我希望emacs將最後一個編輯位置添加到標記環中,以便我可以跳回到之前的編輯位置。Emacs - 編輯位置上的設置標記
理想情況下,這隻會標記一個每行編輯位置。當我編輯另一行時,該行上的最後編輯位置將被添加到環中,等等。
我不熟悉Lisp自己實現這個。如果有人知道插件或可以提供一個很棒的解決方案! :)
我希望emacs將最後一個編輯位置添加到標記環中,以便我可以跳回到之前的編輯位置。Emacs - 編輯位置上的設置標記
理想情況下,這隻會標記一個每行編輯位置。當我編輯另一行時,該行上的最後編輯位置將被添加到環中,等等。
我不熟悉Lisp自己實現這個。如果有人知道插件或可以提供一個很棒的解決方案! :)
Session.el提供了綁定到「C-x C- /」或session-jump-to-last-change
的此功能。
Session dos it per buffer。我不知道全球任何事情。
您可以安裝一個包goto-last-change,它允許您連續跳轉到緩衝區撤消位置(最後編輯位置)。
感謝奧列格。我確實使用goto-last-change。這很棒,但它不像我最近編輯的位置那樣行事。 – armandino
我通過記錄2個文件的最後編輯位置(不是每個緩衝區)來執行類似的功能,並在請求時循環它們。有點像日食怎麼做(但不那麼強大,只有2個文件的記錄)
代碼:
;;; record two different file's last change. cycle them
(defvar feng-last-change-pos1 nil)
(defvar feng-last-change-pos2 nil)
(defun feng-swap-last-changes()
(when feng-last-change-pos2
(let ((tmp feng-last-change-pos2))
(setf feng-last-change-pos2 feng-last-change-pos1
feng-last-change-pos1 tmp))))
(defun feng-goto-last-change()
(interactive)
(when feng-last-change-pos1
(let* ((buffer (find-file-noselect (car feng-last-change-pos1)))
(win (get-buffer-window buffer)))
(if win
(select-window win)
(switch-to-buffer-other-window buffer))
(goto-char (cdr feng-last-change-pos1))
(feng-swap-last-changes))))
(defun feng-buffer-change-hook (beg end len)
(let ((bfn (buffer-file-name))
(file (car feng-last-change-pos1)))
(when bfn
(if (or (not file) (equal bfn file)) ;; change the same file
(setq feng-last-change-pos1 (cons bfn end))
(progn (setq feng-last-change-pos2 (cons bfn end))
(feng-swap-last-changes))))))
(add-hook 'after-change-functions 'feng-buffer-change-hook)
;;; just quick to reach
(global-set-key (kbd "M-`") 'feng-goto-last-change)
hmm ..因爲某些原因在「'C-x C- /'」我得到了'C-x C-_未定義,但是在將它重新綁定到另一個鍵後,它似乎工作。接下來的幾天我會試試這個。謝謝! – armandino