9

Я часто пишу длинные команды в оболочке bash - вещи со многими аргументами, веб-адресами, маршрутами и т.д. И т.д. Время от времени я буду понимать, что я забыл, скажем, поставить свой "пакетный исполнитель" в начале команды, или что-то написал с ошибкой, или забыл кавычки. Или что-то такое же простое, как поставить "cd" вместо "vim".

Так начинается утомительный процесс удерживания левой клавиши со стрелкой, пока я не вернусь к началу команды.

Есть ли способ снова перейти на начало строки?

8 ответов8

12

В дополнение к ^ A и ^ E, вы можете сделать

  • Esc - b, чтобы вернуться назад на одно слово
  • Esc - F, чтобы перейти на одно слово вперед
  • Ctrl - b, чтобы переместиться назад на один символ
  • Ctrl - f для перемещения вперед на один символ

Смотрите руководство по bash для команд для перемещения.

6

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

  • Ctrl -A для перехода в начало командной строки
  • Ctrl -E, чтобы перейти в конец командной строки

Это bash, а не только для Mac.

3
set -o vi

Затем Esc, а затем

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

1

Это не отвечает на ваш вопрос, но может решить вашу проблему в некоторых случаях.

В bash то !! токен заменяется вашей предыдущей командой. Поэтому, если вы забыли добавить что-то в начало команды (например, sudo), вы можете сделать что-то вроде этого

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

# sudo !!
sudo ./super_secret_command --with-args
=> ACCESS GRANTED
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
0

Я не пользователь Mac, но как насчет ключа Home ? Это прекрасно работает на терминале Linux.

0

Вы можете настроить обычные Ctrl/Opt+Left/Right для использования в Терминале. Таким образом, вам не нужно переучивать все, когда вы используете терминал.

Откройте Терминал »Настройки…» Настройки »(выберите профиль)» Клавиатура.

Там назначьте следующие ярлыки:

  • 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~ в оболочку

0

Мне это нужно в Cygwin, а не в Mac, но добавление следующего в ~/.inputrc может помочь:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .