Чи є спосіб перейти до більш ранньої частини команди командного рядка в терміналі Mac?


9

Мені часто доводиться виписувати довгі команди в оболонці bash - речі з багатьма аргументами, веб-адресами, маршрутами тощо тощо. Кожна так часто я усвідомлюю, що забула, скажімо, поставити свій "bundle exec" на початку команди, або щось неправильно написала, або забула лапки. Або щось просто, як поставити "cd" замість "vim".

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

Чи є якийсь спосіб знову перейти до початку лінії?


2
Можливо, ви захочете позбутися програми терміналу за замовчуванням та завантажити iTerm
Clement Herreman

Чому? Я щойно перевірив, і, схоже, поводиться майже так само. (Домашній ключ працює зараз, але оскільки у мене є інші ключі, які насправді не мають значення). Що пропонується, що дозволить переробити всі мої налаштування та конфігурації та завдання, а що ні?
GlyphGryph

Це здається чимось, що ви можете налаштувати за допомогою .inputrc
Rob

Крім того, щоб стрибати по одному слову, використовуйте ⌥B та ⌥F, щоб перейти відповідно та назад.
fideli

@fideli, але лише якщо ви ввімкнули "Використовувати параметр як мета-ключ". Зауважте, що для Mac OS X Lion 10.7 налаштування клавіатури за замовчуванням налаштовують налаштування клавіатури за замовчуванням: опція ліворуч / стрілка вправо на Esc-b / f, тому немає необхідної конфігурації.
Кріс Пейдж

Відповіді:


12

Окрім ^ A і ^ E, ви можете зробити

  • Esc- bвідскочити одне слово назад
  • Esc- fстрибати одним словом вперед
  • Ctrl- bповернути один символ назад
  • Ctrl- fрухатися вперед одним символом

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


Що слід зазначити - це від Emacs, і додавши emacsпараметр до своїх шеллоптів, ви можете отримати ще щось із цього.
TC1

6

Ви можете використовувати команди Emacs, наприклад:

  • ctrl-Перейти до початку командного рядка
  • ctrl-E для переходу до кінця командного рядка

Це баш, не характерне для Mac.


3
set -o vi

Потім Escслід

^початок рядка $кінець рядка bслово слово wодин слово вперед


Я досить великий фанат Vim, тому принцип вашої відповіді мені чудовий, але модальне редагування командного рядка може дещо заплутати ОП, особливо без жодної згадки про те, як повернутися до можливості друкувати! Поверніться до режиму вставки, використовуючи i(insert) для введення перед курсором або a(додавання) для введення після курсору.
Каскабель

Я використовую vi як свій основний текстовий редактор десятиліттями, але все ще віддаю перевагу прив’язкам клавіш emacs для своєї оболонки.
Кіт Томпсон

Насправді ОП використовує vim для редагування тексту, тож знаючи, що можна встановити стандарти vi, надзвичайно корисно. Дуже дякую!
GlyphGryph

@Kieth Thompson: Раніше я думав те саме. Я просто думав, що оболонка не добре поєднується з цим перемиканням режимів (наприклад, дратівливою vклавішею в режимі vi). Але через деякий час я просто заразився vim, тому пропоную вам спробувати: P
kizzx2

1

Це не відповідає на ваше запитання, але може вирішити вашу проблему в деяких випадках.

У bashв !!знаку замінюються на попередню команду. Тож якщо ви забудете додати щось до початку команди (наприклад sudo), ви можете зробити щось подібне

# ./super_secret_command --with-args
=> ACCESS DENIED

# sudo !!
sudo ./super_secret_command --with-args
=> ACCESS GRANTED

0

Ви можете налаштувати звичайні Ctrl/Opt+Left/Rightярлики для використання в Terminal. Таким чином, вам не доведеться переучувати все, коли ви користуєтеся терміналом.

Відкрийте термінал »Налаштування ...» Налаштування »(виберіть профіль)» Клавіатура .

Там призначте такі ярлики:

  • Control + Cursor Left: Надіслати рядок \033[1~до оболонки
  • Control + Cursor Right: Надіслати рядок \033[4~до оболонки
  • Option + Cursor Left: Надіслати рядок \033[5Dдо оболонки
  • Option + Cursor Right: Надіслати рядок \033[5Cдо оболонки

Мені також подобаються такі ( Fn + Left/Right):

  • Home: Надіслати рядок \033[1~до оболонки
  • End: Надіслати рядок \033[4~до оболонки

введіть тут опис зображення


На Леві ⌥ ← і ⌥ → прив’язані до M-bта M-fза замовчуванням. І ⌃ ← і ⌃ → - це ярлики за замовчуванням для зміни пробілів.
Лрі

0

Мені це було потрібно в Cygwin, а не на Mac, але додавання наступного ~/.inputrcможе також допомогти:

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 

0

Я не користувач Mac, але що робити з Homeключем? Це добре працює на терміналі Linux.


1
Ні, це прокручується до верхньої частини вікна терміналу.
GlyphGryph

За замовчуванням додому та кінця прокручуйте подання, що є стандартною поведінкою Mac. За замовчуванням Shift-Home та Shift-End надсилають відповідно “ESC [H” та “ESC [F”. Усі вони настроюються в Терміналі> Налаштування> Налаштування> [профіль]> Клавіатура .
Кріс Пейдж

0

Найкращий спосіб переміщення командного рядка в Mac OS X - це використовувати мій профіль: https://github.com/lingtalfi/mac-terminal-shortcuts

Він пропонує такі (інтуїтивні) ярлики:

ALT-left: move one word backward
ALT-right: move one word forward
CTRL-left: move to the beginning of the line
CTRL-right: move to the end of the line
ALT-backspace: kill one word backward
ALT-del: kill one word forward
ALT-up: set word after cursor to uppercase
ALT-down: set word after cursor to lowercase
home: move to the beginning of the line
end: move to the end of the line    
CTRL-backspace: Same as ALT-backspace
CTRL-del: Same as ALT-del
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.