Bash:Ctrl-Backspaceを設定して単語を後方に削除できますか?


19

When in shell(bash)-Ctrl-Backspaceを「単語を後方に削除」にバインドしたい。出来ますか?

編集

konsoleKDEのターミナルを使用しています。


2
質問は単純明快で、それについて不満はありません。私は、多くのアプリケーションに既に存在する「標準の」キーバインディングを容易にすることは、多くの価値があることをコメントしたいと思います。Ctrl+w私が慣れる必要があるものです。
ダニエルアンダーソン

@ Daniel Andersson:または、代わりに- 設定を外部のマシンに転送する方法を開発できます。
アドビ

ドットファイルの共有は解決された問題ですが、かなりオープンな権限を持っているローカルコンピューター以外ではあまり役に立ちません。外国のシステムを使用している場合、おそらくそのようなものを再構成する自由はありません(少なくとも、同じマシンを使用している同僚にbyられてはいけません:-))。また、すべての新しいアプリケーションには特別な処理が必要です。
ダニエルアンダーソン

6
私は逆の問題を抱えてCtrl-wおり、コンソールで「前の単語を削除」するのに慣れていて、EclipseやChromeでもタブを閉じる/現在のファイルを閉じるという意味で本能的にそれを行います。かなり迷惑です。
エゼキエルマンズ

1
Chrome SShInATabでも同じ問題があります。ctrl-Wなしでctrl-Wを実行するにはどうすればよいですか?:)
リカルドSCE 14

回答:


11

ほとんどの端末で既にマップされているAlt+ BackspaceまたはCtrl+ Wを使用しないのはなぜですか。コンソールについてはわかりません。Xmodmap(man xmodmap)は、他のカスタムキーの再マッピングにも使用できます。(逆説的に、xmodmapは、端末がマッピングをオーバーライドするため、Backspaceをうまく再マップできませんが、ほとんどのキーでうまく機能します...)。


9
EmacsでCtrl-Backspaceを使用していたためです。Ctrl-wについて知っていました。Alt-Backspaceは初めてです(+1)。
アドビ

1
良い点、@ hellork。Xサーバーでcontrol + backspaceをインターセプトし(xmodmapを使用)、未使用の文字(alt-backspaceなど)にマップできます。

4
これに関する厄介な点は、ctrl + backspaceは、ほとんどの主要なオペレーティングシステム上のほとんどのGUIアプリで「単語を後方に削除」するための本当に一般的なマッピングであるということです。同様に、Ctrl + Wは「ウィンドウを閉じる」ために広く普及しています。Alt + wは、GUIで使用されることはめったにありません。標準化は素晴らしいことです。大きな混乱、端末の変更、GUIの変更はどうなるのでしょうか?
naught101

1
@ naught、Control-WはすでにUNIX端末のデフォルトの単語消去キーです。ええ、それはWindows / GUIの規則と矛盾しますが、実際には最初に来ました。マイクロソフトのせいだ!
アレクシス

11

私はグーグルでこのスレッドを見つけましたが、答えは聞きたいものではありませんでした。だから私は遊んだ:

私の端末では、通常のバックスペースがを送信し^H、ctrl + backspaceが送信します^?。したがって^?、単語を削除するために再バインドするのは簡単なはずです。これは、デフォルトでCtrl + Wを介して使用可能です。

最初(試行失敗):

$ bind -P | grep 'C-w'
unix-word-rubout can be found on "\C-w".

したがって、これは動作するはずです:

$ bind '"\C-?":unix-word-rubout'

しかし、それは...誰も説明できませんか?

2回目(成功)の試行:

$ bind '"\C-?":"^W"'

どこ^Wリテラル/生である^W(プレスCTRL + Vし、Ctrl + Wは、それが表示されるようにします)。


あなたの最初の解決策は実際に私のために働いた!2番目はしませんでした。
ドリューホスキンズ

2回目の試行はCtrl-Backspaceではなくbackspace自体を置き換えるようですか?
user541686

7

以下を含むように編集するだけです~/.inputrc(作成するか、/etc/inputrcそこにコピーする必要があるかもしれません)。

