So zeigen Sie Kursiv in vim in iTerm2 an

Das beliebte Solarized -Farbschema scheint Kommentare kursiv zu schreiben, aber wenn ich es vimin iTerm2 verwende, ist dies nicht der Fall.

Also wird alles, einschließlich Kommentare, in römischer (normaler) Schrift angezeigt. Selbst wenn ich die Menlo-Schriftart auswähle, die ein kursives Schriftbild hat, das ich im Einstellungsfenster von iTerm2 sehen kann, werden die Kommentare als Roman gerendert.

Zusammen mit der Tatsache, dass Kommentare in Hellgrau und normaler Text in (nicht sehr hellem) Weiß sind, werden Kommentare ziemlich schwer von normalem Text zu unterscheiden.

Für mich ist das ein Makel in der ansonsten tollen Farbgebung. Ich habe etwas gesucht, aber der Rat ist alt und löst das Problem nicht. Ich verwende OS X 10.6 Sierra auf einem MacBook Air.

Antworten (2)

Sie müssen Ihre TERMINFODatei aktualisieren.

Dank Wincents Video und seinen Github- Seiten
Sehen Sie sich das Video an und schauen Sie sich seine Github-Seiten an, sie sind ausgezeichnet.

Ich habe folgende Notiz auf meiner HD gespeichert:

Wir können Kursivschrift im Terminal haben.

Dies funktioniert sowohl in iTerm als auch in Terminal.

Wir müssen die terminfo-Datenbank anpassen, damit sie kursiv angezeigt wird.

Erstellen Sie eine einfache Textdatei, die Folgendes enthält:

