¿Puedo usar una fuente no monoespaciada en Vim o gVim?

32

¿Hay alguna forma de usar una fuente que no sea monoespacio en vimo gvim?

Intenté cambiar la fuente de gVim con:

:set guifont=Dejavu\ Serif\ 12

Pero esto me da algunos resultados bastante feos:

ingrese la descripción de la imagen aquí

Obtengo los mismos resultados si uso el menú (Editar -> Seleccionar fuente)

: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.

¿Entonces creo que los resultados anteriores cuentan como "no se ve mejor"? ¿Se puede mejorar de alguna manera?

También intenté configurar una fuente no monoespacial en mi terminal ( xterm), pero eso parece tener aproximadamente el mismo efecto:

ingrese la descripción de la imagen aquí

No me importa usar un emulador de terminal diferente para este por cierto.

Martin Tournoij
fuente
parece que ya ha sido respondido aquí: superuser.com/questions/357571/…
guido
1
@guido No veo una respuesta allí ... La respuesta más votada es solo una explicación de qué son las fuentes (no una respuesta), y las otras "respuestas" son aún peores ...
Martin Tournoij

Respuestas:

25

Encontré mlterm, lo que apoya esto. Aparte del terminal incorporado de Emacs (término Mx), este es el único terminal que he encontrado que admite esto (he probado unos 15-20 diferentes).
Descubrí que mltermfunciona mejor que Emacs debido a la configuración de la relación de pantalla, y también evita tener que ejecutar Vim dentro de una sesión de Emacs (ni siquiera estoy seguro de que esté legalmente permitido).

Captura de pantalla (se ve fea a menos que la abra a tamaño completo debido a la escala en el navegador):

ingrese la descripción de la imagen aquí

Sin embargo, requiere un poco de amor de configuración. Después de comenzar, presione Ctrl+ clic central en cualquier lugar, esto abrirá la pantalla de configuración. Establezco estas opciones

En la pestaña Fuente:

  • Marque "Anti-alias"
  • Marque "Ancho de columna variable"; esta es la "característica clave" que falta en la mayoría de los otros emuladores de terminal
  • Establezca la fuente en "DejaVu Sans Book 16" (o lo que prefiera)
  • Establezca el ancho de "relación de pantalla contra tamaño de fuente" en 60; esto se aplica a los programas sobre el ancho del terminal, si no lo haces, solo estás usando ~ 50% del tamaño de la pantalla. El mejor valor para esto depende de la fuente utilizada, así que experimente un poco ...

La pantalla de configuración del botón derecho parece un poco escasa, también edité mi ~/.mlterm/vaafontya que no se actualizó:

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

Y mi ~/.mlterm/main(estos son los ajustes que configuré anteriormente, más algunas preferencias personales):

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

Hay algunos artefactos, que son de esperar, pero escribir correos electrónicos o publicaciones como esta, ¡parece funcionar bastante bien!

Creé un alias en mi shell para esto:

alias pvim mlterm -e vim

También creé una pequeña función para eliminar la mayoría del cromo de la interfaz de usuario:

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

También hay goyo.vim, que es más o menos lo mismo, pero eso no funcionó muy bien para mí (demasiada burla con los márgenes). YMMV sin embargo.

Martin Tournoij
fuente
Tuve que usar Ctrl + RightClick, no en el medio en Ubuntu 18.04 con MLTerm desde los repositorios de Ubuntu. De lo contrario, solo obtengo un marco cuadrado extraño alrededor del cursor del mouse y no hay diálogo.
Ruslan
Parece divertido (e inutilizable) cuando usa división vertical: captura de pantalla . Pero eso es de esperar de una solución basada en terminal.
Ruslan
7

Definitivamente no es compatible con GUI Vim, y me sorprendería si hubiera más de un puñado de emuladores de terminal que admitan fuentes proporcionales de la manera que espera: rompería muchas de las cosas estándar para las que están los terminales. usado. Como muchas partes de Unix y otros entornos de línea de comandos suponen fuentes monoespaciadas, este tipo de pantalla no se puede usar como un terminal de propósito general, por lo que el desarrollador del terminal tendría que haber realizado un trabajo adicional para un pequeño beneficio.

Sin embargo, existe al menos un emulador de Terminal que se implementa usando tecnologías web ( Ajaxterm ), y como esto usa HTML / CSS para la representación, es posible hacer que use una fuente proporcional usando CSS. CJS Hayward ha hecho exactamente esto, pero requiere el uso de un navegador muy antiguo.

Si tuviera que ejecutar Vim en tal terminal, obtendría lo que está pidiendo; solo prepárate para el loco hijinx cuando uses cualquier característica basada en columnas. (p j. ej . k, modo visual en bloque o la 'colorcolumn'opción)

ACTUALIZACIÓN Como el autor de la pregunta original Carpetsmoker señala en un comentario , Emacs tiene un soporte de fuente proporcional adecuado y también incluye un emulador de terminal ( M-x term), dentro del cual puede ejecutar Vim. A los entusiastas dedicados de fuentes proporcionales también les gustaría mirar el Evil de Emacs para obtener una experiencia similar a Vim dentro de Emacs.

Rico
fuente