# Ctrl-Delete: delete next word
"\e[3;5~": shell-kill-word

# Ctrl-Backspace
"\C-H": shell-backward-kill-word

これは、カーソルの隣の単語を削除するためにCtrl+ もマップDeleteします。


私にはうまくいきません。
ジョナサン

6

ここにはいくつかの良い答えがありますが、Konsoleで[設定]-> [現在のプロファイルの編集]-> [キーボード]-> [編集]で解決し、からBackspace+Controlにマッピングを追加し\x17ます。(を使用してCtrl-wのASCIIコードを見つけましたshowkey --ascii。)


で指摘してくれてありがとうshowkey。したがってALT+D、カーソルの前にある単語を削除するとに対応することがわかりました\x1b\x64
ロキ

ありがとう、私の問題は解決した。私の場合、Alt + Backspaceを再マッピングする必要があり、そのシーケンスは \x1b\x7fです。
DDMC

3

それはbashが何を見るかに依存します。通常のターミナルインタラクションでは、bashはどのキー修飾子が押されたかを表示せず、結果の文字のみを表示します。たとえば、Backspaceはすでにcontrol-Hと同じです。シフトまたはコントロールを押し続けても違いはありません。

ただし、ターミナルアプリケーション(xterm?cmd?Terminal?Putty?OSに依存します)はキー押下を認識でき、コントロールとバックスペースのキーの組み合わせをバックスペースとは別にbashが認識できるものにマッピングする方法があります。


bashにバックスペースが表示されないことがわかりました。しかし、それを見ることができるかもしれません。
アドビ

@adobe、どういう意味ですか?端末で「stty」と入力し、それに関するマニュアルを読みます。^ Hが消去文字に設定されている場合、他の何かに設定できます...正当な理由がある場合。

1
github.com/calj/gtconf/blob/master/zsh/zshrcにこれを行う方法の良い例があります。Konsoleを使用すると、それを実行できます。* .keytabファイルの1つを/ usr / share / kde4 / apps / konsole /から〜/ .kde / share / apps / konsoleにコピーし、上記のリンクの提案で変更して、「キーバックスペース」行を削除します。追加:key Backspace-Shift-Control : "\x7f"およびkey Backspace-Shift+Control : "\E[9;3~"また、タイトル行を変更します(keyboard "Xfree4 Modlist"例:)。その後"\e[9;3~": backward-kill-word"、〜/ .inputrcに追加できます
Adam

2

これを試して:

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

オプションで、以下を〜/ .inputrcに追加して永続化します。

"\C-_": backward-kill-word

Kubuntu 14.04のbash 4.3.11で動作します


2
Control-backspaceがControl-underscoreと同じになることはほとんどありません。
トーマスディッキー

1
このスレッドで試したすべてのことのうち、これはうまくいきました!使用"GNU bashの、バージョン4.3.48(1)-release(x86_64版-pc-linux-gnuのよう)"ウィンドウ/ WSL上のbash上
マルクスJevring

これは、Cygwinでを使用してうまく機能しGNU bash, version 4.4.12(3)-release (x86_64-unknown-cygwin)ます。
zagyi

1

Konsoleの場合:

  • クリック Settings -> Edit current profile
  • 「キーボード」タブをクリックします-> [Edit...]
  • [Add]ボタンをクリックし、Key Combination列タイプの下にあるBackspace+Ctrl。中Output列タイプ0x08(従来、バックスペース文字です)

これで、キーをbackward-kill-word経由してそのキーをマッピングできるはずです。

# ~/.bashrc

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

ありがとう。少なくともxfce4-terminalで動作します。
リモン

0

ほとんどの端末では、CTRL + Wはすでに単語を逆方向に削除するはずです。これはxtermで動作し、konsoleでも動作すると思います。CTRL + Wは、挿入モード、emacs、およびすべてのシェルでvimで動作するテキストベースのプログラムの標準キーバインディングです。


5
Ctrl-wをEmacs、FireFox、Krusaderの「タブを閉じる」にバインドしているので、Konsoleでもタブを閉じる組み合わせに設定します。
アドビ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.