xterm-256color|xterm with 256 colors and italic,
  sitm=\E[3m, ritm=\E[23m,
  use=xterm-256color,

Speichern Sie es alsxterm-256color.terminfo.txt

Führen Sie dann den folgenden Befehl aus:

tic -o ~/.terminfo xterm-256color.terminfo.txt

Dadurch wird ein ~/.terminfo/some_arbitrary_number/Verzeichnis erstellt, und in diesem Verzeichnis befindet sich eine xterm-256colorDatei.

Was es laut Manpage macht:

       The command tic translates a terminfo file from source format into com-
       piled  format.   The  compiled  format  is  necessary  for use with the
       library routines in ncurses(3X).

       The results are  normally  placed  in  the  system  terminfo  directory
       /usr/share/terminfo.  There are two ways to change this behavior.

       First, you may override the system default by setting the variable TER-
       MINFO in your shell environment to a valid (existing) directory name.

       Secondly, if tic cannot get access to /usr/share/terminfo or your  TER-
       MINFO  directory,  it  looks for the directory $HOME/.terminfo; if that
       directory exists, the entry is placed there.

       Libraries that read terminfo entries are expected to check for  a  TER-
       MINFO  directory first, look at $HOME/.terminfo if TERMINFO is not set,
       and finally look in /usr/share/terminfo.

       -o dir   Write  compiled  entries to given directory.  Overrides the TER-
                MINFO environment variable.

Mit dem angegebenen Befehl schreiben wir also einen neuen terminfo-Eintrag in das versteckte ~/.terminfoVerzeichnis. Es nimmt die Fähigkeiten des bestehenden xterm-256color-Eintrags (von /usr/share/terminfo/) und fügt ihm den Kursivmodus hinzu.

So überprüfen Sie, ob das Terminal das Richtige tut:

  • mit Fisch:

    echo (tput sitm)'italics' (tput ritm) (tput smso)'standout'(tput rmso)
    
  • mit bash oder zsh:

    echo `tput sitm`italics`tput ritm` `tput smso`standout`tput rmso`
    

Ich denke, im Moment setzen die meisten Vim-Terminal-Farbschemata Kursiv nicht als Stil. Um dies zu überprüfen, tun Sie Folgendes:
:hi CommentWenn die Antwort enthält cterm=italic, sind Sie fertig. Wenn nicht, fügen highlight Comment cterm=italicSie es Ihrem vimrc hinzu ( unten stellen Sie Ihr Farbschema ein).

Nachtrag für tmux

tmux verwendet seine eigenen terminfo-Dateien, sie müssen ebenfalls aktualisiert werden, um Kursivschrift zu verwenden.

  1. Erstellen Sie eine tmux.terminfo.txtDatei, die enthält

tmux|tmux terminal multiplexer, sitm=\E[3m, ritm=\E[23m, smso=\E[7m, rmso=\E[27m, use=screen,

  1. Erstellen Sie eine tmux-256color.terminfo.txtDatei, die enthält

tmux-256color|tmux with 256 colors, sitm=\E[3m, ritm=\E[23m, smso=\E[7m, rmso=\E[27m, use=screen-256color,

und führe den tic-Befehl aus.

tic -o ~/.terminfo tmux-256color.terminfo.txt
und
tic -o ~/.terminfo tmux.terminfo.txt

Wow! Nachdem Sie dies getan haben, funktionieren mit dem von Ihnen gegebenen Test "kursiv" und "herausragend", aber das Öffnen eines cpp in vim macht Kommentare nicht kursiv. Ist das das Problem von Solarized?
Oh! Mir ist aufgefallen, dass die GUI von MacVim (dh das separate Fenster, das auffordert) kursive Schriftarten anzeigen kann, aber wenn es im Terminal geöffnet wird (mit mvim -v), kann es nicht. Ist es normal?
Wenn Sie in vim tun: :hi Commentheißt es cterm=italic? Wenn nicht, setzt Solarized dies nicht. Sie können dies in Ihrem vimrc mit tunhighlight Comment cterm=italic
ES KLAPPT!!!! MEINE KOMMENTARE SIND JETZT KURSIV!!! Ich werde der Welt die gute Nachricht überbringen!!! (Ich dachte immer, Solarized setze das standardmäßig)
Auf meinem Computer (arch linux) wurde cterm=standout kursiv angezeigt , und der obige Befehl konnte nur das Wort standout anzeigen, jedoch kursiv.
Und es gab kein ~/.terminfo-Verzeichnis und daher keine Dateien darin. Was ist aber dieser 78- Verzeichnisteil?
Ich habe gerade eine Manjaro-VM (basierend auf Arch) ausprobiert echo `tput sitm`italics`tput ritm` `tput smso`standout`tput rmso`und sie hat das erwartete Ergebnis (kursiv und herausragend) geliefert, ohne den Patch anzuwenden. Dies ist ein xfce4-Terminal. Der Teil mit 78 Verzeichnissen wird auf den 2 Macs angezeigt, die ich zur Verfügung habe. Ich bin mir nicht sicher, ob dies nur eine Mac-Sache oder ein allgemeineres Unix ist. Wenn Sie sich das Video von wincent ansehen, ~/.terminfoist ein Verzeichnis, in dem das gepatchte terminfo gespeichert ist. Vermutlich wird beim Starten des Terminals diese Datei gelesen, anstatt die in/usr/share/x/terminfo/xterm-256color
Verbesserte Erklärung des Befehls, hoffentlich einige Verwirrung über vorhandene oder nicht vorhandene Verzeichnisse beseitigt.
Ich kann das anscheinend nicht in einer tmux-Sitzung zum Laufen bringen.
für tmux müssen Sie auch die Termininfo-Einträge aktualisieren. Die richtigen Einstellungen finden Sie in den wincent -Dateien .
konnte dies nicht in tmux auf macos zum Laufen bringen, ohne auch medium.com/@dubistkomisch/ zu folgen…

Neben der Aktualisierung meiner TERMINFOmusste ich noch zwei weitere Änderungen vornehmen.

  1. Bearbeiten Sie .vim/colors/solarized.vimwie in Solarized Nr. 120 empfohlen , um die Zeilen 137-157 durch Folgendes zu ersetzen:

     if has("gui_running") || ( has("unix") && system("tput sitm") == "\033[3m" )
         let s:terminal_italic=1
     else
         let s:terminal_italic=0
     endif
    
  2. Bearbeiten .vimrc, um die folgenden Zeilen hinzuzufügen. Verwenden Sie <Ctrl-v><Esc>zum Eingeben der ^[Zeichen.

     " Enable italics
     set t_ZH=^[[3m
     set t_ZR=^[[23m