Як вибрати або виділити блок у Emacs?


Відповіді:


66

Погляньте на регіон-прямокутник в emacs.

Коротше кажучи, ви починаєте виділення, як зазвичай, за допомогою Control- Space, потім вбиваєте регіон за допомогою Control- x r kі вставляєте (або відриваєте ) вбитий блок за допомогою Control- x r y.


11
Це не вбиває регіони, а прямокутники, що значно відрізняється від того, що робить візуальний режим vim, на мій досвід.
Аллен

2
Чим воно відрізняється?
Ken Williams

73

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

C-Spc ставить позначку на поточній позиції.

Де б не знаходився курсор, текст між останньою позначкою та поточною позицією буде "виділений" (ви можете виділити це, активуючи transient-mark-mode, але це також означатиме, що позначки потрібно видаляти, коли ви не хочете виділяти).

Ви можете оперувати цим регіоном за допомогою таких команд:

C-w. . Вбити регіон. Це видаляє і поміщає область в кільце вбивств.
C-y. . Янка. Це вставляє останній фрагмент із кільця вбивства.
M-y. . Цикл вбивства кільце. Відразу після C-yцього це замінює витягнуту частину іншими фрагментами в кільці вбивства.
M-w. . Збережіть регіон у кільце вбивств. Подобається C-w, але не видаляє.

Це лише основне використання. Знаки мають і інше використання. Я рекомендую підручник ( C-h t).


6
Варто зазначити, що C-s C-rв цьому контексті зазвичай використовують пошук кінця / початку регіону. (Особливо корисно в макросі.)
ocodo

Ну, це дуже хороші команди, але ... Як вибрати позначений регіон? Адже він мені все ще потрібен, тобто робити відступ коду між позначками.
Hi-Angel

Область між останньою відміткою і поточною крапкою (тобто , де знаходиться курсор) є вибраним регіоном. Просто біжи M-x indent-region.
Svante

@Svante Ні, це не вибрано. Хоча це indent-regionпрацює чудово, але c-indent-line-or-region(той, що прив'язаний до клавіші табуляції ), ні. Остання функція працює не на позначених областях, а на вибраних , тобто виділеній області, як якщо б ви вибрали її за допомогою миші.
Hi-Angel

2
@YagamyLight Ах, це можна зробити, C-Spcдвічі вдаривши туди, де ви поставили позначку. Це тимчасово активує режим перехідних позначок (доки ви не скасуєте (за допомогою C-g)). Потім перемістіть точку, щоб побачити, як з’явиться вибрана область.
Svante



10

Хоча C-SPCце поширений спосіб почати щось позначати звідки б не була ваша точка, часто існують більш швидкі / прості способи, які не передбачають явного переміщення до початкової / кінцевої точок ...

Вбудовані ярлики вибору

  • M-h- важливим засобом позначення абзацу . "Абзац" часто означає блок коду.

  • C-M-hта C-M-@- для маркування секпсів та дефансів відповідно. Це працює для декількох мов, а не лише для мовлення.

  • утримуйте Shift - ще один приємний спосіб виділити під час руху. Наприклад, M-S-fвиділяє вперед ціле слово. Це є shift-select-mode, і це ввімкнено за замовчуванням у Emacs 24+. На деяких (некрикетних) клавіатурах ви зможете утримувати натисканням C-S-однієї мізинки.

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

(ПРИМІТКА: C-gчасто використовуйте для скасування позначення під час експериментів.)

Додатки

Є кілька додаткових пакетів, які покращують вибір регіонів та речей. Всі вони чудово граються разом і підходять для різних випадків використання. Використовуйте їх усі!

  • Розгорнути-Регіон : Розгорнути регіон збільшує виділений регіон на семантичні одиниці. Просто продовжуйте натискати клавішу, доки вона не вибере, що ви хочете. C-=є рекомендованим зв'язуванням для нього. Натисніть кілька разів, щоб отримати те, що вам потрібно.

  • Easy-Kill : ВикористовуйтеM-wта мнемоніку для вибору різних типів речей, таких як слова, sexps, списки тощо.

  • Zop-to-Char : як zap-to-char , але забезпечує приємний вибір та інші дії, керовані меню.

  • diff-hl : виділити незмінені змінені регіони. Використовуйтеdiff-hl-mark-hunkдля вибору / позначення куска.


7

Використовувати Control- Spaceдля встановлення позначки та переміщення курсору.

transient-mark-modeПідкреслить вибір для вас. M- x transient-mark-mode.

Ви можете налаштувати Emacs на ввімкнення цього режиму за замовчуванням за допомогою налаштування. M-x customize-option RET transient-mark-mode .


1

... і у випадку, якщо ви використовуєте Ubuntu і C-spcне працюєте для вас: вам потрібно очистити сполучення клавіш IBus "наступний метод введення", як у

запустіть ibus-setupі змініть прив'язку ключа для "наступного методу введення" на щось інше (або видаліть його повністю, натиснувши кнопку "...", а потім кнопку "Видалити").

Цитата взята з відповіді на запитання SO.


0

Щоб розширити відповідь Едіна Салковича, якщо ви використовуєте режим CUA, ви можете використовувати, щоб розпочати візуальний вибір блоку. Існує безліч ярликів для управління вибором блоків, описаних у документації CUA .


-1

У Emacs 25 просто натисніть C- Spaceа потім перемістіть курсор туди, куди ви хочете виділити / вибрати область тексту, яка вас цікавить. Після цього вам можуть знадобитися такі команди:

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