8

これらのキー マッピングは、tmux では機能しなくなります。私.vimrcの には、次のものがあります。

nmap <Space> i
map <C-Down> <C-w>j
map <C-Up> <C-w>k
map <C-Left> <C-w>h
map <C-Right> <C-w>l

を実行する:mapと、次のように表示されます。

   <C-Right>     <C-W>l
   <C-Left>      <C-W>h
   <C-Up>        <C-W>k
   <C-Down>      <C-W>j

しかし、コントロール キーと矢印キーを同時に押すと、キーバインドが設定されていないかのように動作します。

4

1 に答える 1

15

Vim はxtermのような端末 ( で始まる TERM 、または定義されている場合はそのシーケンスxtermへの特定の応答で識別される) が、特定の変更されたキーの拡張シーケンスをサポートしていることを認識していますが、TERM (以下で使用する必要がある)についてはこれを想定していません。 tmux )。t_RVscreen

ただし、これらのシーケンスについて Vim に伝え、TMUX が存在する場合はそれらを有効にすることができ、TERM は(最初の行でtmuxscreenの下で (より良い) マウスサポートを有効にします。これも好きかもしれません):

if &term =~ '^screen' && exists('$TMUX')
    set mouse+=a
    " tmux knows the extended mouse mode
    set ttymouse=xterm2
    " tmux will send xterm-style keys when xterm-keys is on
    execute "set <xUp>=\e[1;*A"
    execute "set <xDown>=\e[1;*B"
    execute "set <xRight>=\e[1;*C"
    execute "set <xLeft>=\e[1;*D"
    execute "set <xHome>=\e[1;*H"
    execute "set <xEnd>=\e[1;*F"
    execute "set <Insert>=\e[2;*~"
    execute "set <Delete>=\e[3;*~"
    execute "set <PageUp>=\e[5;*~"
    execute "set <PageDown>=\e[6;*~"
    execute "set <xF1>=\e[1;*P"
    execute "set <xF2>=\e[1;*Q"
    execute "set <xF3>=\e[1;*R"
    execute "set <xF4>=\e[1;*S"
    execute "set <F5>=\e[15;*~"
    execute "set <F6>=\e[17;*~"
    execute "set <F7>=\e[18;*~"
    execute "set <F8>=\e[19;*~"
    execute "set <F9>=\e[20;*~"
    execute "set <F10>=\e[21;*~"
    execute "set <F11>=\e[23;*~"
    execute "set <F12>=\e[24;*~"
endif

xterm-keysコメントが示すように、ウィンドウのオプションを有効にする必要もあります。次のようにすべてのウィンドウに対してこれを行うことができます( 内~/.tmux.conf):

set-option -gw xterm-keys on

(への変更~/.tmux.confは自動的にロードされないことに注意してください。有効にするには、このコマンドを手動で (tmuxシェル コマンドまたは Prefix:プロンプトで) 実行するか、source ~/.tmux.conf(tmuxシェル コマンドで、またはプレフィックス:プロンプトで)、またはサーバーを再起動します(すべてのセッションを終了してtmuxを再起動します))。

于 2013-03-18T07:38:24.400 に答える