Vim'de tam renkli desteği nasıl etkinleştiririm?


98

Çok hoş bir Vim renk şemasına sahibim ( xoria256 ) ve GVim'de harika görünüyor, ancak vimTerminal'de normal kullandığımda renk şeması sadece kısmen destekleniyor - örneğin, varsayılan yarı saydam patlıcan arka plan rengi kullanılıyor. Terminal'in Vim renk planımı güvenilir bir şekilde oluşturmasını nasıl sağlayabilirim?


4
Varsayılan renk şeması bile 256 renkle daha iyi görünür. Senin sorunun olmasaydı, asla öğrenemezdim. Bu varsayılan olmalıdır.
Mihai Capotă

Yanıtlar:


79

GNOME Terminal 256 rengi desteklemektedir ancak desteğinin reklamını yapmamaktadır. Aşağıdakileri koyarak vimin otomatik algılama özelliğini geçersiz kılabilirsiniz:

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

~ / .vimrc içinde.

Not : GNU ekranını kullanırsanız, bu 256 renkli kodları mutlu bir şekilde tüketir ve temel 16 renge dönüştürür. Daha iyi bir düzeltme, ekranı / vim'i başlatmadan önce TERM'i xterm-256color olarak değiştirmektir.

2017 Güncellemesi : Yeterince yeni bir Vim (7.4.1799 veya daha yenisi) ve yeterince gelişmiş bir terminal emülatörünüz (VTE'nin yeterince yeni bir sürümüne dayanan xterm veya gnome-terminali) varsa, :set termguicolorsterminal vim kullanmanız gerekir. Vim temanız tarafından tanımlanan 24 bit renkleri kullanarak highlight guifg=#rrggbb guibg=#rrggbb.


1
Bu işe yaramadı, terminalim hala patlıcan!
David Siegel

Ne diyebilirim - yaptığım zaman benim için çalışıyor :set t_Co=256 | colorscheme xoria256.
Marius Gedminas

1
Vimrc'nizde gnome-terminal varlığını test edebilir, ardından t_Co değişkenini uygun şekilde ayarlayabilirsiniz. örneğin: if $COLORTERM == 'gnome-terminal'`set t_Co = 256` endif (Yorumlara çok satırlı kod blokları nasıl ekleyeceğimi bilmiyorum, bu nedenle set ifadesinden önce ve sonra yeni satırlar ekleyin)
Matt

3
Gnome-terminal için gnome-256color ve ekran için screen-256color kullanmak daha iyidir.
Graywh

3
@ trusktr google up CSApprox ve CSExact vim uzantıları.
Marius Gedminas

44

Daha genel bir çözüm "xterm-256color" terimini kurmaktır. 10.04'te varsayılan olarak yüklendiğini düşünüyorum. Daha önce bunu elde etmek için "ncurses-term" kurmanız gerekiyordu.

Ardından .bashrc'deki terim türünü aşağıdaki gibi bir şeyle ayarlayın:

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

Belirli programlar için yalnızca 256 renk özelliğine sahip olmayı tercih ediyorsanız (belki bazılarının kafasını karıştırır) kullanın:

TERM=xterm-256color myprogram

ve belki de bunu program için bir takma ad olarak ayarlayın.

Ardından terminal renk yeteneklerinizi aşağıdakilerle kontrol edin:

$ tput colors
256

Vim'in tanıması için yukarıdaki vim ayarına hala ihtiyacınız olabilir. Çoğu uygulama 256 rengi otomatik olarak tanıyacaktır (eğer kullanabilirlerse).

Emacs ayrıca 256 renkle çok daha iyi renk temalarına sahiptir. 256 renkli çalışıp çalışmadığını kontrol etmek için:

M-x list-colors-display

256colors.pl , terminalinizdeki tüm renkleri gösterecek olan Perl betiğidir.


1
Aslında, Gnome-256color gnome-terminal için daha doğrudur.
Graywh

zsh ile çalışacak mı, bash kullanmıyorum?
Vinit Kumar

2
Doğruysa, ancak burada ise Dave,% 100 emin değilim oneliner versiyonu komutadan: [[ -n "$DISPLAY" && "$TERM" = "xterm" ]] && export TERM=xterm-256color. Lütfen yayına eklemek için çekinmeyin.
JJD

@JJD Çalışmalı, fakat her zaman her ;şeyi bir astar yapmak için kullanabilirsiniz .
Martin Ueding

1
@ dave-jennings Betiğin bağlantısı koptu.
Martin Ueding

36

Sadece aşağıdaki satırı içine ekleyin $HOME/.bashrc(tercihen dosyanın son satırına):

export TERM="xterm-256color"

Ve kurtar. Ardından, GNOME terminalinizi yeniden başlatın. Bu değişiklik sadece vim cinsinden değil, tüm terminal uygulamalarınız için geçerli olacaktır.

Çalışıp çalışmadığını kontrol etmek için şu küçük betiği çalıştırın :

#!/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")

Bundan sonra, aşağıdakine benzer bir şey göreceksiniz (GNOME terminal temanıza bağlı olarak):

terminal


2
Neden sadece kabuk komutları içeriyorsa, betiği Python'da yaptıklarını merak ediyorum. ); Bash döngüler, whiles, IFS ve işlevleri vardır, bilirsiniz
MestreLion

1

Eh, her zaman Gvim'yi Vim gibi görünecek şekilde yapılandırabilirsiniz. Sadece bir ~ / .gvimrc dosyası yaratmanız ve bu özelleştirme püf noktalarına yapıştırmanız yeterlidir:

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

Bunun probleminizi çözdüğünü sanmıyorum, ama kim bilir ;-)


0

Vim için arka planda düz, opak bir renk kullanan ayrı bir profil yaptım. Vim kullandığımda sadece manuel olarak değiştiriyorum. Daha iyi bir yöntem olup olmadığından emin değilim. Ben böyle düşünmek istiyorum.


2
if has("gui_running")GUI'ye özgü seçenekleri ayarlamak için vimrc'nizde kullanabilirsiniz .
Matt,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.