Kann ich in Vim oder gVim eine nicht-monospaced Schriftart verwenden?


32

Gibt es eine Möglichkeit, eine Nicht-Monospace-Schriftart in vimoder zu verwenden gvim?

Ich habe versucht, die Schriftart für gVim zu ändern mit:

:set guifont=Dejavu\ Serif\ 12

Aber das gibt mir einige ziemlich hässliche Ergebnisse:

Bildbeschreibung hier eingeben

Ich erhalte die gleichen Ergebnisse, wenn ich das Menü benutze (Bearbeiten -> Schriftart auswählen)

:help guifont sagt:

Note that the fonts must be mono-spaced (all characters have the same
width).  An exception is GTK 2: all fonts are accepted, but
mono-spaced fonts look best.

Ich denke also, dass die obigen Ergebnisse als "nicht am besten aussehend" gelten? Kann man das irgendwie verbessern?

Ich habe auch versucht, eine Nicht-Monospace-Schriftart in meinem Terminal ( xterm) festzulegen , aber das scheint ungefähr den gleichen Effekt zu haben:

Bildbeschreibung hier eingeben

Ich habe nichts dagegen, einen anderen Terminal-Emulator für dieses BTW zu verwenden.


es sieht so aus, als ob es hier bereits beantwortet wurde: superuser.com/questions/357571/…
guido

1
@guido Ich sehe dort keine Antwort ... Die am besten bewertete Antwort ist nur eine Erklärung, was Schriften sind (keine Antwort), und die anderen "Antworten" sind noch schlimmer ...
Martin Tournoij

Antworten:


25

Ich habe gefunden mlterm, was dies unterstützt. Abgesehen von Emacs 'eingebautem Terminal (Mx-Bezeichnung) ist dies das einzige Terminal, das ich gefunden habe und das dies unterstützt (ich habe ungefähr 15-20 verschiedene ausprobiert).
Ich habe festgestellt, dass dies mltermaufgrund der Einstellungen für das Sceen-Verhältnis besser funktioniert als Emacs, und Sie müssen Vim auch nicht in einer Emacs-Sitzung ausführen (ich bin mir nicht einmal sicher, ob dies gesetzlich zulässig ist).

Screenshot (es sieht hässlich aus, es sei denn, Sie öffnen ihn aufgrund der Skalierung im Browser in voller Größe ):

Bildbeschreibung hier eingeben

Es erfordert jedoch einige Konfigurationsliebe. Drücken Sie nach dem Start die Ctrl+ mittlere Maustaste, um den Konfigurationsbildschirm zu öffnen. Ich habe diese Optionen festgelegt

In der Registerkarte Schriftart:

  • Aktivieren Sie "Anti-Alias"
  • Aktivieren Sie "Variable Spaltenbreite". Dies ist die "Schlüsselfunktion", die in den meisten anderen Terminalemulatoren fehlt
  • Stellen Sie die Schriftart auf "DejaVu Sans Book 16" (oder was auch immer Sie bevorzugen)
  • Stellen Sie die Breite für "Bildschirmverhältnis gegenüber Schriftgröße" auf 60 ein. Dies betrifft Programme, die etwa die Breite des Terminals haben. Tun Sie dies nicht, verwenden Sie nur ~ 50% der Bildschirmgröße. Der beste Wert dafür hängt von der verwendeten Schriftart ab. Experimentieren Sie also ein bisschen ...

Der Rechtsklick-Konfigurationsbildschirm scheint etwas unübersichtlich zu sein. Ich habe auch meinen bearbeitet, ~/.mlterm/vaafontda dieser nicht aktualisiert wurde:

ISO10646_UCS4_1 = 22,DejaVu Sans 18;21,DejaVu Sans 16;16,DejaVu Sans 16

Und meine ~/.mlterm/main(dies sind die Einstellungen, die ich oben festgelegt habe, plus einige persönliche Einstellungen):

type_engine = xft
bel_mode = none
scrollbar_mode = none
fontsize = 22
use_anti_alias = true
use_variable_column_width = true
line_space = 5
use_multi_column_char = true
col_size_of_width_a = 1
screen_width_ratio = 50

Es gibt einige Artefakte, die zu erwarten sind, aber das Schreiben von E-Mails oder Posts wie diesem scheint ganz gut zu funktionieren!

Dafür habe ich in meiner Shell einen Alias ​​erstellt:

alias pvim mlterm -e vim

Ich habe auch eine kleine Funktion erstellt, um die meisten UI-Chrome zu entfernen:

fun! WriteMode()
    " Disable a lot of stuff
    setlocal nocursorline nocursorcolumn statusline= showtabline=0 laststatus=0 noruler

    " Hack a right margin with number
    setlocal number
    setlocal numberwidth=3

    " White text, so it's 'invisible'
    highlight LineNr ctermfg=15
    " If you're using a black background:
    " highlight LineNr ctermfg=1
endfun

Es gibt auch goyo.vim, was ungefähr gleich ist, aber das hat für mich nicht sehr gut funktioniert (zu viel mit Rändern rumgespielt ). YMMV obwohl.


Ich musste Strg + Rechtsklick verwenden, nicht in Ubuntu 18.04 mit MLTerm von den Ubuntu-Repos. Ansonsten bekomme ich nur einen seltsamen quadratischen Rahmen um den Mauszeiger und keinen Dialog.
Ruslan

Sieht lustig (und unbrauchbar) aus, wenn Sie Vertical Split verwenden: Screenshot . Dies ist jedoch von einer terminalbasierten Lösung zu erwarten.
Ruslan

7

Es wird in GUI Vim definitiv nicht unterstützt, und ich wäre überrascht, wenn es mehr als eine Handvoll Terminalemulatoren gäbe, die proportionale Schriftarten so unterstützen, wie Sie es sich erhofft haben: Es würde zu viele der Standardsachen, für die Terminals gedacht sind, zerstören gebraucht. Da in so vielen Teilen von Unix und anderen Befehlszeilenumgebungen einfarbige Schriftarten vorausgesetzt werden, kann diese Art der Anzeige nicht als Allzweck-Terminal verwendet werden, sodass der Entwickler des Terminals zusätzliche Arbeiten mit geringem Nutzen ausführen müsste.

Es gibt jedoch mindestens einen Terminal-Emulator, der mithilfe von Webtechnologien ( Ajaxterm ) implementiert wurde. Da für das Rendern HTML / CSS verwendet wird, kann die Verwendung einer proportionalen Schriftart mithilfe von CSS vorgenommen werden. CJS Hayward hat genau dies getan, erfordert jedoch die Verwendung eines sehr alten Browsers.

Wenn Sie Vim in einem solchen Terminal ausführen würden, würden Sie das bekommen, wonach Sie fragen. Seien Sie einfach auf verrückte Hijinx vorbereitet, wenn Sie spaltenbasierte Funktionen verwenden. (zB j, k, blockartig visueller Modus oder die 'colorcolumn'Option)

UPDATE Wie der ursprüngliche Fragesteller Carpetsmoker in einem Kommentar ausführt , unterstützt Emacs die Proportionalschrift und enthält auch einen Terminal-Emulator ( M-x term), in dem Sie Vim ausführen können. Enthusiasten von Proportionalschriftarten möchten vielleicht auch einen Blick auf Emacs 'Evil werfen , um ein Vim-ähnliches Erlebnis in Emacs zu erhalten.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.