最後のスラッシュまで入力を削除する

最後のスラッシュまで入力を削除する

サーバー上の複数のファイル間を行き来することがよくあります。以下のサンプル コマンドを順番に実行します。

nano /web/site/path/to/file
/web/site/script.py
nano /web/site/path/to/anotherFile
nano /web/site/path/to/yetAnotherFile
/web/site/script.py
nano /web/site/path/to/etc

nano1つのコマンドから次のコマンドへ進むには、現在、パスの最後のセグメントを置き換えるためにUpを押しますBackspace。これの問題は、本当に怠け者。

次のいずれかを実行できるキーボード ショートカット (または Bashism) はありますか?

  • 最後に使用されたパスに置き換えられます(最後に追加ビットが付きます)
  • 現在の行(例えば を押した後Up)の最後の行まで削除する/

答え1

Alt+ショートカットを探しているのだと思いますBackspace

これを押すと、Up前の文字/またはspace文字が削除されます。

答え2

希望どおりに単語を後方に削除する readline バインディングを検出するには、ターミナルで次のコマンドを使用します。

bind -p | awk '/kill/ && /word/ && /backward/'

デフォルトの Ubuntu インストールでは、出力は次のようになります。

"\e\C-h": backward-kill-word
# shell-backward-kill-word (not bound)

2行目はこの時点では重要ではないようですので、1行目の意味を見てみましょう。私の理解では、backward-kill-wordreadline関数は、前の特殊文字(/;など,)が\e\C-hキーシーケンスにバインドされるまで、すべての文字を削除します。さて、このシーケンスでは\e を表すキーEsc\C-Ctrlキー、+\C-hを表します。Ctrlhこの場合は同等である鍵付きBackspace

あなたが探しているのはEsc+ Ctrl+h同等のキーボードショートカットEsc+Backspaceそして、xtermの動作により、makeAltキーはメタ文字として動作し、メタ文字は文字自体の前にEsc(を参照man xterm)が付いた2文字のシーケンスに変換されます。は、Alt+Backspace

さて、それが気に入らず、忘れ続けてしまう場合は、次のコマンドを使用して、目的に合わせて新しいショートカット (たとえばEsc+ ) を作成できます。w

bind '"\ew": backward-kill-word'

この新しいショートカットを、readline を使用するすべてのコマンドに対して常に有効にするには、~/.inputrcファイルに次の行を追加します。

"\ew": backward-kill-word

help -m bind | sensible-pager詳細については、を参照してください。

答え3

別のキーの組み合わせは次のとおりです。

Alt+BそれからCtrl+K

Alt + B     Move cursor backward one word on the current line    
Ctrl + K    Clear the line after the cursor

Alt+BそれからAlt+D

これにより、単語間の特殊文字を削除せずに最後の単語が削除されます。

関連情報