Я хочу виділити або виділити блок в emacs, не використовуючи мишу, а роблячи це з клавіатури, як візуальний режим vim. Який найпростіший спосіб зробити це з клавіатури?
Я хочу виділити або виділити блок в emacs, не використовуючи мишу, а роблячи це з клавіатури, як візуальний режим vim. Який найпростіший спосіб зробити це з клавіатури?
Відповіді:
Погляньте на регіон-прямокутник в emacs.
Коротше кажучи, ви починаєте виділення, як зазвичай, за допомогою Control- Space, потім вбиваєте регіон за допомогою Control- x r kі вставляєте (або відриваєте ) вбитий блок за допомогою Control- x r y.
Якщо я правильно розумію питання, мова не йде про прямокутні області спочатку.
C-Spc
ставить позначку на поточній позиції.
Де б не знаходився курсор, текст між останньою позначкою та поточною позицією буде "виділений" (ви можете виділити це, активуючи transient-mark-mode
, але це також означатиме, що позначки потрібно видаляти, коли ви не хочете виділяти).
Ви можете оперувати цим регіоном за допомогою таких команд:
C-w
. . Вбити регіон. Це видаляє і поміщає область в кільце вбивств.
C-y
. . Янка. Це вставляє останній фрагмент із кільця вбивства.
M-y
. . Цикл вбивства кільце. Відразу після C-y
цього це замінює витягнуту частину іншими фрагментами в кільці вбивства.
M-w
. . Збережіть регіон у кільце вбивств. Подобається C-w
, але не видаляє.
Це лише основне використання. Знаки мають і інше використання. Я рекомендую підручник ( C-h t
).
C-s
C-r
в цьому контексті зазвичай використовують пошук кінця / початку регіону. (Особливо корисно в макросі.)
M-x indent-region
.
indent-region
працює чудово, але c-indent-line-or-region
(той, що прив'язаний до клавіші табуляції ), ні. Остання функція працює не на позначених областях, а на вибраних , тобто виділеній області, як якщо б ви вибрали її за допомогою миші.
C-Spc
двічі вдаривши туди, де ви поставили позначку. Це тимчасово активує режим перехідних позначок (доки ви не скасуєте (за допомогою C-g
)). Потім перемістіть точку, щоб побачити, як з’явиться вибрана область.
Emacs 24.4 тепер має режим прямокутної позначки. Cx простір для його виклику.
Дивіться статтю: "Робота з прямокутними виділеннями" , особливо розділ коментарів. Див. Також розділ документації щодо режиму CUA під назвою "Підтримка прямокутника CUA". Також є гарне відео на vimeo .
Хоча 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
для вибору / позначення куска.
Використовувати Control- Spaceдля встановлення позначки та переміщення курсору.
transient-mark-mode
Підкреслить вибір для вас. M- x transient-mark-mode
.
Ви можете налаштувати Emacs на ввімкнення цього режиму за замовчуванням за допомогою налаштування. M-x customize-option
RET transient-mark-mode
.
... і у випадку, якщо ви використовуєте Ubuntu і C-spcне працюєте для вас: вам потрібно очистити сполучення клавіш IBus "наступний метод введення", як у
запустіть
ibus-setup
і змініть прив'язку ключа для "наступного методу введення" на щось інше (або видаліть його повністю, натиснувши кнопку "...", а потім кнопку "Видалити").
Цитата взята з відповіді на запитання SO.
Щоб розширити відповідь Едіна Салковича, якщо ви використовуєте режим CUA, ви можете використовувати, щоб розпочати візуальний вибір блоку. Існує безліч ярликів для управління вибором блоків, описаних у документації CUA .
У Emacs 25 просто натисніть C- Spaceа потім перемістіть курсор туди, куди ви хочете виділити / вибрати область тексту, яка вас цікавить. Після цього вам можуть знадобитися такі команди:
mark-defun