Термінал Mac OS X: Опція карти + видалити для "назад видалити слово"


232

Спробував відобразити його з "Налаштування" -> Налаштування -> Клавіатура, але в комбінаційному вікні "клавіша" є лише "видалити вперед", але не "видалити". З моєї клавіатури, з іншого боку, є лише "видалити", а не "вперед видалити"!

Чи є якийсь інший спосіб зробити це, крім уподобань?


Під "видаленням слова назад" ви маєте на увазі клавішу зворотної області? Мені не відома жодна недавня клавіатура Apple, на якій є клавіша видалення.
Sören Kuklau

Під "назад видалити слово" я маю на увазі саме це - для видалення всього слова, починаючи з курсору назад. :) В останньому Macbook є ключ з написом "delete", але він виступає як зворотний простір.
ibz

Я стикаюся з тим же питанням. клавіатура має зворотне видалення, але не може використовуватися як прив'язка в Terminal.app.
knoopx

Для мене ваше запитання заслуговує мільйонів грошей. Це мені дуже допомогло. Раніше я був Ubuntu. Тепер це полегшило мені життя і в Mac OS. Дякую.
doptimusprime

Відповіді:


424

Увімкнути параметр як мета-ключ

  1. Перейти Terminal> Preferences> Profiles>Keyboard
  2. Перевірка Use option key as meta key.

Зображення

На macOS High Sierra 10.13.6, знятий 23 жовтня 2018 року.

Ілюстрація вікна для перемикання опціональної клавіші як мета-ключа

Примітки

У багатьох програмах (включаючи bash та tcsh) мета-Видалення трактується як "слово видалення назад".


32
Це в розділі Налаштування терміналу> Налаштування> Клавіатура, внизу.
Джон

16
Чому це не за замовчуванням ?!
Росс Гамбрік

8
У Yosemite це налаштування зараз знаходиться в розділі Налаштування -> Профілі -> Клавіатура. Схоже, ви повинні змінити / встановити його для кожного профілю.
palimpsestor

6
На клавіатурах, які не є американськими, часто потрібна опціональна клавіша, щоб отримати певні символи (наприклад, "shell" | дуже важливий в оболонці). У цьому випадку <Esc> b та <Esc> f, згадані в інших відповідях, мабуть, найкраще рішення?
Туко

