14

При написании длинной команды в командной строке * nix и необходимости вернуться к первому символу, чтобы добавить что-то в начале (например, nohup , когда вы понимаете, что процесс будет длинным или sudo , когда вы понимаете, что вам нужны права суперпользователя) курсор может занять много времени, чтобы вернуться к первому символу ...

Есть ли короткий путь, который позволяет прыгать прямо туда?

Я использую Mac, так что дома не вариант

5 ответов5

25

Ctrl+A должен работать. Ctrl+E соответствует концу командной строки.

10

Это зависит от рассматриваемой оболочки.

Некоторые оболочки (например, AT & T ksh88) практически не редактируют строку ввода.

В оболочках, реализующих редактирование в режиме vi (вам может потребоваться включить это с помощью set -o vi), это делается нажатием клавиши Esc (чтобы переключиться из режима вставки) с последующим нажатием 0 для перехода к началу строки или $ для перехода к концу линии. Затем повторно войдите в режим вставки, нажав i - курсор останется там, где он находится - или a - курсор переместится на один вправо, чтобы добавить текст.

Редактирование режима vi недавно было предписано стандартом POSIX.

Гораздо более распространенное редактирование режима emacs (слава богу, оно не имеет ничего общего с Emacs editor-slash-operating-system) использует Ctrl-A для перехода к началу строки и Ctrl-E для перехода к концу линия. Этот режим требует, чтобы вы запускали set -o emacs на многих оболочках (особенно AT & T ksh93), но он включен по умолчанию в mksh и GNU bash.

Большинство современных оболочек поддерживают режимы emacs и vi . (Оба эти режима требуют tty для работы.)

Во многих оболочках вы можете настроить сочетания клавиш; обычно для режима emacs , хотя некоторые оболочки также позволяют настраивать привязку клавиш для режима vi . Если у вас есть ключ, с которым вы бы предпочли связать его, вам сначала нужно выяснить, какие последовательности клавиш он производит (например, в моей системе Alt-CursorLeft выдает Esc+[+1+;+3+D (^[[1;3D ; ^X - это Ctrl-X, а ^[ - это Esc), поэтому я могу напечатать что-то вроде

bind '^[[1;3D=beginning-of-line'
bind '"\e[1;3D":beginning-of-line'

и эта привязка клавиш будет изменена в зависимости от оболочки. Обычно их можно сохранить в файле запуска (~/.mkshrc , ~/.kshrc) или, для GNU bash, в ~/.inputrc . Обратите внимание, что не все оболочки поддерживают привязку всех ключей во всех версиях.

Обычно вы можете узнать, какие символы генерирует ключ, просто запустив cat на оболочке, набрав ключ и наблюдая. Затем нажмите ^C (Ctrl-C), чтобы отменить cat .

2

Если вы переключились в режим vi , используя set -o vi , вы можете нажать Esc и I или A, чтобы ввести текст в начале или конце строки. Или, если вы просто хотите переместить курсор, это ^ и $.

2

В режиме emacs (переключается с помощью: set -o emacs) это нажатием:

  • Ctrl+A и Ctrl+E
  • Дом и конец
  • Esc+b и Esc+f (перемещает курсор назад и вперед текущего слова)

В режиме vi (переключается с помощью: set -o vi), когда в командном режиме (Esc), нажмите:

  • 0/^ и $ (он останется в командном режиме)
  • Я и А (он переключится в режим редактирования)

Смотрите также:

1

Вы пробовали Домашний ключ? Я использую MobXterm для подключения к Linux, а также клавиши Home и End на клавиатуре для перехода к первому или последнему символу команды.

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