Я использовал метку для выбора областей буфера. Например, я знаю, что последовательность C-<space> C-s foo
может использоваться для выделения всего текста между текущей точкой и точкой после поиска foo
.
Недавно я обнаружил существование кольца меток, поэтому я могу C-<space> C-<space>
оставить метку, переместить точку в буфере и затем C-u C-<space>
вернуться назад.
Есть ли какие-либо предложения, руководства или советы для эффективной навигации с помощью кольца меток?
(global-set-key (kbd "s-m") '(lambda () (interactive) (push-mark)))
.Ответы:
Шлем имеет интерфейс для просмотра локальных и глобальных метки кольца:
helm-all-mark-rings
.Смотрите мини-руководство для краткого описания и скриншота.
И если вы предпочитаете Ivy / Swiper / Counsel , смотрите
counsel-mark-ring
.источник
При установке
set-mark-command-repeat-pop
на сt
помощьюВы можете продолжать нажимать C-SPCпосле первого вызова, C-u C-SPCчтобы перейти к предыдущим местам, сохраненным в кольце меток.
источник
Я считаю, что проще использовать регистры для обозначения местоположений,
C-x r <space>
а затем букву для отметкиC-x r j
и букву для возврата назад. Я могу поддерживать несколько отметок, очень полезно при чередовании нескольких буферовисточник
C-x C-xдля
exchange-mark-and-point
аналогичного использования C-u C-space. Это позволяет вам отскочить между точкой и последней отметкой. Немного странно прыгать с ним, такtransient-mark-mode
как он активирует метку и выбирает регион.источник
C-x C-x
Режим Transient-Mark-Mode отлично подходит для выбора последней вещи, которую вы либо выбрали (полезно в режиме iedit), либо дернули.Помимо других советов, которые вы получили здесь, я подумал, что должен упомянуть, что
C-s
ставит вам оценку, поэтому нет необходимости делать это явно. Кроме того, многие команды, которые «перемещаются на потенциально длинный путь» (beginning-of-buffer
и,end-of-buffer
например), также устанавливают метку, с которой вы начали. Вместе с другими способами работы с меткой (всплывающее окно, точка обмена, метка и т. Д.) Это довольно мощный способ работы с буфером, если вы понимаете, как он работает. Также обратите внимание, что если вы вытягиваете текст в буфер, наведите и отметьте окружающий текст.источник
(Ваш вопрос довольно открытый, поэтому он может быть закрыт как основанный на мнениях.)
Что я использую: мультикоманда Icicles (привязана к ) для обхода меток в любом буфере ( ) и ( ) для обхода глобальных меток ( ).
icicle-goto-marker
C-- C-SPC
mark-ring
icicle-goto-global-marker
C-- C-x C-SPC
global-mark-ring
Строки текста, где расположены маркеры, используются в качестве кандидатов на завершение. Вы можете напечатать некоторый текст (например, substring, regexp), чтобы сузить кандидатов до совпадающих строк. Вы можете переключаться между соответствующими линиями, посещая любые, которые вам нравятся. Если вы также используете библиотеку,
crosshairs.el
то положение маркера, который вы посещаете, временно выделяется перекрестием, чтобы вы могли быстро увидеть, где он находится.Вот часть строки документа для
icicle-goto-marker
:источник