Vim nie działa w tmuxie


14

Gdy próbuję otworzyć plik, używając vimwewnątrz tmuxcałego okna zamarza. Muszę zabić okno C-a &.

Oto moje ~/.vimrcustawienia:

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

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

W RHEL mam do czynienia z problemem. Jednak ta sama konfiguracja działa dobrze na moim komputerze Mac. Myślę, że wszystko działało dobrze, dopóki moje okno RHEL nie zostało zrestartowane i próbowałem odzyskać plik z pliku wymiany vi.

Wszelkie pomysły, jak to naprawić?

[edytuj]: Próbowałem znaleźć sshinne pudełko wewnątrz tmuxi vitam działać . Działa dobrze w zdalnym pudełku!


[dodane później] Zgodnie z sugestią @jasonwryan, dodałem wiersz set -g default-terminal screen-256colorna końcu tmux.conf. To uniemożliwiło działanie programów takich jak less.

echo $TERM wewnątrz tmux jest „screen”, a na zewnątrz tmux jest „xterm”.

Poszukiwanie $ TERM doprowadziło mnie do https://wiki.archlinux.org/index.php/Tmux , skąd dodałem linię set -g default-terminal "screen-256color"jako pierwszą linię tmux.conf. To sprawiło, że $TERMwewnętrzna tmux do „screen-256color”. Ale teraz, kiedy uruchamiam viw tmux, wyświetla następujący błąd:

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'

Wygląda na to, że rozwiązałem problem. Właśnie dodałem set -g default-terminal xtermjako pierwszą linię mojego ~ / .tmux.conf i zadziałało!


1
To może nie być powiązane, ale powinieneś ustawić prawidłowy TERM w tmux zset -g default-terminal screen-256color
jasonwryan

3
Czy możesz zaktualizować swoje pytanie za pomocą $ TERM w tmuxie i poza nim?
jasonwryan

1
Poza tmux wykonaj polecenie „echo $ TERM”. Wewnątrz sesji tmux wykonaj polecenie „echo $ TERM”.
George M,

1
Powinieneś tylko ustawić Tmux TERM na pochodną ekranu: zobacz FAQ : spowoduje to problemy w przeciwnym razie ...
jasonwryan

1
Powinieneś napisać własną odpowiedź i opublikować ją z tym, a następnie ją zaakceptować (jest to całkowicie do przyjęcia).
EightBitTony

Odpowiedzi:


11

Rozwiązałem problem, dodając wiersz

set -g default-terminal xterm

jako pierwsza linia mojego ~ / .tmux.conf i działało dobrze.

Jednak, jak zauważył @jasonwryan, TMUX FAQ wyraźnie stwierdza, że:

Większość problemów z wyświetlaniem wynika z nieprawidłowego TERM! Przed zgłoszeniem problemów upewnij się, że ustawienia TERM są prawidłowe w tmuxie i poza nim.

Wewnątrz tmux TERM musi być „screen” lub podobny (np. „Screen-256color”). Na zewnątrz musi pasować do twojego terminala ...

Publikuję tylko tę odpowiedź, ponieważ faktycznie rozwiązała mój problem. dodaj swoje alternatywne rozwiązania.


2

Właśnie natrafiłem na ten sam problem na starym komputerze CentOS, nad którym musiałem pracować. Dla mnie ustawienie TERM w tmux na xterm spowodowało pojawienie się innych dziwnych problemów. Byłem jednak w stanie to naprawić, komentując set mouse=aw moim .vimrc cf https://lists.gnu.org/archive/html/screen-users/2005-04/msg00039.html

Najwyraźniej dodanie set ttymouse=xterm2do twojego .vimrc również może załatwić sprawę.

Dla każdego, kto ma podobne problemy, zalecamy tymczasowe przeniesienie .vimrc, aby sprawdzić, czy coś w tym jest przyczyną.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.