web-dev-qa-db-ja.com

入力を削除して最後のスラッシュに戻す

サーバー上の複数のファイル間を頻繁に飛び回っています。次のコマンド例を順に実行します。

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

1つのnanoコマンドから次のコマンドに移動するには、現在押します Up そして Backspace パスの最後のセグメントを置き換えます。これの問題は、私が本当に本当に怠け者だということです。

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

  • 最後に使用されたパスに置き換えられます(最後に余分なビットがあります)
  • 現在の行で削除します(たとえば、を押した後 Up)最後の/に戻る
15
Oli

あなたが探していると思う Alt+Backspace ショートカット。

を押した後 Up これにより、前の/またはspace文字まで削除されます。

20
Sylvain Pineau

希望するようにWordを後方に強制終了するreadlineバインディングを検出するには、ターミナルで次のコマンドを使用できます。

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

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

"\e\C-h": backward-kill-Word
# Shell-backward-kill-Word (not bound)

この時点では2行目は重要ではないように見えるので、1行目が何を意味するのか見てみましょう。私が理解していることから、前の特殊文字(backward-kill-Word/;など)が実際にすべての文字を削除する , readline関数は、\e\C-hキーシーケンスにバインドされています。さて、このシーケンスでは\erepresents Esc キー、\CCtrl キー、および\C-hは Ctrl+h which この場合は同等 with Backspace キー。

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

気に入らなくても忘れてしまう場合は、次のコマンドを使用して新しいショートカットを作成できます。 Esc+w、あなたの目的のために:

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

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

"\ew": backward-kill-Word

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

9
Radu Rădeanu

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

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

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

0
αғsнιη