Cách nhận VIM để hiển thị 256 màu đúng cách


17

Tôi đang cố gắng để có 256 tệp chủ đề màu hoạt động với VIM trong xterm.

Đây là đỉnh cao như thế nào đối với tôi:

nhập mô tả hình ảnh ở đây

Nó trông như thế nào: nó trông như thế nào

Tôi đã thử làm theo các mẹo trên trang wiki nhưng không có kết quả.

set t_Co=256 hoạt động tốt nhưng

set t_AB=^[[48;5;%dm
set t_AF=^[[38;5;%dm

dẫn đến các chuỗi thoát được hiển thị trên thiết bị đầu cuối:

EDIT: Mikel đã đúng, tôi cần nhập Ctrl + v + Esc để nhập ^ [đúng cách. Tuy nhiên, điều đó đã không khắc phục vấn đề của tôi.

nhập mô tả hình ảnh ở đây

Vì vậy, những thay đổi khác tôi có thể cố gắng để làm cho công việc này?

thông tin bổ sung

$ uname -a
Linux xxxxxxx 3.4.7-1-ARCH #1 SMP PREEMPT Sun Jul 29 22:02:56 CEST 2012 x86_64 GNU/Linux

-

$ xterm -version 
XTerm(281)

-

$ vim --version
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Jul 13 2012 05:24:27)
Included patches: 1-600
Compiled by ArchLinux
Big version with GTK2 GUI.  Features included (+) or not (-):
+arabic +autocmd +balloon_eval +browse ++builtin_terms +byte_offset +cindent 
+clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments 
+conceal +cryptv +cscope +cursorbind +cursorshape +dialog_con_gui +diff 
+digraphs +dnd -ebcdic +emacs_tags +eval +ex_extra +extra_search +farsi 
+file_in_path +find_in_path +float +folding -footer +fork() +gettext 
-hangul_input +iconv +insert_expand +jumplist +keymap +langmap +libcall 
+linebreak +lispindent +listcmds +localmap +lua +menu +mksession +modify_fname 
+mouse +mouseshape +mouse_dec +mouse_gpm -mouse_jsbterm +mouse_netterm 
-mouse_sysmouse +mouse_xterm +mouse_urxvt +multi_byte +multi_lang -mzscheme 
+netbeans_intg +path_extra +perl +persistent_undo +postscript +printer -profile
 +python -python3 +quickfix +reltime +rightleft +ruby +scrollbind +signs 
+smartindent -sniff +startuptime +statusline -sun_workshop +syntax +tag_binary 
+tag_old_static -tag_any_white -tcl +terminfo +termresponse +textobjects +title
 +toolbar +user_commands +vertsplit +virtualedit +visual +visualextra +viminfo 
+vreplace +wildignore +wildmenu +windows +writebackup +X11 -xfontset +xim 
+xsmp_interact +xterm_clipboard -xterm_save 
   system vimrc file: "/etc/vimrc"
     user vimrc file: "$HOME/.vimrc"
      user exrc file: "$HOME/.exrc"
  system gvimrc file: "/etc/gvimrc"
    user gvimrc file: "$HOME/.gvimrc"
    system menu file: "$VIMRUNTIME/menu.vim"
  fall-back for $VIM: "/usr/share/vim"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng15   -I/usr/local/include  -march=x86-64 -mtune=generic -pipe -fstack-protector --param=ssp-buffer-size=4  -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1      
Linking: gcc   -L. -Wl,-O1,--sort-common,--as-needed,-z,relro,--hash-style=gnu -rdynamic -Wl,-export-dynamic  -Wl,-E -Wl,-rpath,/usr/lib/perl5/core_perl/CORE  -Wl,-O1,--sort-common,--as-needed,-z,relro -L/usr/local/lib -Wl,--as-needed -o vim   -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lglib-2.0   -lSM -lICE -lXt -lX11 -lXdmcp -lSM -lICE -lm -lncurses -lnsl   -lacl -lattr -lgpm -ldl  -L/usr/lib -llua  -Wl,-E -Wl,-rpath,/usr/lib/perl5/core_perl/CORE -Wl,-O1,--sort-common,--as-needed,-z,relro,--hash-style=gnu -fstack-protector -L/usr/local/lib  -L/usr/lib/perl5/core_perl/CORE -lperl -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc -L/usr/lib/python2.7/config -lpython2.7 -lpthread -ldl -lutil -lm -Xlinker -export-dynamic   -lruby -lpthread -lrt -ldl -lcrypt -lm  -L/usr/lib   

-

$ ls -l /usr/share/terminfo/x/xterm-256color 
-rw-r--r-- 1 root root 3336 Feb  8  2012 /usr/share/terminfo/x/xterm-256color

.vimrc

set t_Co=256

.Xác định

!--------------------- XTERM ------------------------
xterm*dynamicColors:    true
xterm*background:       black
xterm*foreground:        #BBBBBB
xterm*utf8:             2
xterm*eightBitInput:    true
xterm*saveLines:        32767
xterm*scrollTtyKeypress:       true
xterm*scrollTtyOutput:  false
xterm*scrollBar:        false
xterm*loginShell:       true
xterm*faceName:         xft:Dejavu Sans Mono:size=10
xterm*jumpScroll:       true
xterm*multiScroll:      true
xterm*toolBar:          false
xterm*geometry:         100x30

EDIT: Các giải pháp đã thử

Tôi đã cài đặt rxvt-unicode và đã sử dụng nó trước đó. Tuy nhiên tôi đã có cùng một vấn đề. Đây là một so sánh cạnh nhau của hai. Bên trái là xterm và bên phải là urxvt. Tệp đang mở là .Xdefaults hiển thị các cài đặt cho urxvt, một trong số đó có thể là vấn đề?

xterm trái urxvt phải

Tôi cũng đã chạy tập lệnh kiểm tra màu với đầu ra có vẻ tích cực. Trên cùng là xterm dưới cùng là urxvt. top xterm dưới urxvt

$ echo $TERM
xterm-256color

Giải pháp khắc phục

Tôi hiện đang sử dụng CSApprox và nó dường như hoạt động đủ tốt. Điều tôi vẫn bối rối là tại sao chủ đề không hoạt động mặc dù nó có các cài đặt màu giao diện điều khiển thích hợp được xác định. Có lẽ nó có một cái gì đó để làm với cách vim xem xét chính nó. Nó được cài đặt như một phần của gói gvim để có thể bỏ qua các cài đặt cterm.

EDIT: Và bây giờ mọi thứ dường như đều ổn ..

Kỳ lạ là sau khi cài đặt CSApprox rồi gỡ bỏ nó, mọi thứ dường như hoạt động như bình thường. Chỉ cần tải xuống một colorcheme khác và nó đã tải hoàn hảo ngay cả khi không có mô-đun CSApprox đang chạy.


$ HẠN của bạn là gì? Vim có biết rằng nó có thể sử dụng 256 màu không?
Richard Hum

1
xterm khá có vấn đề với UTF8 và màu sắc và như vậy. Bạn đã xem xét việc sử dụng urxvtvà tiết kiệm cho mình sự vội vàng? ( pacman -S rxvt-unicode).
Caleb

1
Làm thế nào bạn gõ ^[? Bạn cần làm điều đó bằng cách sử dụng Ctrl + V + Esc.
Mikel

@Mikel bạn đã đúng về điều đó nhưng dường như điều đó không tạo ra sự khác biệt
jmathew

@Caleb Bạn có ý nghĩa gì? Tôi thực sự đã chuyển từ rxvt sang xterm để hỗ trợ UTF-8 tốt hơn và 256 màu hoạt động cho cả hai. Tôi sử dụng TERM=screen-256colordo tmux mặc dù, nhưng mọi thứ cũng hoạt động với xterm-256colortmux bên ngoài.
jw013

Câu trả lời:


3

Caleb là đúng trong bình luận của mình. xterm khá cũ và bạn nên xem xét chuyển sang urxvt - ít nhất là phiên bản kích hoạt 256 và utf-8, hãy tham khảo trình quản lý gói của bạn để cài đặt đúng.

Tôi có một thiết lập giống hệt với bạn - WM, vim, urxvt, tmux / screen - và tất cả đều hoạt động tốt với 256 màu và utf-8. Tôi đã đặt TATE xterm-256colortrong trường hợp bạn cần đặt thủ công.

Hum ... Sau khi chỉnh sửa, bạn có thể kiểm tra xem chủ đề màu vim có được xác định đúng cho thiết bị đầu cuối không?


không chắc chắn những gì bạn có nghĩa là chính xác. Peaksea.vim sử dụng ctermfg / ctermbg nhưng nó cũng có các chức năng gui được định nghĩa. Điều đó có thể can thiệp?
jmathew

Bạn có thể thử với một bảng màu khác nhau? Tôi không hy vọng điều này sẽ tạo ra một sự khác biệt lớn nhưng bạn không bao giờ biết. Một điều khác tôi có thể nghĩ đến là biên dịch lại vim từ nguồn buộc 256 màu theo mặc định. Có lẽ gói trong vòm là lạ ...
Sardathrion - Phục hồi Monica

1

Không chỉ là thiết bị đầu cuối của bạn hỗ trợ 256 màu, chủ đề trong vim sẽ đề cập đến các màu trong .Xdefaults / .Xresource của bạn. Để khắc phục điều đó, bạn nên sử dụng các màu giống như tác giả của chủ đề hoặc sử dụng gvim để thay thế.

Nhìn vào mã tôi có thể thấy rằng nó hỗ trợ gvim đúng cách, đó là lý do tại sao sử dụng CSAprox hoạt động, vì nó lấy mã màu gvim trong HEX (ví dụ: # 123ABC) và dịch chúng sang màu thiết bị đầu cuối của bạn, tôi nghĩ vậy.

Thí dụ

Vim trong chế độ bảng điều khiển sẽ lấy màu từ:

hi Normal ctermfg=16 ctermbg=254

trong khi ở chế độ đồ họa:

hi Normal guifg=#d0d0d0 guibg=#202020

Vì vậy, nếu bạn cài đặt một số loại "chủ đề" cho màu thiết bị đầu cuối của mình, nó sẽ ảnh hưởng đến màu sắc bạn có được trong Vim. Ngoài ra, hãy kiểm tra lại xem bạn có

set background=dark

trong .vimrc của bạn


Đúng, tôi nhận được rằng cterm là những gì nó sử dụng khi ở trong giao diện điều khiển. Vấn đề là tôi không có tệp .Xresource và không có gì trong .Xdefaults của tôi đặt màu khác với một nền trước và nền sau. Không có màu nào được xác định lại. Điều duy nhất tôi có thể tưởng tượng là nếu tác giả có .Xdefaults / .Xresres được xác định khác với mặc định. Nhưng dường như mọi chủ đề thuật ngữ 256 màu tôi sử dụng khác nhau đáng kể so với những gì chúng được cho là trông như thế nào. Có một số tập tin khác đặt màu tôi đang thiếu?
jmathew

Tôi nghĩ rằng nếu chúng ta nói về X11, .Xdefaults và .Xresource là các tệp duy nhất có liên quan (trước đây không được dùng trong các hệ thống Archlinux). Tất nhiên, màu thiết bị đầu cuối mặc định phải sống ở một nơi nào đó và có thể khác nhau với các bản phân phối linux khác nhau. Ngoài ra, chúng ta không thể quên rằng các trình giả lập thiết bị đầu cuối như Gnome Terminal có thể có màu tùy chỉnh hoặc sử dụng hệ thống, vì chúng ta không thể biết chắc chắn liệu người tạo chủ đề có sử dụng màu tùy chỉnh hay không, mặc dù điều đó rất hợp lý. Bất kỳ quái vật nào, giống như tôi, đã từng tạo ra một chủ đề vim, chắc chắn có màu sắc thiết bị đầu cuối của họ được tùy chỉnh.
Alex

0

thử đặt:

export TERM=xterm-256color

trong bashrc của bạn.

Điều đó sẽ khắc phục nó ...


2
Xuất giá trị $ TATE trong .bashrcbất kỳ thứ gì "hiếm khi" sửa chữa của bạn ; nó có nhiều khả năng dẫn đến các vấn đề ngoài ý muốn khác ...
jasonwryan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.