У чому корисність "обмінної точки і позначки"?


16

exchange-point-and-markКоманда зобов'язана C-x C-x, але я не можу думати про будь - яких прецедентах , які роблять його вартим такі видатний халепу.

Як я можу скористатись exchange-point-and-markвдосконаленням своєї технології редагування?

Відповіді:


19

Я можу придумати два випадки: реактивація регіону та коригування розміру регіону.

Я найчастіше використовую цю прив'язку для повторної активації області після виконання якоїсь команди, яка деактивує її, або виконуючи щось, що встановлює позначку і переміщує точку, не активуючи область.

Наприклад, зробіть Cs і пошукайте щось вперед. Натисніть RET, щоб вийти з пошуку, а потім Cx Cx, щоб позначити все, з чого ви розпочали пошук.

Ще один приклад, який я роблю дуже багато, коли хочу включити деякий зразок пробігу у відповідь StackExchange:

  1. Позначте біт коду, який я хочу скопіювати.
  2. Натисніть Cu Cx TAB для відступу коду на 4 пробіли. Таким чином він буде відображатися як код тут на сайті. Цей крок дезактивує область.
  3. Натисніть Cx Cx, щоб повторно активувати регіон, а потім Mw скопіюйте його у буфер обміну, щоб я міг вставити його у свою відповідь StackExchange.

Інший випадок, коли ви маркуєте регіон і хочете розширити / зменшити його. У цьому випадку зручно мати можливість стрибнути на "інший кінець" регіону, перемістити його, а потім відскочити назад. Якщо регіон вже активний, натискання Cx Cx залишить його активним, що дозволяє переміщати будь-який кінець.


17

Запитайте Emacs: C-h r i exchange-point-and-mark RETабо, краще, C-h r i C-x C-x RET. Це призведе до наведеної нижче інформації.

Ось що говорить посібник Emacs, " Налаштування вузла", відповідаючи на ваше запитання:

C-x C-xкорисно, коли вас влаштовує позиція точки, але ви хочете перемістити інший кінець регіону (там, де є позначка) . Використовуючи C-x C-xдругий раз, якщо необхідно, ставить позначку на новій позиції з точкою назад у вихідному положенні. Зазвичай, якщо позначка неактивна, ця команда спочатку знову активує позначку там, де вона була останньо встановлена, щоб переконатися, що область залишається виділеною. Однак якщо ви називаєте це аргументом префікса, він залишає марку неактивною, а область не освітленою; Ви можете використовувати це, щоб перейти до позначки подібним чином C-u C-<SPC>.

І саме про це йдеться у вузлі Disabled Transient Mark :

Вимкнення [ transient-mark-mode] вимикачів Emacs в альтернативний режим роботи:

  • Встановлення позначки за допомогою команд типу C-<SPC>або C-x C-x, не виділяє область. Тому ви не можете зрозуміти, дивлячись, де розміщена марка; ви повинні пам'ятати.

    Звичайне рішення цієї проблеми - встановити позначку, а потім скористатися нею, перш ніж забути, де вона знаходиться. Ви також можете перевірити, де знаходиться знак, скориставшисьC-x C-x обміном позицій точки та позначки - див. Установка позначки .

Поки режим «Перехідна марка» вимкнено, його можна тимчасово активувати, використовуючи C-<SPC> C-<SPC>або C-u C-x C-x.

і:

C-u C-x C-x Обміняйте точку та позначку, активуйте марку та ввімкніть режим тимчасового відмітки тимчасово, доки наступний знак не буде відключений. (Це C-x C-xкоманда exchange-point-and-mark, з аргументом префікса.)


8

Я використовую це, коли втратив виділення через деяку операцію, яка його видалила, і хочу відновити вибір. Одним із таких сценаріїв був би:

  1. Виберіть прямокутник.
  2. Вбий це.
  3. Скасувати прямокутник вбивства.
  4. C-x C-x щоб відновити виділення до прямокутника.

Це трапляється, коли я хочу створити спеціальну резервну копію вибраної області та експериментувати над копією, наприклад, наприклад, я хочу зробити деякий пошук і заміну, але я не можу придумати спосіб зробити це це таким чином, що не руйнує текст, який мав на увазі залишитися, тому я пізніше поверну його з копії.


8

Інші відповіді зосереджуються на корисності того, C-x C-xколи transient-mark-modeвін активний. Але C-x C-xпередує transient-mark-modeі є корисним незалежно від цього.

Основна роль - C-x C-xце поміняти точки та позначити. Це корисно, коли ви редагуєте дві точки в одному буфері і чомусь не хочете розділяти поточне вікно. Зробіть деякі редагування, встановіть позначку, перейдіть до якоїсь іншої точки буфера, зробіть деяку редагування C-x C-x, зробіть кілька редагувань на колишньому місці C-x C-x, зробіть ще кілька редагувань, adusese. (Якщо ви не плануєте повертатися до другого пункту, C-u C-SPCможливо, буде більш інтуїтивно зрозумілим. Знайдіть кільце з позначкою в посібнику Emacs.)

Якщо transient-mark-modeвимкнено, C-x C-xмає ще одне важливе призначення: воно дозволяє дізнатися, де знаходиться регіон. C-x C-x, швидкий погляд в точку, C-x C-xзнову.

(І якщо вам цікаво - так, деякі з нас все ж вважають за краще використовувати Emacs з transient-mark-modeвідключеним.)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.