Как двинуться вперед и назад в кольце метки Emacs

В Emacs, C-u C-SPC "перейдет к метке и установит метку от положения, вытолканного от локального кольца метки". Существует ли способ пойти противоположным путем вокруг кольца метки? Скажите, что Вы несколько раз вводили C-u C-SPC и хотите вернуться к метке, которую Вы видели, не идя полностью вокруг кольца.

27
задан Svante 3 August 2010 в 11:38
поделиться

4 ответа

Это не делает именно то, о чем вы просите, но, возможно, стоит поискать пакет под названием marker-visit.el, который позволяет вам перемещаться по меткам в текущем буфере в "порядке позиций буфера". Из этого файла:

;;; Commentary:

;; This file provides a simple way to navigate among marks in a
;; buffer.  C-u C-SPC is similar, but takes you haphazardly around the
;; buffer.  Setting bookmarks is a lot of extra work if you just want
;; to jump around your buffer quickly; plus, you have to come up with
;; a name for every bookmark.

;; All the marks you've left while editing a buffer serve as bread
;; crumb trails of areas in the buffer you've edited.  It is
;; convenient to navigate back and forth among these marks in order.
;; This file provides two methods to do just that, marker-visit-prev
;; and marker-visit-next.  These two functions will take you, from
;; point, to the nearest mark in either direction.  The function
;; marker-visit-truncate-mark-ring will truncate the mark ring.

;; The marks you can visit in a buffer consist of: "the mark" plus the
;; contents of the mark-ring.

Я привязываю [S-up] и [S-down] к marker-visit-prev и marker-visit-next соответственно.

Если вы действительно хотите/необходимо перемещаться в том порядке, в котором сейчас находится кольцо меток, то вы можете получить результат, рассмотрев функции pop-to-mark-command и pop-mark и реализовав свои собственные версии для поворота кольца меток в обратном направлении.

2
ответ дан 28 November 2019 в 05:36
поделиться

Вы пробовали просмотреть-убить-кольцо ? Загрузите его из Emacswiki , поместите его в свой путь загрузки, а затем добавьте это в свой emacs-conf:

(when (require 'browse-kill-ring nil 'noerror)
  (browse-kill-ring-default-keybindings))

Затем, когда вы нажмете My, вам будет показано кольцо уничтожения, ищите его как обычно текст и т. д. . Действительно удобно. Есть также более практическая информация по emacs-fu о том, как использовать browse-kill-ring

-2
ответ дан 28 November 2019 в 05:36
поделиться

Вот функция для этого:

(defun unpop-to-mark-command ()
  "Unpop off mark ring into the buffer's actual mark.
Does not set point.  Does nothing if mark ring is empty."
  (interactive)
  (let ((num-times (if (equal last-command 'pop-to-mark-command) 2
                     (if (equal last-command 'unpop-to-mark-command) 1
                       (error "Previous command was not a (un)pop-to-mark-command")))))
    (dotimes (x num-times)
      (when mark-ring
        (setq mark-ring (cons (copy-marker (mark-marker)) mark-ring))
        (set-marker (mark-marker) (+ 0 (car (last mark-ring))) (current-buffer))
        (when (null (mark t)) (ding))
        (setq mark-ring (nbutlast mark-ring))
        (goto-char (mark t)))
      (deactivate-mark))))
5
ответ дан 28 November 2019 в 05:36
поделиться

В руководстве сказано следующее:

Переменная mark-ring-max определяет максимальное количество записи, которые нужно оставить в кольце отметок. Если что существует много записей и еще один один толкается, самый ранний в список отброшен. Повторение `C-u C- 'прокручивает позиции в настоящее время на ринге.

Я предлагаю вам использовать это, чтобы указать размер кольца меток (до 3 или 4, у меня сейчас 16). Тогда вы сможете перемещаться по нему намного быстрее, используя префиксы.

Также:

Если вы хотите вернуться к одно и то же место снова и снова, знак кольцо может оказаться недостаточно удобным. Если так что вы можете записать позицию в зарегистрируйтесь для последующего поиска (* примечание Сохранение позиций в регистрах: RegPos.).

1
ответ дан 28 November 2019 в 05:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: