Bashで複数行にまたがるコマンドを入力するとき、以前の行を編集するにはどうすればよいですか?私はGNOMEターミナルを使用しているLinux Mint(Lisa)ユーザーです。
たとえば、次のように入力したとします。
$ echo "foo bar
> baz
>
そして、コマンドの3行目を入力しようとすると、突然 "foo"と "bar"を別々の行に置きたいことに気づきます。 Enterキーを押して別の行に置くことができるように、カーソルを「foo」と「bar」の間に再配置するにはどうすればよいですか?
(あなたが思うようにそれは簡単ではありません。上矢印は機能せず、Ctrl-Pも機能しません。そのため、投稿する前に試してください!ありがとう!)
残念ながら、それは端末ではなくbash
までです。オプションは次のとおりです。
改行ではなくセミコロンを使用します。ただし、一度に画面の行を上に移動することはできませんが、文字またはWordのモーションコマンドを使用する必要があります。 (奇妙なことに、zsh
を使用すると、currentコマンド内ではなく、履歴の編集時に複合コマンド内で移動できます。)時々fc
(前のコマンドを使用してエディターに放り込む)は、複合コマンドを処理する最も簡単な方法です。
Bashを使用している場合は、次のキーの組み合わせを使用します。
ctrl x e
テキストエディタを使用して作業しているコマンドが開きます。ファイルを保存して終了します。 (私は Shell Haterのプレゼンテーション でコマンドを見つけました。)Zshユーザーは この代替案 を持っています。
解決策は、複数行が正しくなるまでコマンドを入力しないことです。次のように入力します。 CtrlvCtrlj 次の行に行きたいとき。 Metab 言葉に戻る。
@riciのクレジット answer
おかしなことに、 Ctrl+C あなたが探しているものです。
あなたがいるとき
$ echo "foo bar
> baz
>
押すだけ Ctrl+C (編集されたコマンドラインは一時停止します)そして押す Up (前の履歴)。プロンプトは次のようになります:(>がないことに注意してください)
$ echo "foo bar
baz
今、あなたは一緒に動き回ることができます LeftRight ラインジャンプでも。
奇妙な点は1つしかありません。別の行を追加するには最後のキャラクターにいる必要があるため、移動して既存の行を編集してください(最初に Ctrl+A)プレス Enter それで十分な場合、または最後に移動した場合(Ctrl+E)行を追加するには Enter。別の欠点は、 Ctrl+_ (元に戻す)最後からの変更のみを復元します Ctrl+C