it-swarm-vi.com

Làm cách nào để bật hỗ trợ đầy đủ màu trong Vim?

Tôi có một Vim colorscheme đáng yêu ( xoria256 ) và nó trông thật rực rỡ trong GVim, nhưng khi tôi sử dụng vim bình thường trong Terminal, màu sắc chỉ được hỗ trợ một phần - ví dụ, nền aubergine bán trong suốt mặc định màu sắc được sử dụng. Làm cách nào để làm cho Terminal trung thực hiển thị màu sắc Vim của tôi?

97
David Siegel

Thiết bị đầu cuối Gnome hỗ trợ 256 màu, nhưng không quảng cáo hỗ trợ của nó. Bạn có thể ghi đè tự động phát hiện của vim bằng cách đặt như sau:

if $COLORTERM == 'gnome-terminal'
  set t_Co=256
endif

trong ~/.vimrc của bạn.

Lưu ý: nếu bạn sử dụng màn hình GNU, nó sẽ vui vẻ ăn các mã 256 màu đó và chuyển đổi chúng thành 16 màu cơ bản. Cách khắc phục tốt hơn là thay đổi TERM thành xterm-256color trước khi khởi chạy màn hình/vim.

Cập nhật cho năm 2017: nếu bạn có Vim đủ gần đây (7.4.1799 hoặc mới hơn) và trình giả lập thiết bị đầu cuối đủ tiên tiến (xterm hoặc gnome-terminal dựa trên phiên bản VTE đủ gần đây), bạn có thể :set termguicolors và terminal vim sẽ sử dụng đầy đủ các màu 24 bit như được xác định bởi chủ đề vim của bạn bằng cách sử dụng highlight guifg=#rrggbb guibg=#rrggbb.

78
Marius Gedminas

Một giải pháp tổng quát hơn là cài đặt loại thuật ngữ "xterm-256color". Trong 10.04 tôi nghĩ rằng nó được cài đặt theo mặc định. Trước đây bạn cần cài đặt "ncurses-term" để có được nó.

Sau đó, đặt loại thuật ngữ trong .bashrc với nội dung như sau:

if [ -n "$DISPLAY" -a "$TERM" == "xterm" ]; then
    export TERM=xterm-256color
fi

Nếu bạn chỉ muốn có khả năng 256 màu cho một số chương trình nhất định (có lẽ nó gây nhầm lẫn cho một số người khác) thì hãy sử dụng:

TERM=xterm-256color myprogram

và có lẽ đặt nó như một bí danh cho chương trình.

Sau đó kiểm tra khả năng màu thiết bị đầu cuối của bạn với:

$ tput colors
256

Bạn vẫn có thể cần cài đặt vim ở trên để vim nhận ra nó. Hầu hết các ứng dụng sẽ tự động nhận ra 256 màu (nếu chúng có thể sử dụng chúng).

Emacs cũng có chủ đề màu sắc tốt hơn nhiều với 256 màu. Để kiểm tra xem nó có khả năng chạy 256 màu không:

M-x list-colors-display

256colors.pl là tập lệnh Perl sẽ hiển thị tất cả các màu trong thiết bị đầu cuối của bạn.

44
Dave Jennings

Chỉ cần bao gồm dòng bên dưới vào $HOME/.bashrc của bạn (tốt nhất là trong dòng cuối cùng của tệp):

export TERM="xterm-256color"

Và lưu nó. Sau đó, khởi động lại thiết bị đầu cuối gnome của bạn. Thay đổi này sẽ có sẵn không chỉ trong vim, mà cho tất cả các ứng dụng đầu cuối của bạn.

Để kiểm tra xem nó có hoạt động không, hãy chạy cái này script :

#!/usr/bin/env python
# Copyright (C) 2006 by Johannes Zellner, <[email protected]>
# modified by [email protected] to fit my output needs
# modified by [email protected] to fit my output needs

import sys
import os

def echo(msg):
    os.system('echo -n "' + str(msg) + '"')

def out(n):
    os.system("tput setab " + str(n) + "; echo -n " + ("\"% 4d\"" % n))
    os.system("tput setab 0")

# normal colors 1 - 16
os.system("tput setaf 16")
for n in range(8):
    out(n)
echo("\n")
for n in range(8, 16):
    out(n)

echo("\n")
echo("\n")

y=16
while y < 231:
    for z in range(0,6):
        out(y)
        y += 1

    echo("\n")


echo("\n")

for n in range(232, 256):
    out(n)
    if n == 237 or n == 243 or n == 249:
        echo("\n")

echo("\n")
os.system("tput setaf 7")
os.system("tput setab 0")

Sau đó, bạn sẽ thấy một cái gì đó như sau (phụ thuộc vào chủ đề gnome-terminal của bạn):

terminal

36
crncosta

Chà, bạn luôn có thể cấu hình Gvim để làm cho nó trông giống Vim. Bạn chỉ cần tạo một tệp ~/.gvimrc và dán vào đó các thủ thuật tùy chỉnh này:

set guioptions-=r  " no scrollbar on the right
set guioptions-=l  " no scrollbar on the left
set guioptions-=m  " no menu
set guioptions-=T  " no toolbar

Tôi không nghĩ rằng điều này giải quyết vấn đề của bạn, nhưng ai biết được ;-)

1
wassimans

Tôi đã tạo một hồ sơ riêng cho Vim, sử dụng màu đục, mờ trong nền. Tôi chỉ tự chuyển sang nó bất cứ khi nào tôi sử dụng Vim. Không chắc có hay không một phương pháp tốt hơn. Tôi muốn nghĩ như vậy.

0
DLH