Gnome-terminal + VimおよびCtrl-Shiftマッピング


11

Gnome Terminal でCtrl-を使用Shiftしてシーケンスをマッピングすることは可能ですか?

マッピングを追加しようとしています

  • map <C-S-[> gT
  • map <C-S-]> gt

そしてそれは機能していません。どうやってするか?

どういうわけか私がマッピングされた<C-S-]>が、それはそれはない判明<C-S-]>、しかし<C-]>、それは、この配列のシフトを認識しないように見えるので、。それは正しく設定されていないか、それはgnome-terminalのせいですか?

その上。マッピングは<C-[>、押された後、vimのように見えますが待っています。私はそれがタイムアウトをマッピングしていると思いますが、正確<C-[>に押して他の何かを押したくないときにこのタイムアウトを取り除く方法は?

vimの学習を始めたばかりなので、そのマッピングに明らかに何か問題がある場合は申し訳ありません。

回答:


8

ここでの問題は、端末で実行することを想定しているvimがCTRL-SHIFTシーケンスを認識しようとしていることだと思います。Xがそのような組み合わせを認識することは可能ですが、端末(または最近では端末エミュレータ)で実行されるアプリケーションはできません。これは、歴史的に、端末はシリアル接続を介してASCIIデータの7ビットまたは8ビットシーケンスしか送受信できないためです(ただし、これには、カーソルの配置、行のスクロールまたは削除、色の変更、その他の役立つ「エスケープシーケンス」が含まれる可能性があります)効果)。

ASCII文字セットには、おなじみのCTRL-AからCTRL-Zまでの32の「制御コード」があります。しかし、「CTRL-SHIFT」AからZに対応するASCIIコードはありません。これで、gnome-terminal自体がこれらのコードを認識できます(たとえば、CTRL-SHIFT-Vはクリップボードからテキストを貼り付けます)が、vimは直接アクセスできます。

もちろん、ターミナルエミュレーターがCTRL-SHIFTキーの押下をエスケープシーケンスに変換するように設定されていて(それは私にはわかりません)、vimマッピングで認識できる場合があります。

=======

更新

端末プログラムではなくXプログラムとして実行されるvimのグラフィカルバージョンであるgvimに興味があるかもしれません。多分gvimはCTRL-SHIFTコードを理解できるでしょうか?


4

Ctrlキーとの特定の組み合わせを許可しないGNOMEターミナルの問題のようです。オンラインで検索すると、このようなケースが多く見られます。

念のため、Ctrl+ page up/ page downタブを切り替えます。


3

Bartlebyが指摘したように、viはキーコードが同じであると見なしているため、これは端末制限です。

xtermあなたのような端末のためにそれを変えることができます。以下のためにgnome-terminal そのXリソースの設定は無視され、私は次のことを行う方法を知りませんが。

このSOの質問は同じトピックをカバーしており、この例では、これを.Xresourcesファイル内の複数のキーのマッピングに使用する方法を示しています。例えば:

XTerm*vt100.translations: #override \
  Ctrl ~Meta Shift <Key>a: string(0x1b) string("[65;5u") \n\
  Ctrl ~Meta Shift <Key>b: string(0x1b) string("[66;5u") \n\ 
  Ctrl ~Meta Shift <Key>f: string(0x1b) string("[70;5u")  

これで、Ctrlavs. CtrlShiftaCtrlbvs. CtrlShiftbCtrlfvs CtrlShiftf。のviにさまざまなキーシーケンスが追加されました。

これで、それらを異なる方法でマッピングできます~/.vimrc

map <ESC>[66;5u   :echo "ctrl-shift-b received"<CR>
map <ESC>[70;5u   :echo "ctrl-shift-f received"<CR>
map <C-b>         :echo "ctrl-b received"<CR>
map <C-f>         :echo "ctrl-f received"<CR>

元の質問はに関するものでしたがgnome-terminal、あなたの回答はについて言及していxtermます。
egmont

@egmont:良い点、そして私の側の見落とし。この回答によると、.Xresourcesは無視されgnome-terminalます。それは残念です。回答を更新しました。
cfi 2015

この回答をSuperUserへのQ&Aペアとして少し書き直した/クロスポストしました。これは、askerの端末には適用されないため、おそらくここで削除する必要があるためです。
cfi 2015

1

gnome-terminalのキーボードショートカットをすべて無効にする必要があるようです。


2
キーボードショートカットを無効にすることが役立つのはなぜですか?
Eliah Kagan 2013

私の経験から、それはまったく役に立たないようです。
エリオットフォスター

1

ではgnome-terminal、キーによって生成されたエスケープシーケンス設定できません。多くのキーCtrl+ keyShift+ Ctrl+でkey異なるシーケンスを生成します。残念なことにのため[]、彼らは、あなたがそれらを区別することはできませんしないでください。

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