Czy mogę uzyskać kursywę w gnome-terminal?

13

Po wielu poszukiwaniach nie mogę znaleźć sposobu, aby uzyskać gnome-terminal do wyświetlania czcionek pochylonych. Używam wersji 3.6.2.

W szczególności chciałbym, aby vim wyświetlał komentarze kursywą; dodałem

highlight Comment cterm=italic

do mojego .vimrc, ale to nie działa.

Czy ktoś wie, czy można to zrobić?

Chronos
źródło
Czy to pytanie pomaga? Sugeruje użycie sekwencji ucieczki ANSI: \e[3m Terminal obsługujący kod ucieczki ANSI?
Nattgew

Odpowiedzi:

14

Terminal Gnome obsługuje kursywę (przynajmniej w wersji 3.8.4). Możesz przetestować obsługę terminali kursywą, wykonując $ echo -e "\e[3mfoo\e[23m". Jeśli widzisz foo wydrukowane kursywą, foo , terminal obsługuje to.

Następnie musisz wstawić następujące elementy .vimrc:

set t_ZH=^[[3m
set t_ZR=^[[23m

Zauważ, że ^[jest to pojedynczy znak i można go wstawiać w trybie wstawiania vim, pisząc <ctrl>-v <esc>.

Następnie musisz powiedzieć vimowi, aby pochylił komentarze. Możesz szybko sprawdzić, czy działa, wykonując :highlight Comment cterm=italicvim, gdy plik z niektórymi komentarzami jest otwarty. Komentarze powinny być od razu zaznaczone kursywą.

Znalazłem powyższe instrukcje dotyczące reddit ( kursywa w terminalu vim i tmux ), ale nie musiałem wykonywać wszystkich wymienionych tam kroków. Moja odpowiedź to destylowana wersja instrukcji, która zadziałała dla mnie.

Kranjski Janez
źródło
Dziękuję Ci! Zestaw poleceń był tym, czego brakowało w moim vimrc. Teraz moje komentarze w terminalu vim są zaznaczone kursywą, tak jak je lubię.
Chronos
Nie przegap tej uwagi na temat ^ [w przeciwnym razie będziesz zdezorientowany przez długi czas!
Jeremy West,
1
Terminal gnome 3.6.2 obsługuje również kursywę! wreszcie mam kursywę w przecenianiu, dzięki!
Ayrat,
3

Nie. Przeczytałem, man 5 terminfoaby dowiedzieć się, jak nazywane są końcowe sekwencje ESCape (to, co wysyłasz do terminala w celu spowodowania zachowania) dotyczące kursywy:

man 5 terminfo | egrep 'italics|Cap-|Code'|head -n 10| tail -n 4
               Variable                   Cap-            TCap               Description  
                String                    name            Code  
       enter_italics_mode                 sitm            ZH             Enter italic mode  
       exit_italics_mode                  ritm            ZR             End italic mode  

Następnie infocmpzrzuciłem opis każdego terminala, aby zobaczyć, które terminale obsługują kursywę:

for i in $( find /usr/share/terminfo -type f ) ; do 
    j=${i##*/}; hdr="$( infocmp $j | head -n 1)";  
    infocmp $j | egrep -q 'sitm|ZH' 
    if [ $? = 0 ] ; then echo $hdr; fi; 
done
# Reconstructed via infocmp from file: /usr/share/terminfo/r/rxvt-unicode-256color
# Reconstructed via infocmp from file: /usr/share/terminfo/o/opus3n1+
# Reconstructed via infocmp from file: /usr/share/terminfo/i/iris-color

Te trzy typy terminali (rxvt-unicode-256color, opus3n1 +, iris-color) obsługują kursywę. Inni nie.

Ponieważ nie mogłem znaleźć definicji terminala dla „gnome-terminal” (patrz ls /usr/share/terminfo/g/, w ogóle szukałem kursywy. Spróbuj infocmp $TERMzobaczyć, jakie możliwości obsługuje twój terminal. Przeczytaj, man tputjak emitować sekwencje kontrolne.

waltinator
źródło
Dziękuję za odpowiedź i przepraszam, że nie uznałem jej wcześniej. Zmieniłem na używanie Urxvt; jest wysoce konfigurowalny i przy odrobinie wysiłku udało mi się sprawić, że będzie wyglądał prawie dokładnie tak, jak moja stara konfiguracja terminalu gnomów.
Chronos