対話型シェルからパスの一部を削除する方法は?

対話型シェルからパスの一部を削除する方法は?

パスコンポーネントを削除するためのbashとzshへのショートカットはありますか?たとえば、入力したがカーソルが行のls ~/local/color/末尾にある場合、color/最後の行を削除できるショートカットがありますか?理想的には、viモードとemacsモードの両方で解決策が欲しいです。

答え1

基本bashで最も一般的に使用されるコマンドEmacsモード、最も一般的に使用されるキーボードの場合:

移動する

  • Ctrl- p、またはUp: 前のコマンド
  • Ctrl-nまたはDown: 次のコマンド
  • Ctrl- b、またはLeft: 前の文字
  • Ctrl-fまたはRight: 次の文字
  • Alt- b: 前の単語
  • Alt- f:次の単語
  • Ctrl-aまたはHome: コマンドの開始
  • Ctrl-eまたはEnd: コマンド終了

編集する

  • BkSpc: 前の文字を削除
  • Ctrl-dまたはDel: 現在の文字を削除
  • Alt- BkSpc: 左の単語を削除
  • Alt- d: 右の単語を削除
  • Ctrl- u: コマンドの先頭まで削除
  • Ctrl- k: 命令の最後まで削除
  • Ctrl- y:最後に切り取った内容を貼り付けます。

いくつかの雑多な

  • Cltr- /: 元に戻す
  • Cltr- r: 増分リバース履歴の検索

答え2

そして!unix-filename-ruboutReadline

# in ~/.inputrc
# press ctrl-b to delete unix filename parts
# see: man bash | less -p 'unix-filename-rubout' and
#      http://www.calmar.ws/vim/vi-bash.html
set editing-mode vi
set keymap vi
"\C-b": unix-filename-rubout

答え3

デフォルトでは、bash(そしてzshも同様)はemacsモードです。次のように試すことができます。

Esc + bカーソルを1ワード後ろに移動します。 Ctrl + k行末まで削除されます。

ほとんどの最新のシェル(bashなど)は、高度なコマンドライン編集機能を実装しています。このコマンドはemacsの編集に似ています(行の先頭はCtrl + A、行の終わりはCtrl + E、...)。

viなどのエディタに慣れている場合は、viモードを許可してみてください。

set -o vi

シェルにviと同様のモード(コマンドモード/挿入モード)を提供し、標準コマンド(削除用d、交換用r、...)にアクセスできます。

Vi モードでは、次のような操作を行います。

Esc (command mode); d; b.

関連情報