8
На жаль, це контрпродуктивно для програмістів із іноземними клавіатурами, яким потрібно використовувати клавішу опціону, щоб отримати спеціальні символи, такі {як це не спрацює, коли опціональна клавіша використовується як мета-ключ.
Магне

74

Термінал OS X запускає bash, що включає підтримку readline. Дотримуйтесь порад Glomek і скажіть терміналу використовувати параметр як мета-ключ (або скористатися іншим способом Esc), і тоді у вас є купа зручних варіантів: Ctrl+ wвидаляє попереднє слово (як і Meta + видаляє, як згадувалося), але ви також можете використовувати Meta + f і Meta + b для просування вперед і назад через слова, Ctrl+ aі Ctrl+ eдо початку і в кінці рядка, Ctrl+ kвидалення (вбити) від курсору до кінця рядка і ще багато.

Дивіться http://www.bigsmoke.us/readline/shortcuts для приємної маленької довідкової таблиці.


3
Як це "зручно"? Решта системи використовує deleteкласифікатори для видалення слів.
idrougge

Чи можливо також "видалити рядок"?
Венберт

1
Лінія читання чудова, але це не допомагає ОП. Ctrl + w видаляє WORD (розділений пробілом), а не слово (розділений пунктуацією + пробіл). З курсором в кінці cat .git/refs/heads, Ctrl-w призводить до cat. Мета + видалити результати вcat .git/refs/
idbrii

@nadafigment, 'a' і 'e' означає?
Pacerier

63

Видаліть слово, яке повертається назад:

Ctr-w.


2
добре прочитавши це, я виявив, що "видалити слово вперед" - це ctrl + k (методом проб і помилок). тепер мені цікаво, чому так мало документації про все це.
переможець н.

8
Ctr-k видаляє все попереду, не тільки одне слово, ні?
Шай

це працює на моєму mac. це також працює на ubuntu linux?
користувач391339

1
Ctrl + w видаляє WORD (розділений пробілом), а не слово (розділений пунктуацією + пробіл). З курсором в кінці cat .git/refs/heads, Ctrl-w призводить до cat. Мета + видалити результати вcat .git/refs/
idbrii

24

За замовчуванням мета backspace робить зворотне слово yank у більшості оболонок. Якщо натиснути клавішу Escape, а потім натиснути зворотну простір, це майже все працює.


3
Фантастичний, що не потребує додаткових налаштувань. Я помічаю, <Esc> bа <Esc> fтакож працюю для стрибків назад або вперед одного слова.
joeytwiddle

1
Мені подобається <ALT> + СТРІКА більше. ESC не дозволяє безперервно клацати на b або f.
Віталій Пом,

1
Я використовував <ALT> + СТРЕЛКА для переміщення, але я вважаю, що немає жодного способу видалити подібним чином. Згаданий вище підхід CTRL + W не зупиняється на символах, що не містять слів, так само, як це робиться <ALT> + Стрілка, тому він видаляє все, поки не пробілить пробіл. Будь-який спосіб видалити за допомогою аналогічного виявлення кордону, як <ALT> + Стрілка, буде вдячний
Рене Вуллер,

18

⌃W(control + W) - це не те саме, що мета + delete (ESC + delete, якщо у вас не встановлена ​​опція використання як мета-ключ) meta + delete буде розглядатися / _як роздільник слів, де ^Wпробіл буде розглядатися як роздільник.

наприклад, використовуючи ESC + Bakcspace увімкнено (курсор в кінці)

rm /dira/dirb/file1

дає

rm /dira/dirb/

тоді як ^ W на те саме дасть

rm

Тому краще використовувати \ 033 \ 177, а не ^ W при визначенні модифікації профілю терміналу. Таким чином, ви дійсно відображаєте ⌥⌫ на те, що робить esc⌫, і у вас залишається ^ W стерти слово на основі роздільника місця.

Я б хотів, щоб можна було розмістити зображення про те, як це зробити, але як новачків я не можу.

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


5
Для тих, хто хоче це зробити iterm2, ви можете зайти в Налаштування> Клавіші> додати ключову карту, ⌥⌫щоб надіслати шістнадцяткові коди 0x1B 0x7F. 🍻
qix

Як ви дізналися, що \033\177саме ви хочете для "видалити частину слова"?
адіабатичний

Дійсно, вам просто потрібно натиснути потрібну послідовність клавіш у діалоговому вікні Налаштування терміналу. Налаштування → Профілі → вкладка Клавіатура → + кнопка, потім виберіть модифікатор «Опція» та клавішу «⌫ видалити», потім виберіть текстове поле та натисніть клавішу виходу, потім натисніть клавішу ⌫ і все закінчено. Esc + ⌫ робить те саме, що і ⌥⌫
Стефан Гаспаріні

14

У профілі вашого терміналу ви можете прив’язати ⌥⌫ (опція + видалити) до ⌃W (контроль + W), щоб він працював аналогічно іншим програмам.

Налаштування клавіатури профілю терміналу


stty повинен мати ^ w картографувати, щоб стерти (поведінка за замовчуванням), щоб це працювало. Використовуйте stty -a в командному рядку, щоб побачити, як встановлюються відображення.
natersoz

4

Ярлики команд редагування

Ctrl + a - перехід до початку командного рядка

Ctrl + e - перехід до кінця командного рядка

Ctrl + k - видалити з курсору до кінця командного рядка

Ctrl + u - видалити з курсору до початку командного рядка

Ctrl + w - видалити курсор до початку слова (тобто видалити одне слово назад)

Ctrl + y - вставити слово або текст, який було вирізано за допомогою одного із ярликів видалення (наприклад, вище) після курсору

Ctrl + xx - переміщення між початком командного рядка та поточним положенням курсору (і назад)

Alt + b - перемістити одне слово назад (або перейти до початку слова, на якому курсор зараз увімкнено)

Alt + f - перенести одне слово вперед (або перейти до кінця слова, на якому курсор зараз увімкнено)

Alt + d - видалити до кінця слова, починаючи з курсору (ціле слово, якщо курсор знаходиться на початку слова)

Alt + c - з великої літери до кінця слова, починаючи з курсору (ціле слово, якщо курсор знаходиться на початку слова)

Alt + u - зробіть великі регістри від курсору до кінця слова

Alt + l - зробіть малі літери від курсору до кінця слова

Alt + t - замінити поточне слово на попереднє

Ctrl + f - переміщення одного символу вперед

Ctrl + b - переміщення одного символу назад

Ctrl + d - видалити символ під курсором

Ctrl + h - видалити символ перед курсором

Ctrl + t - поміняти символ під курсором з попереднім

Ярлики команд

Ctrl + r - пошук історії назад

Ctrl + g - вихід із режиму пошуку історії

Ctrl + p - попередня команда в історії (тобто повернення через історію команд)

Ctrl + n - наступна команда в історії (тобто перехід вперед через історію команд) Alt +. - використовувати останнє слово попередньої команди

Ярлики управління командами

Ctrl + l - очистити екран

Ctrl + s - зупиняє вихід на екран (для тривалої багатослівної команди)

Ctrl + q - дозволити вихід на екран (якщо раніше зупинено використання команди вище)

Ctrl + c - завершити команду

Ctrl + z - призупинення / зупинення команди

Bash Bang (!) Команди Bash також мають деякі зручні функції, які використовують! (удар), щоб дозволити вам робити якісь прикольні речі з командами bash.

!! - запустити останню команду! Blah - запустити останню команду, яка починається з 'blah' (наприклад, ls)

! blah: p - роздрукуйте команду, що! blah запускається (також додає її як останню команду в історії команд)

! $ - останнє слово попередньої команди (те саме, що Alt +.)

! $: p - роздрукуйте слово, яке! $ замінить

! * - попередня команда за винятком останнього слова (наприклад, якщо ви введете '_find somefile.txt /', то! * Дасть вам '_find somefile.txt')

! : p - роздрукуй що! замінив би


2

З Natural Text Editingувімкненою попередньою програмою у профілі -> клавіші. Ви можете просто видалити слово

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