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

Я знаю, что я могу использовать 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, мой любимый способ продолжить – выбрать команду, включая фид строки, скопировать его в буфер обмена и затем щелкнуть правой кнопкой мыши, чтобы вставить его. Это повторяет команду за один клик. Это также отлично подходит для последовательности команд, разделенных полуколонами.

  • Как выполнять последовательные команды из истории?
  • Echo строка с переменной в ней без расширения / оценки
  • Разделение строки на первое вхождение разделителя
  • Почему моя подсказка bash получает прослушивание, когда я просматриваю историю?
  • Как переменные могут использовать «~» для cd'ing?
  • Как получить доступ ко второму аргументу из последней команды в истории?
  • Выполнение команды внутри переменной не работает для sed
  • что означает «tc @ box: / home $»?
  • Новая строка в переменных bash
  • Развернуть подоболочку перед ее выполнением?
  • Как выполнить одну команду для всех файлов в папке
  • Interesting Posts

    Переменная среды PATH в linux

    команда оболочки, чтобы знать дату изготовления компьютера

    Что мне не нужно делать резервными копиями?

    Как включить и использовать планировщик BFQ?

    Некоторые пакеты отмечены как INVALID с помощью iptables

    Можно ли увеличить окно с помощью сочетания клавиш в Gnome3?

    выполнить скрипт на клавише быстрого доступа на всех уровнях выполнения

    Как заменить запятые на пробелы в csv, но вставляя другое количество пробелов после каждого столбца?

    Как отобразить изображения на сетке, которые содержат определенный размер (MxN) в FEH?

    Почему было отключено мое устройство после того, как «rm» сохранил мои файлы?

    Почему файл перевода bash не содержит всех текстов ошибок?

    Я не могу понять, как расширить мой домашний раздел Arch на свободное место

    Использование dd для копирования результатов MBR в таблицах разделов удваивает размер

    Как Debian использует множество процессорных ядер?

    Uncompressing .tar.gz архив в конкретный каталог

    Linux и Unix - лучшая ОС в мире.