Как я могу повторить последнюю команду без использования клавиш со стрелками?

Я знаю, что я могу использовать Up для повторения предыдущих команд. Запуск последней команды просто включает Up + Enter . Тем не менее, я думал о покупке Happy Hacking Keyboard, поскольку я провожу много времени в vim .

Эта клавиатура не имеет клавиш со стрелками, и единственный способ, которым я знаю, как добиться такого поведения, – нажать Ctrl + R и начать повторять мою предыдущую команду.

Есть ли простой способ эмулировать Up + Enter на терминале UNIX без клавиш со стрелками?

9 Solutions collect form web for “Как я могу повторить последнюю команду без использования клавиш со стрелками?”

С csh или любой оболочкой, реализующей csh подобную замену истории ( tcsh , bash , zsh ):

 !! 

Затем введите .


Или, альтернативно :

 !-1 

Затем введите .


Или Ctrl + P , Enter


Магическое пространство

Кроме того, обратите внимание, что !! и !-1 не будет автоматически расширяться для вас, пока вы их не выполните (когда может быть слишком поздно).

Если вы используете bash , вы можете поместить bind Space:magic-space в ~/.bashrc , а затем нажать « Пробел» после того, как команда будет автоматически расширять их в строке, позволяя вам проверять их перед выполнением. Это особенно полезно для расширения истории из команды, запускаемой некоторое время назад, например !echo вытащит последний запуск команды, начиная с echo . С магическим пространством вы можете просмотреть команду перед ее запуском.

Это эквивалентно выполнению bindkey ' ' magic-space в tcsh или zsh .

Большинство оболочек с функцией командной строки поддерживают привязки ключей Emacs. (крошечное подмножество)

 Up Ctrl+P Down Ctrl+N Left Ctrl+B Right Ctrl+F Home Ctrl+A End Ctrl+E Delete Ctrl+D 

Кроме того, вы можете настроить свою оболочку для использования режима редакции vi, добавив set -o vi в файл запуска оболочки (например, ~/.bashrc .

Мой любимый – CTRL + P, затем CTRL + O

Это работает по умолчанию, дополнительная настройка не требуется. ^ P позволит вам перейти к последней команде, а ^ O позволит вам выполнить текущую строку

Обратите внимание, что CTRL + O может использоваться столько раз, сколько вы хотите

Конечно! Поскольку вы привыкли к vi keybindings, почему бы не настроить оболочку для ответа на них? Для bash поместите это в свой ~/.inputrc :

 set editing-mode vi 

Запуск экземпляров bash не будет перечитывать файл, поэтому выйдите из него и вернитесь.

zsh даже обнаружит это для вас: если ни один из ваших сценариев запуска не заставит режим редактирования так или иначе использовать bindkey и если ваша $EDITOR среды $EDITOR будет содержать vi , то она автоматически активирует vi keybindings. Если вам нужно это сделать, поместите это в свой файл ~/.zshrc :

 bindkey -v 

После этого используйте ESC, как обычно, для ввода командной строки и k и j для перемещения вверх и вниз.

ТАКЖЕ : привязки оболочки по умолчанию в большинстве оболочек – это привязки emacs, поэтому на самом деле Crtl-P и Ctrl-N должны работать без необходимости что-либо менять.

С любой оболочкой POSIX, реализующей параметр User Portability (включая ksh , zsh , bash , yash ), вы также можете использовать команду fc :

 fc -e : -1 

См. Пример:

 $ echo "hello" hello $ fc -e : -1 echo "hello" hello 

Дополнительная информация в разделе Выполнение ряда команд из ответа истории Джонатана Леффлера.

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

 sudo !! 

повторяет предыдущую команду, как будто я вспомнил, что набрал sudo в первую очередь.

Для всех пользователей Mac iterm2:

Вы можете привязать + R к 0x0C 0x10 0x0d . Это очистит терминал и запустит последнюю команду.

iterm 2 ключевых предпочтения

С помощью csh или любой оболочки, реализующей csh подобную замену истории ( tcsh , bash , zsh ), вы также можете использовать команду !<beginning of command> чтобы вызвать последнюю команду, начинающуюся с <beginning of command> .

например, если вы побежали

 $ tail file.txt $ less otherfile.txt $ !ta 

!ta выполнит tail file.txt

Когда я использую хороший эмулятор xterm, например, putty, мой любимый способ продолжить – выбрать команду, включая фид строки, скопировать его в буфер обмена и затем щелкнуть правой кнопкой мыши, чтобы вставить его. Это повторяет команду за один клик. Это также отлично подходит для последовательности команд, разделенных полуколонами.

  • grep, чтобы увидеть, заканчивается ли строка определенной строкой
  • Как правильно использовать переменные в этом маленьком скрипте?
  • Вложенные строки в команде bash
  • Хранение пробелов в переменной скрипта оболочки
  • Выполнить код в скрипте выхода, если он выходит из определенного каталога?
  • Новая строка подсказки автоматически не помещается в командную строку после кода выхода
  • Найдите слово в предложении с Bourne Shell (sh)
  • Как использовать globs / wildcards, когда опция -C используется в команде tar?
  • globbing и $ #
  • Есть ли способ выполнить код в командной строке (PS1) без использования обратных ссылок?
  • Заменить рабочий каталог на 2 терминала одновременно
  • Linux и Unix - лучшая ОС в мире.