Posso usare un carattere non monospaziato in Vim o gVim?


32

Esiste un modo per utilizzare un carattere non monospaziale in uno vimo entrambi gvim?

Ho provato a cambiare il carattere per gVim con:

:set guifont=Dejavu\ Serif\ 12

Ma questo mi dà alcuni risultati piuttosto brutti:

inserisci qui la descrizione dell'immagine

Ottengo gli stessi risultati se uso il menu (Modifica -> Seleziona carattere)

:help guifont dice:

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.

Quindi penso che i risultati di cui sopra contano come "non sembrano i migliori"? Questo può essere migliorato, in qualche modo?

Ho anche provato a impostare un carattere non monospaziale nel mio terminale ( xterm), ma sembra avere più o meno lo stesso effetto:

inserisci qui la descrizione dell'immagine

Non mi dispiace usare un emulatore di terminale diverso per questo BTW.


sembra che abbia già ricevuto risposta qui: superuser.com/questions/357571/…
guido

1
@guido Non vedo una risposta lì ... La risposta più votata è solo una spiegazione di quali caratteri (non una risposta), e le altre "risposte" sono anche peggio ...
Martin Tournoij

Risposte:


25

Ho trovato mlterm, che supporta questo. A parte il terminale integrato di Emacs (termine Mx) questo è l' unico terminale che ho trovato che supporta questo (ne ho provati circa 15-20 diversi).
Ho scoperto che mltermfunziona meglio di Emacs a causa delle impostazioni del rapporto di visualizzazione, ed eviti anche di dover eseguire Vim all'interno di una sessione di Emacs (non sono nemmeno sicuro che sia legalmente consentito).

Schermata (sembra brutta a meno che non la apri a dimensione intera a causa del ridimensionamento nel browser):

inserisci qui la descrizione dell'immagine

Tuttavia richiede un po 'di conforto. Dopo l'avvio, premi Ctrl+ tasto centrale in qualsiasi punto per aprire la schermata di configurazione. Ho impostato queste opzioni

Nella scheda Carattere:

  • Seleziona "Anti-alias"
  • Seleziona "Larghezza colonna variabile"; questa è la "caratteristica chiave" mancante nella maggior parte degli altri emulatori di terminali
  • Imposta il carattere su "DejaVu Sans Book 16" (o qualsiasi altra cosa tu preferisca)
  • Impostare la larghezza di "rapporto schermo in base alla dimensione del carattere" su 60; questo è dovuto ai programmi sulla larghezza del terminale, ma non lo fai, stai usando solo il 50% delle dimensioni dello schermo. Il valore migliore per questo dipende dal carattere utilizzato, quindi prova un po '...

La schermata di configurazione del tasto destro del mouse sembra un po 'traballante, ho anche modificato il mio ~/.mlterm/vaafontpoiché questo non è stato aggiornato:

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

E il mio ~/.mlterm/main(queste sono le impostazioni che ho impostato sopra, oltre ad alcune preferenze personali):

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

Ci sono alcuni artefatti che ci si aspetta, ma scrivere e-mail o post come questo sembra funzionare abbastanza bene!

Ho creato un alias nella mia shell per questo:

alias pvim mlterm -e vim

Ho anche creato una piccola funzione per rimuovere la maggior parte dei Chrome dell'interfaccia utente:

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

C'è anche goyo.vim che va più o meno allo stesso modo, ma non ha funzionato molto bene per me (troppa confusione con i margini). YMMV però.


Ho dovuto usare Ctrl + RightClick, non al centro di Ubuntu 18.04 con MLTerm dai repository di Ubuntu. Altrimenti ottengo solo una strana cornice quadrata attorno al cursore del mouse e nessuna finestra di dialogo.
Ruslan,

Sembra divertente (e inutilizzabile) quando si utilizza la divisione verticale: screenshot . Ma ci si aspetta da una soluzione basata su terminali.
Ruslan,

7

Sicuramente non è supportato in GUI Vim, e sarei sorpreso se ci fossero più di una manciata di emulatori di terminali che supportano i caratteri proporzionali nel modo in cui speri: romperebbe troppe cose standard per cui i terminali sono Usato. Poiché così tante parti di Unix e altri ambienti da riga di comando presumono caratteri a spaziatura fissa, questo tipo di display non può essere utilizzato come terminale per scopi generici, quindi lo sviluppatore del terminale avrebbe dovuto svolgere un lavoro aggiuntivo per un piccolo vantaggio.

Tuttavia, esiste almeno un emulatore di Terminale implementato utilizzando le tecnologie Web ( Ajaxterm ) e poiché utilizza HTML / CSS per il rendering, è possibile far sì che utilizzi un font proporzionale utilizzando CSS. CJS Hayward ha fatto proprio questo, ma richiede l'utilizzo di un browser molto vecchio.

Se dovessi gestire Vim in un simile terminale, otterrai ciò che stai chiedendo; preparati a un hijinx stravagante quando usi qualsiasi funzione basata su colonne. (ad es j. k, modalità visuale a blocchi, o 'colorcolumn'opzione)

AGGIORNAMENTO Come sottolinea Carpetmoker, un interrogatore originale , in un commento , Emacs ha un supporto dei caratteri proporzionale adeguato e include anche un emulatore di terminale ( M-x term), all'interno del quale è possibile eseguire Vim. Gli appassionati di font proporzionali dedicati potrebbero anche voler esaminare il male di Emacs per ottenere un'esperienza simile a Vim all'interno di Emacs.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.