tmuxでByobuを使用するときにVimでCtrl +矢印キーを使用すると問題が発生する


12

Vimでは、Ctrl +矢印キーで単語をスキップするように設定していました。これは、gnome-terminal内でVimを実行する場合にうまく機能します。

ただし、byobu(tmux)を使用すると、奇妙な動作を示します。カーソル以降のすべてが削除されます。

参考までに、これらは私のvim設定です:

:inoremap <C-Left> <C-\><C-O>b
:inoremap <C-Right> <C-\><C-O>w

回答:


7

問題は2つあります。まず、tmuxデフォルトでは、コントロール矢印キーをあるタイプのエスケープシーケンスから別のタイプに変換します。したがって、などの特別なキーcontrolleftvim、修飾子なしでに送信されleftます。を使用cat -vしてさまざまなエスケープシーケンスを表示すると、次のようになります。

^[OD

これとの比較(tmux外):

^[[1;5D

この線

set-window-option -g xterm-keys on

その側面を修正します。もう1つの部分は、tmuxデフォルトでの端末記述を使用することですscreen。その端末の説明はしない記述コントロール矢印キーを。端末データベースからのこれらのエントリは、VTE(gnome-terminal)に最も適しています。

他にもあります

ここで実行するときに自動的に選択されるscreen対応する場合にTERM外であったvtevte-256colorなど tmux、この自動選択を実行しません。その構成ファイルを変更する必要があります。

ちなみに、「screen.xterm」のエントリはありませんscreen。との競合はありませんTERM=xterm-new

ncurses-baseDebian などのデフォルトの(最小の)端末データベースがある場合は、それらがない可能性があります。より一般的なのはxterm-256color、vimとtmuxで使用するのに十分近いです。

たとえば、これを.tmux.confファイルに追加すると、vimで期待どおりに動作します。

set -g default-terminal "xterm-256color"

参考文献:


うーん...これは機能します:)しかし、部分的にのみ。Control+ のみLeftが機能しています。Control+ Rightはそうではありません。後でテストして更新します。
シバム2016年

1
control + rightを妨害する他のバインディングがある可能性があります(詳細を指定すると、アドバイスを提供できます)。
トーマスディッキー2016年

申し出をありがとう:)私は少し調べたところ、確かに他のいくつかのキーバインディングが干渉を引き起こしていることがわかりました。たとえば、私のMacではこれは問題なく動作しますが、Linux(Guakeを使用)では動作しません。しかし、私はすぐに不在で、私のLinuxにアクセスできません。問題が解決したら更新します。
シバム2016

@Thomam Dickey:その間、実際に問題を解決するので、私はあなたの答えを受け入れます。
シバム2016

@ThomasDickey言いたいのは、 "Go raibhmílemaith agat"で、アイルランド語では、文字通り "May you have 1000 good good。"と訳されています。この回答をありがとうございました。あなたはスターです。
ロブ

2

ここから、byobuでキーの組み合わせをバインド解除できます。

ファイル~/.byobu/.tmux.confを作成します(または、ファイルが存在する場合は追加します)。

set-window-option -g xterm-keys on

次に以下を追加します~/.byobu/keybindings.tmux

unbind-key -n C-Left
unbind-key -n C-Right

これは機能しません。しかし、それは私に確かなリードを与えました。私はその先導に従い、いくつかの解決策を考え出します。おかげで:)
シヴァム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.