मैं विम में पूर्ण-रंग समर्थन को कैसे सक्षम करूं?


98

मेरे पास एक प्यारा Vim कलर्सकेम ( xoria256 ) है और यह GVim में शानदार दिखता है, लेकिन जब मैं vimटर्मिनल में सामान्य उपयोग करता हूं, तो colorcheme केवल आंशिक रूप से समर्थित होता है - उदाहरण के लिए, डिफ़ॉल्ट अर्ध-पारदर्शी ऑबर्जिन रंग का उपयोग किया जाता है। मैं अपने वीआईएम कलर्सकेम को विश्वासपूर्वक कैसे बनाऊं?


4
यहां तक ​​कि डिफ़ॉल्ट रंग योजना 256 रंगों के साथ बेहतर दिखती है। यदि यह आपके प्रश्न के लिए नहीं था, तो मुझे यह कभी नहीं मिला। यह डिफ़ॉल्ट होना चाहिए।
मिहाई कैपोटे

जवाबों:


79

गनोम टर्मिनल 256 रंगों का समर्थन करता है, लेकिन इसके समर्थन का विज्ञापन नहीं करता है। आप निम्नलिखित डालकर विम के ऑटोडेटेक्शन को ओवरराइड कर सकते हैं:

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

अपने ~ / .vimrc में।

नोट : यदि आप GNU स्क्रीन का उपयोग करते हैं, तो यह खुशी से उन 256-रंग कोडों को खा जाएगा और उन्हें मूल 16 रंगों में बदल देगा। स्क्रीन / विम लॉन्च करने से पहले TERM को xterm-256color में बदलना बेहतर है।

2017 के लिए अपडेट करें : यदि आपके पास हाल ही में Vim (7.4.1799 या नया) है, और एक पर्याप्त उन्नत टर्मिनल एमुलेटर (xterm, या सूक्ति-आधारित VTE के हालिया संस्करण पर आधारित है), तो आप :set termguicolorsऔर टर्मिनल vim का पूरा उपयोग करेंगे। 24-बिट रंग जैसा कि आपके vim थीम द्वारा परिभाषित किया गया है highlight guifg=#rrggbb guibg=#rrggbb


1
यह काम नहीं किया, मेरे टर्मिनल अभी भी aubergine है!
डेविड सीगेल

मैं क्या कह सकता हूं - यह मेरे लिए काम करता है जब मैं करता हूं :set t_Co=256 | colorscheme xoria256
मारियस गेदमिनस जूल

1
आप अपने vimrc में सूक्ति-टर्मिनल की उपस्थिति के लिए परीक्षण कर सकते हैं, फिर उचित रूप से t_Co चर सेट करें। उदाहरण: if $COLORTERM == 'gnome-terminal'`सेट t_Co = 256` endif (मुझे यकीन नहीं है कि टिप्पणियों में कोड के मल्टी-लाइन ब्लॉक कैसे जोड़े जा सकते हैं, इसलिए सेट स्टेटमेंट से पहले और बाद में नई लिंक जोड़ें)
मैट

3
सूक्ति-टर्मिनल और स्क्रीन के लिए स्क्रीन 256 256or के लिए सूक्ति -२५० रंग का उपयोग करने के लिए बेहतर है।
ग्रेव

3
@trusktr google अप CSApprox और CSExact विम एक्सटेंशन।
Marius Gedminas

44

एक अधिक सामान्य उपाय "xterm-256color" शब्द को स्थापित करना है। 10.04 में मुझे लगता है कि यह डिफ़ॉल्ट रूप से स्थापित है। पहले आपको इसे प्राप्त करने के लिए "ncurses-term" स्थापित करने की आवश्यकता थी।

इसके बाद .bashrc में निम्न प्रकार का शब्द सेट करें:

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

यदि आप कुछ कार्यक्रमों के लिए केवल 256 रंग क्षमता रखना पसंद करते हैं (शायद यह कुछ अन्य लोगों को भ्रमित करता है) इसके बजाय उपयोग करें:

TERM=xterm-256color myprogram

