2011-06-21 29 views
36

Tôi đang sử dụng vim ở chế độ 256 màu trên Solaris (được kết nối qua Putty trên Windows). Mọi thứ trông tuyệt vời và hoạt động tốt bên ngoài tmux, nhưng trong tmux màu nền thay đổi định kỳ khi phân trang/cuộn qua một tệp.vim thay đổi màu nền tmux khi phân trang

Sau đây là cách nó là nghĩa vụ phải xem xét:

Sau đây là cách nó xuất hiện sau khi phân trang xung quanh một chút:

Cảm ơn!

Trả lời

47

As explained here, vô hiệu hóa Background Color Erase (TCN) bằng cách xóa các t_ut lựa chọn thiết bị đầu cuối (chạy :set t_ut= trong Vim và sau đó nhấn kiểm soát + L để làm mới màn hình của thiết bị đầu cuối) để phối hợp màu sắc công việc đúng khi Vim được sử dụng bên trong màn hình tmux và GNU.

mỗi liên kết ở trên, TCN có thể được thiết lập trong vimrc bằng cách thêm vào sau

if &term =~ '256color' 
    " disable Background Color Erase (BCE) so that color schemes 
    " render properly when inside 256-color tmux and GNU screen. 
    " see also http://snk.tuxfamily.org/log/vim-256color-bce.html 
    set t_ut= 
endif 
8

Điều này có vẻ như vấn đề với cài đặt cụm từ của bạn hoặc terminfo.

Đảm bảo rằng cụm từ của bạn trong tmux là TERM=screen-256color và hộp solaris của bạn có đúng terminfo.

+0

Đó dường như làm nó, nhưng khi tôi chuyển sang màn hình-256color phím F của tôi ngừng hoạt động. – moshen

+0

Phím F như trong tiêu chuẩn {F, f} hoặc như trong các phím chức năng? – jasonwryan

+1

Phím chức năng ... Tôi đã tìm ra nó, đó là một thứ PuTTy (http://www.howtogeek.com/58487/how-to-easily-multitask-in-a-linux-terminal-with-byobu/ ? amp), Cảm ơn! – moshen

17

Thêm giải pháp thay thế, khi tôi tự mình gặp sự cố này và chỉ giải quyết được vấn đề đó. Tôi đã có giá trị TERM chính xác, tệp terminfo đã ở đó, v.v. nhưng nền vẫn chỉ được vẽ phía sau các ô có chứa các ký tự có thể in hoặc các ô ở bên trái của chúng.

Nếu bạn chuyển đổi giữa giao diện vim và CLI vim thường xuyên, bạn có thể đặt một cái gì đó như thế này trong tập tin .vimrc của bạn tại một số điểm:

if !has("gui_running") 
    set term=xterm 
endif 

(Hoặc thực sự bất kỳ trọng ở tất cả các biến HẠN trong vòng .vimrc)

Thay đổi ghi đè thiết bị đầu cuối thành màn hình-256color.

... 
set term=screen-256color 
... 
+1

Điều này cũng phù hợp với tôi. Ngoại trừ việc nó dường như phá vỡ rất nhiều ánh xạ bàn phím (ví dụ: các mũi tên trong CommandT, ctrl + mũi tên ánh xạ):/ –

+2

'set term = screen-256color' trong' .vimrc' đã giúp tôi. Cảm ơn! – Zelid

Các vấn đề liên quan