私はこのシナリオで頻繁に自分を見つけます。コマンドを入力している最中なので、完了する前に他のことを確認する必要があります。
これまでの入力が記憶されているある種のサブシェルを開く方法はありますか?次に、このサブシェルを終了すると、以前の場所に戻りますか?
$ mylongcommand -n -e <SOME KEY COMBINATION WHICH OPENS A SUBSHELL>
$ date
...
$ exit
$ mylongcommand -n -e <BACK TO WHERE I WAS>
zsh
を使用しています
キーの組み合わせがあります EscQ コマンドバッファを保存し、新しいコマンドを入力できるようにします。コマンドを実行すると、バッファには以前に入力した内容が含まれます。これを完了する前に別のコマンドを実行する必要がある場合は、次のように入力できます。 EscQ 再び。
(押した後にサブシェルを開こうとしなかった EscQ まだ。)
http://zsh.sourceforge.net/Intro/intro_10.html を参照して、「esc-q」を検索します
私は通常使用します Ctrl+U これは現在の行を消去し、それをバッファに保存します。そこから、mylongcommand
の前に必要なことをすべて行います。次に、準備ができたら使用します Ctrl+Ymylongcommand
をプロンプトに貼り付けます。
これに対する私の解決策は明らかにローテクで不格好ですが、おそらくあなたがすでに知っているキーシーケンスに依存しています:Hit Ctrl+A、その後 #、その後 ENTER。
これには、行の先頭に#
を挿入する効果があり、コメントにしてから実行して、コマンド履歴にプッシュします。次に、補助コマンドを入力し、コマンド履歴を上にスクロールしてコメント化されたコマンドに移動し、#
を削除して、必要に応じてコマンドを完了します。
私はタイプする Ctrl+Z 入力しているコマンドを「中断」して、別のコマンドを入力します。そのコマンドを実行した後(または、 Ctrl+C)、中断されたコマンドは編集のために戻ってきます(カーソル位置を覚えていても)。追加の便宜として、入力時にコマンドラインが空の場合 Ctrl+Z、キーは代わりにbg
ビルトインを呼び出します(したがって、double Ctrl+Z 実行中のコマンドを直接バックグラウンドに送信します)。
fancy-ctrl-z () {
emulate -LR zsh
if [[ $#BUFFER -eq 0 ]]; then
bg
zle redisplay
else
zle Push-input
fi
}
zle -N fancy-ctrl-z
bindkey '^Z' fancy-ctrl-z
(以前に投稿された 何かをチェックする間、ハーフタイプのコマンドを覚えておいてください これは主にbashの解決策があり、それほど便利なことはできません。これは the M-q
のPush-line
への組み込みバインディング
これはサブシェルを実行しません。前のコマンドを「中断」した後に入力したコマンドは、同じシェルで実行されます。これにより、コマンドを入力した後で別のディレクトリで実行するつもりであることがわかった場合に、現在のディレクトリを変更することができます。新しいシェルインスタンスを実行する場合は、キーバインディングからzsh
を実行できますが、これは特に便利だとは思いません。