ctrl-w(単語の削除)を構成することはできますか?


40

通常、Ctrl+ Wは最後の空白まで削除します。

などの追加の文字を使用するように構成することは可能/ですか?

編集:より明確にするために:私はそれのためにキーを設定したくありません、私/も同様に削除を止めたいです。

例:

vim /foo/bar^W
vim /foo/

回答:


29

私のために働いたのは、私の.bashrcに次の行を追加することでした

stty werase undef
bind '\C-w:unix-filename-rubout'

undef行が必要です。そうでない場合、bashは新しいバインディングを無視します C-w


3
stty werase undef任意のプログラムでCwを使用できなくなることに注意する必要があります(バインドによりreadlineで使用できるようになります)
0fnt

24

Escを使用してから、バックスペースでスラッシュで区切られた単語を削除できるはずです。

これを.bashrcに入れることで変更できます:

bind '\C-f:unix-filename-rubout'

Ctrl+f 、あなたがしたいことをするために使用します。


1
おかげで、それが機能するコマンドです。Cwのコマンドを上書きする方法はありますか?に変更C-w:...すると、次のスペースに削除するデフォルトの動作が引き続き有効になります。別のキー(Fなど)で正常に機能する場合。
-SkaveRat

ctrl-wがシェルだけで管理されているとは思わない。ttyによって管理される場合もあります。ttyの設定はどのように表示されstty -aますか?weraseのデフォルトの文字としてcontrol-wがありますか?comman stty werase undefを使用してttyからその設定を削除すると、bashは期待どおりに動作しますか?
エスペスイ

23

この特定の問題については、次のものも使用できます。

Alt + Backspace

$ cd /home/me/test/a_dir/    # Alt + Backspace
$ cd /home/me/test/          # Alt + Backspace
$ cd /home/me/               # ...

良い参考:bashの単語消去を使用した冒険


2
驚くばかり!他のほとんどの答えは、再バインドすることをお勧めCtrl+wまたはCtrl + Bまたは何かにunix-filename-rubout、それはとても良いです内蔵の結合があること:M-バックスペース(Altキー+バックスペースキーまたはEscキーをバックスペース)
コリン・D・ベネット

私のために働いていません
でした-ethanjyx

@ethanjyxああ。GNU bashに取り組んでいます。あなたもこの味をしていますか?
フェドルキ

7

bashを使用すると、〜/ .bashrcファイルに以下を追加して、目的の効果を得ることができます。

bind '"\C-w":backward-kill-word'

ヒットCTRL+Vとあなたのキーの組み合わせは、それがあなたの端末エミュレータのためどのように見えるかを確認します。たとえば、CTRL+bksp異なる端末などで異なる解釈することができます^H^?^文字は同じですCTRL


私は自分の質問について十分に具体的ではなかったと思います。/delete-word-commandを他のキーにバインドする方法ではなく、追加のストップ文字として使用したかったのです。私は私の質問に編集
SkaveRat

\ Cwにバインドされた逆方向ワードを使用して、ワード内に存在する場合は最後に与えられたスラッシュまで逆方向に消去し、空白で区切られたワードを消去します。これはあなたが望んでいたものではありませんか?

私のシステムは^F使用"\^F"していますが、上記のスクリプトで使用しても動作しません
-SkaveRat

1
Ctrl文字が書かれ\Cたスクリプトではありません\^
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.