web-dev-qa-db-ja.com

Vimがtmux内で実行されていません

vim内でtmuxを使用してファイルを開こうとすると、ウィンドウ全体がフリーズします。 C-a &でウィンドウを強制終了する必要があります。

これが私の~/.vimrc設定です:

:set autoindent
:set ts=4
:set number
:set shiftwidth=4
:set showmode
:filetype on
:filetype plugin on
:syntax enable
:set mouse=a

および~/.tmux.conf

# I like Ctrl-a as the default hotkey
unbind C-b
set-option -g prefix C-a

# Split window using | and -
unbind %
bind | split-window -h
bind - split-window -v

# Set status bar
set -g status-bg black
set -g status-fg white
set -g status-left ‘#[fg=green]#H’

# Highlight active window
set-window-option -g window-status-current-bg red

# Makes window numbering start from 1, instead of 0
set -g base-index 1

RHELで問題に直面しています。ただし、私のMacでは同じ構成が正常に機能します。私の推測では、RHELボックスが再起動され、viスワップファイルからファイルを復元しようとするまで、問題はありませんでした。

これを修正する方法に関するアイデアはありますか?

[編集]:ssh内の他のボックスでtmuxを試し、そこでviを実行しました。リモートボックスで問題なく動作します。


[後で追加] @jasonwryanの提案に従って、set -g default-terminal screen-256colorの最後にtmux.confという行を追加しました。これにより、lessのようなプログラムが機能しなくなりました。

echo $TERMは、tmuxの内部が「画面」で、tmuxの外部が「xterm」です。

$ TERMを検索すると、 https://wiki.archlinux.org/index.php/Tmux が表示され、そこからset -g default-terminal "screen-256color"tmux.confの最初の行として追加しました。これにより、tmux内の$TERMが「screen-256color」になりました。しかし、tmux内でviを開始すると、次のエラーが表示されます。

E558: Terminal entry not found in terminfo
'screen-256color' not known. Available builtin terminals are:
    builtin_riscos
    builtin_amiga
    builtin_beos-ansi
    builtin_ansi
    builtin_pcansi
    builtin_win32
    builtin_vt320
    builtin_vt52
    builtin_xterm
    builtin_iris-ansi
    builtin_debug
    builtin_dumb
defaulting to 'ansi'

問題を解決したようです。 〜/ .tmux.confの最初の行としてset -g default-terminal xtermを追加しただけで動作しました!

14
BiGYaN

行を追加して問題を解決しました

set -g default-terminal xterm

〜/ .tmux.confの最初の行として、それはうまくいきました。

ただし、@ jasonwryanが指摘したように、 TMUX FAQ は次のように明確に述べています。

ほとんどの表示の問題は、不適切なTERMが原因です!問題を報告する前に、TERM設定がtmuxの内部と外部で正しいことを確認してください。

Tmux内では、TERMは「画面」または同様のもの(「screen-256color」など)でなければなりません。外では、それはあなたの端末と一致する必要があります...

実際に私の問題を解決したので、私はこの回答を投稿するだけです。代わりのソリューションを追加してください。

11
BiGYaN

私が取り組んでいた古いCentOSボックスで同じ問題に遭遇しました。私にとってtmuxのTERMをxtermに設定すると、他の奇妙な問題が発生しました。しかし、コメントアウトすることで修正できましたset mouse=a私の.vimrc c.f. https://lists.gnu.org/archive/html/screen-users/2005-04/msg00039.html

どうやらset ttymouse=xterm2を.vimrcに追加することもできます。

同様の問題が発生している他の人のために、一時的に.vimrcを移動して、そこに原因があるかどうかを確認することをお勧めします。

2
Ben