web-dev-qa-db-ja.com

<ctrl> + <backspace>を取得して、gnome-terminalおよびvim挿入モードで単語を削除する

<ctrl> + Wは一度に1ワードずつ削除するようです。それは素晴らしいことですが、他のほとんどのアプリと同じように、<ctrl> + <backspace>を使って本当に本当に仕事をしたいと思います。

これを行う最良の方法は何ですか? gnome-terminalコマンド、コマンドラインvim、GUI vimに影響を与えるには、変更が必要です。

9
Costa

これは端末とデフォルトのemacsモードで動作します(if Ctrl+W 以前のWordを削除します)。 bashのviモードでは機能せず、vi/vim自体には影響しません。したがって、これは部分的な答えにすぎませんが、このemacsユーザーが提供できる最善の方法です。


この種のことは、~/.inputrcを介して動作を制御できるreadlineライブラリーによって管理されます。 ~/.inputrcを編集(または存在しない場合は作成)し、次の行を追加します。

"\C-H":"\C-W"

ここで、新しいターミナルを開き、それが機能するはずです。

説明

\C-Hは実際には Control+BackSpace。キーを押すとキーコードが表示されます Ctrl+V 次に、あなたが求めている鍵。あなたはそれを見るでしょう BackSpace ^Hを返します。

さて、それはshouldバインド可能です Control+BackSpace backward-kill-Wordを使用して、以前のWord(unix-Word-ruboutまたは"\C-H": backward-kill-Word)を削除するbash関数へ。ただし、それを機能させることはできません。さまざまなキー("\C-E": backward-kill-Word、たとえば、 Ctrl+E 以前のWordを削除します)が、何らかの理由で、私はそれを動作させることができません BackSpace

回避策として、マッピングするだけです Ctrl+Backspace に Ctrl+W 既にbackward-kill-Wordにマッピングされています。だから、押すと Ctrl+Backspace、に翻訳されます Ctrl+W 次に、backward-kill-Wordを送信します。 このSU投稿 からこの回避策のアイデアを得ました。

7
terdon

ごく最近まで、gnome-terminalは同じコードを Backspace そして Ctrl+Backspace、したがって、アプリケーションでこの2つを区別することはできません。

これはvte-0.42で修正され、この秋にリリースされたGnome 3.18の一部です。

Wilyを使用している場合、更新パッケージは Gnome3 Staging にあります。

3
egmont

それは私のマシンで動作します。 masterのtmuxとlinuxbrewのnvimを使用し、control + backspaceがbashとvimでも機能することを確認してください!

(linuxbrewからbashも取得)

1
Fábio Santos