Я хочу виділити або виділити блок в 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