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


10

ctrl+はW一度に1ワードずつ逆方向に削除するようです。それは素晴らしいですが、他のほとんどのアプリと同じようにctrl+で動作することを本当にbackspace望んでいます。

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


1
vimではD、Bを押すと同じことができます。ただし、エスケープアウトする必要があるため、挿入モードで動作しているときに機能しないため、ターミナルでこの機能を使用することもできません。CTRL + Wのすばらしいヒント
mchid 2015年

回答:


7

これはターミナルとデフォルトのemacsモード(Ctrl+ Wで前の単語が削除された場合に使用)で機能することに注意してください。bashのviモードでは機能せず、vi / vim自体には影響しません。したがって、これは部分的な答えにすぎませんが、このemacsユーザーが提供できる最高のものです。


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

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

ここで、新しいターミナルを開いてください。

説明

これ\C-Hは実際にはControl+ BackSpaceです。Ctrl+ Vを押すと、キーコードが表示されます。あなたはそれが表示されますBackSpace戻ります^H

今、それがなければならないバインドすることが可能にControl+ BackSpace前の単語(削除bashの機能にbackward-kill-wordまたはをunix-word-rubout使用して)"\C-H": backward-kill-word。しかし、私はそれを機能させることができません。それはさまざまなキーで完全にうまく機能します("\C-E": backward-kill-wordたとえば、前の単語をCtrl+ E削除します)が、何らかの理由でそれをで動作させることができませんBackSpace

したがって、回避策として、すでに+ にマッピングされているCtrl+ BackspaceCtrl+ Wにマッピングしbackward-kill-wordます。したがって、Ctrl+ を押すと、+ Backspaceに変換され、Ctrl+ Wが送信されますbackward-kill-word。この回避策のアイデアは、このSUの投稿から得ました。


4

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

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

Wilyを使用している場合は、Gnome3ステージングで更新されたパッケージを見つけることができます。


この巨大なPPAを追加せずに、これを信頼して実行できますか?
CiprianTomoiagă2017年

trustyに一致するlibvte 2.90パッケージのダウンロード、パッチの適用、コンパイル、およびインストールなしではありません。パッチは、bugzilla.gnome.org / show_bug.cgi?id = 733246にあります。
egmont 2017


1

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

(linuxbrewからbashも取得します)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.