O Vim não está sendo executado dentro do tmux

14

Quando tento abrir um arquivo usando vimdentro de tmuxtoda a janela congela. Eu tenho que matar a janela com C-a &.

Aqui estão as minhas ~/.vimrcconfigurações:

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

e ~/.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

Estou enfrentando o problema no RHEL. No entanto, a mesma configuração funciona bem no meu Mac. Eu acho que as coisas estavam funcionando bem até que minha caixa RHEL foi reiniciada e tentei recuperar um arquivo do vi swap file.

Alguma ideia de como consertar isso?

[edit]: Eu tentei sshoutra caixa dentro tmuxe correndo vilá. Funciona bem em caixa remota!


[adicionado mais tarde] Seguindo a sugestão de @jasonwryan, adicionei a linha set -g default-terminal screen-256colorno final de tmux.conf. Isso impedia que programas como o lesstrabalho.

echo $TERM o tmux interno é "screen" e o tmux externo é "xterm".

A pesquisa de $ TERM me levou a https://wiki.archlinux.org/index.php/Tmux , de onde adicionei a linha set -g default-terminal "screen-256color"como primeira linha de tmux.conf. Isso fez com que o $TERMtmux interno fosse "screen-256color". Mas agora, quando inicio videntro do tmux, ele exibe o seguinte erro:

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'

Parece que resolvi o problema. Acabei de adicionar set -g default-terminal xtermcomo a primeira linha do meu ~ / .tmux.conf e funcionou!

BiGYaN
fonte
1
Pode não ser relacionado, mas você deve definir o termo correto em tmux comset -g default-terminal screen-256color
jasonwryan
3
Você pode atualizar sua pergunta com seu $ TERM dentro e fora do tmux?
Jasonwryan
1
Fora do tmux, execute 'echo $ TERM'. Dentro de uma sessão tmux, execute 'echo $ TERM'.
George M
1
Você só deve definir o seu termo de tmux a um derivado de tela: veja o FAQ : ele fará com que você emite na pista de outra forma ...
jasonwryan
1
Você deve escrever sua própria resposta e publicá-la, com ela, e depois aceitá-la (é perfeitamente aceitável fazê-lo).
EightBitTony

Respostas:

11

Resolvi o problema adicionando a linha

set -g default-terminal xterm

como a primeira linha do meu ~ / .tmux.conf e funcionou bem.

No entanto, como @jasonwryan indicou, as Perguntas frequentes do TMUX afirma claramente que:

A maioria dos problemas de exibição ocorre devido a TERM incorreto! Antes de relatar problemas, verifique se as configurações do TERM estão corretas dentro e fora do tmux.

O tmux TERM interno deve ser "screen" ou semelhante (como "screen-256color"). Lá fora, ele deve corresponder ao seu terminal ...

Eu só postei essa resposta, pois ela realmente resolveu meu problema. sinta-se à vontade para adicionar suas soluções alternativas.

BiGYaN
fonte
2

Acabei de encontrar o mesmo problema em uma caixa antiga do CentOS em que precisava trabalhar. Para mim, definir TERM no tmux como xterm causou outros problemas estranhos. No entanto, pude corrigi-lo comentando set mouse=ano meu .vimrc cf https://lists.gnu.org/archive/html/screen-users/2005-04/msg00039.html

Aparentemente, adicionar set ttymouse=xterm2ao seu .vimrc também pode fazer o truque.

Para qualquer outra pessoa que esteja enfrentando problemas semelhantes, recomendo mover temporariamente o seu .vimrc para verificar se há alguma causa.

Ben
fonte