और शायद इस कार्यक्रम के लिए एक उपनाम के रूप में निर्धारित किया है।

फिर अपनी टर्मिनल रंग क्षमताओं की जांच करें:

$ tput colors
256

आपको अभी भी ऊपर vim सेटिंग की आवश्यकता हो सकती है ताकि vim इसे पहचान सके। अधिकांश एप्लिकेशन स्वचालित रूप से 256 रंगों को पहचानेंगे (यदि वे उनका उपयोग कर सकते हैं)।

Emacs में कलर थीम भी हैं जो 256 रंगों के साथ बेहतर हैं। यह जांचने के लिए कि क्या यह 256-रंग में सक्षम है:

M-x list-colors-display

256colors.pl पर्ल स्क्रिप्ट है जो आपके टर्मिनल में सभी रंगों को प्रदर्शित करेगा।


1
दरअसल, सूक्ति-टर्मिनल के लिए गनोम -254 कोलोर ज्यादा सही है।
ग्रेव

क्या यह zsh में काम करेगा, मैं बैश का उपयोग नहीं करता?
विनीत कुमार

2
डेव, मुझे 100% यकीन नहीं है कि यह सही है लेकिन यहाँ आपके कमांड का एक ऑनलाइनर संस्करण है [[ -n "$DISPLAY" && "$TERM" = "xterm" ]] && export TERM=xterm-256color:। कृपया सत्यापित करें और इसे पोस्ट में जोड़ने के लिए स्वतंत्र महसूस करें।
JJD

@JDD को काम करना चाहिए, लेकिन आप हमेशा ;एक-लाइनर बनाने के लिए उपयोग कर सकते हैं।
मार्टिन यूडिंग

1
@ dave-jennings स्क्रिप्ट का लिंक टूट गया है।
मार्टिन उडिंग

36

बस नीचे पंक्ति को अपने में शामिल करें $HOME/.bashrc(अधिमानतः फ़ाइल की अंतिम पंक्ति में):

export TERM="xterm-256color"

और इसे सेव करें। के बाद, अपने सूक्ति-टर्मिनल को पुनः आरंभ करें। यह परिवर्तन न केवल विम में, बल्कि आपके सभी टर्मिनल अनुप्रयोगों के लिए उपलब्ध होगा।

यह जाँचने के लिए कि क्या यह काम करता है, इस छोटी स्क्रिप्ट को चलाएं :

#!/usr/bin/env python
# Copyright (C) 2006 by Johannes Zellner, <johannes@zellner.org>
# modified by mac@calmar.ws to fit my output needs
# modified by crncosta@carloscosta.org 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")

तत्पश्चात, आपको निम्न जैसा कुछ दिखाई देगा (आपके सूक्ति-टर्मिनल विषय पर निर्भर करता है):

टर्मिनल


2
मुझे आश्चर्य है कि पायथन में स्क्रिप्ट क्यों बनाते हैं अगर इसमें केवल शेल कमांड होते हैं। बैश में लूप,
व्हेल

1

ठीक है, तुम हमेशा यह विम की तरह लग रहे बनाने के लिए Gvim कॉन्फ़िगर कर सकते हैं। आपको बस एक ~ / .gvimrc फ़ाइल बनानी होगी और उसमें इन अनुकूलन ट्रिक्स को पेस्ट करना होगा:

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

मुझे नहीं लगता कि यह आपकी समस्या को हल करता है, लेकिन कौन जानता है ;-)


0

मैंने विम के लिए एक अलग प्रोफ़ाइल बनाई जो पृष्ठभूमि में एक ठोस, अपारदर्शी रंग का उपयोग करती है। जब भी मैं विम का उपयोग करता हूं, मैं बस इसे मैन्युअल रूप से स्विच करता हूं। सुनिश्चित नहीं है कि कोई बेहतर तरीका है या नहीं। मैं ऐसा सोचना चाहूंगा।


2
आप if has("gui_running")अपने vimrc में उपयोग कर सकते हैं gui विशिष्ट विकल्प सेट करने के लिए।
मैट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.