Ефективно за допомогою кільця марки


29

Я використовував позначку для вибору регіонів буфера. Наприклад, я знаю, що послідовність C-<space> C-s fooможе бути використана для вибору всього тексту між поточною точкою та точкою після пошуку foo.

Нещодавно я виявив існування кільця марки, тому я можу C-<space> C-<space>залишити знак, перемістити точку в буфері, а потім C-u C-<space>стрибнути назад.

Чи є якісь пропозиції, посібники чи поради щодо ефективної навігації за допомогою кільця знака?


2
Дякуємо, що поставили запитання. Одна з думок, яка виникає у мене, - зробити швидше прив’язку для "додавання позначки", наприклад (global-set-key (kbd "s-m") '(lambda () (interactive) (push-mark))).
Джо Корнелі

Відповіді:


22

Шолом має інтерфейс для перегляду локальних і глобальних мітки кільця: helm-all-mark-rings.

Короткий опис та скріншот дивіться у міні-посібнику .

А якщо ви віддаєте перевагу Плющ / Супер / Радник , див counsel-mark-ring.


Дивовижно. Одне, що могло б покращити це, - це дія з видалення знака з кільця марки ...
Joe Corneli

12

Коли ви встановите set-mark-command-repeat-popна tvia

(setq set-mark-command-repeat-pop t)

Ви можете продовжувати натискати C-SPCпісля першого виклику, C-u C-SPCщоб перейти до попередніх місць, збережених у кільці марки.


10

Мені легше використовувати регістри для позначення місцеположень: C-x r <space>а потім лист для позначення C-x r jта лист для відскаку назад. Я можу підтримувати ряд позначок, дуже корисних при чергуванні декількох буферів


2
Я завжди знаходжусь на паузі, щоб вирішити найкращий лист для присвоєння моєму реєстру ...
nispio

@nispio деякий час тому я реалізував розширення git@github.com: atykhonov / iregister.el.git Однією з ідей було: дозволити пропустити рішення, який реєстр використовувати. Можливо, розширення не буде корисним для вас, але ви можете запозичити ідею, в якій ваш користувальницький сценарій може просто використовувати будь-який безкоштовний реєстр, і тоді він дозволить переглядати використовувані регістри та відновити.
Андрій Тихонов

9

C-x C-xдля exchange-mark-and-pointмає подібне використання C-u C-space. Це дозволяє перестрибувати між точкою та останньою позначкою. Це трохи дивно підстрибувати, transient-mark-modeоскільки він активує позначку і вибирає регіон.


C-x C-xз режимом перехідних знаків відмінно підходить для вибору останнього, що ви вибрали (корисно в режимі iedit) або постригли.
Rune Kaagaard

8

Крім інших порад, які ви отримали тут, я подумав, що я повинен зазначити, що C-sвстановлює позначку для вас, тому немає необхідності робити це явно. Також багато команд, які "рухаються потенційно довгим шляхом" ( beginning-of-bufferі, end-of-bufferнаприклад,), також встановлюють позначку, з якої ви почали. Разом з іншими способами роботи з маркою (поп, точка обміну та позначка тощо) це досить потужний спосіб роботи з буфером, як тільки ви зрозумієте, як це працює. Також зауважте, що якщо ви витягуєте текст у буфер, точку та позначку оточує вирваний текст.


5

(Ваше запитання досить відкрите, тому воно може бути закритим як головним чином на основі думки.)

Що я використовую: багатокоманда Icicles (прив’язана до ) для обходу знаків у будь-якому буфері ( ) та ( ) для подорожі серед глобальних знаків ( ). icicle-goto-markerC-- C-SPCmark-ringicicle-goto-global-markerC-- C-x C-SPCglobal-mark-ring

Рядки тексту, де розміщені маркери, використовуються як кандидати на завершення. Ви можете ввести текст (наприклад, підрядку, повторне вираження), щоб звузити кандидатів до рядків, які відповідають. Ви можете переходити між відповідними лініями, відвідуючи будь-яку, що вам подобається. Якщо ви також використовуєте бібліотеку, crosshairs.elто положення маркера, який ви відвідуєте, тимчасово виділяється перехрестями, щоб ви могли швидко побачити, де він знаходиться.

Ось частина рядка doc для icicle-goto-marker:

Go to a marker in this buffer, choosing it by the line that includes it.
If `crosshairs.el' is loaded, then the target position is highlighted.

By default, candidates are sorted in marker order, that is, with
respect to their buffer positions.  Use `C-M-,' or `C-,' to change the
sort order.

During completion you can use these keys:

`C-RET'   - Goto marker named by current completion candidate
`C-down'  - Goto marker named by next completion candidate
`C-up'    - Goto marker named by previous completion candidate
`C-next'  - Goto marker named by next apropos-completion candidate
`C-prior' - Goto marker named by previous apropos-completion candidate
`C-end'   - Goto marker named by next prefix-completion candidate
`C-home'  - Goto marker named by previous prefix-completion candidate
`<S-delete>' - Delete marker named by current completion candidate

Use `mouse-2', `RET', or `S-RET' to choose a candidate as the final
destination, or `C-g' to quit.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.