Вы знаете ситуацию: вы наполовину набрали длинную команду (например, сообщение фиксации) и понимаете, что вы забыли выполнить некоторую предварительную команду, которую нельзя добавить с помощью &&
. Обычно, когда это случается со мной, я выбираю то, что набрал с помощью мыши, копирую это в буфер обмена, нажимаю Ctrl-U, чтобы очистить строку, запускаю мою предварительную команду и вставляю из буфера обмена. Но, может быть, есть способ получше, желательно без использования мыши? Ищу решения для bash и / или zsh.
После того, как вы использовали CTRL-U, вы можете использовать CTRL-Y, чтобы вставить обратно то, что вы стерли. Он работает и после стирания слова или нескольких слов с помощью CTRL-W.
Обратите внимание, что таким образом вам действительно не нужно ничего копировать в буфер обмена или выделять его мышью - CTRL-U фактически переносит строку в отдельный буфер обмена, так сказать.
Это было недавно спросили и обсудили на сайте SE Unix и Linux. Мой ответ объяснил что, если вы используете zsh в качестве оболочки, вы можете использовать функцию push-line, чтобы спрятать свою незавершенную команду, запустить что-то еще, тогда ваша первая команда вернется, и вы сможете ее завершить. В .zshrc
:
bindkey '^L' push-line
Затем используйте Ctrl+L чтобы приостановить текущую команду и вернуться к ней после выполнения чего-то еще.
Было дано несколько других ответов, включая настройки того, как сделать что-то подобное в bash, и некоторые индивидуальные версии этой встроенной функции в zsh.
Добавьте "#" в начало вашей текущей строки. Нажмите Enter, чтобы добавить комментарий в свою историю. Выполните необходимую команду. Подойдите к предыдущей команде и удалите #.
Ты можешь сделать Shift-Alt-3
чтобы прокомментировать текущую строку и перейти к следующей. Затем вы нажимаете up
, Ctrl-e
, Del
и тадам!