Linux端末でコマンドをすばやく編集するには?

Linux端末でコマンドをすばやく編集するには?

Linux端末にコマンド、特に非常に長いコマンドを入力し、1つ以上の単語を削除して別の単語に置き換えたい場合は、端末でそれをすばやく実行する方法はありますか?

これはLinuxとは何の関係もありませんが、メモ帳などのアプリケーションでは、1つ以上の単語を選択して1段階で削除できます。しかし、私が知っている限り、端末から1文字ずつ削除する必要がありますが、これは遅くなる可能性があります。

Vimがこれを行うことができることを知っていますが、Vimで開くのではなく、端末で直接編集したいとしましょう。

答え1

デフォルトでは、次のキーバインディングを使用して端末でカーソルを移動できます[1]

alt + b   move one word backward
alt + f   move one word forward
ctrl + b  move one character forward
ctrl + f  move one character forward

単語単位で移動する方が文字単位で移動するよりもはるかに高速です。キャラクターが席を取ると、次のことができます。

alt + d  to delete a word in cursor position
ctrl + d  delete a character in cursor position

viキーバインディングが設定されている場合(ありがとう。@admstg) Bashでは、ESCキーを入力してviモードに入ることができます。 viキーバインディングを使用してカーソルを移動する方法は次のとおりです。[2]

h    move left by a character
l    move right by a character
b    move back by a word
w    move forward by a word
dw   delete word at cursor
x    cut a character at cursor
u    undo
r    replace a character
v    enter vi editor to edit the command

引用:

答え2

私は個人的に次のキーをより頻繁に使用することを好みます。私はbash主にデフォルト設定を使用し、次のようないくつかのアドインを定義します.inputrc

"\e[1;5A": previous-screen-line
"\e[1;5B": next-screen-line

CtrlUpCtrlDownカーソルをコマンドの前/次のバーに移動します。非常に長い複数行のコマンドに便利です。

"\e[1;5C": forward-word
"\e[1;5D": backward-word

CtrlLeftカーソルを単語単位で水平に移動しますCtrlRight

"\e[3;5~": kill-word
"\b": backward-kill-word

CtrlDeleteそしてCtrlBackspace右/左の単語全体を削除してください。 (AltBackspace基本的にこれを行う必要がありますが、Ctrl他のアプリや他のショートカットと一貫性を維持することをお勧めします。)

もちろん、HomeいつものEndように、DeleteこれらBackspaceはすべて基本的に機能します。

readline便利だと思われる他の可能性については、マニュアルの「コマンドの編集」セクションを確認してください。

たとえば、他の人気のあるシェルに切り替えたり、より多くのzshfishまたは単に異なる)オプションを提供したりできますが、私はそのオプションに慣れていないので、見たいと思うかもしれません。

一部の端末エミュレータ(どのエミュレータであるかはわかりません)では、マウスでカーソル位置を指定できます。以下はやや信頼できない推測です。ターミナルは、矢印キーを数回押したかのように、複数のLeftキーRight(カーソルに対するクリックポイントの相対位置に基づいて)を合成し、アプリケーション(シェル)が次のように反応すると仮定します。カーソルをそこに移動します(常にそうではありませんが、通常は正しい推測です)。

答え3

一般的なデフォルトのemacsキーバインディング(IEはviバインディングではありません)を使用している場合は、カーソルから次のCtrlWスペース境界までバックバックを使用できます。

これは、パスやURLの一部を削除しようとすると多少積極的である可能性があるため、AltBackspaceさまざまな単語境界文字が尊重されることがあります。

ここにリストできないバインディングがたくさんあります。

答え4

vi端末から直接コマンドを使用できますset -o vi

関連情報