Чи можу я використовувати немонопольний шрифт у Vim чи gVim?


32

Чи є спосіб використання шрифту, який не є монопространством, у будь-якому vimабо gvim?

Я спробував змінити шрифт для gVim за допомогою:

:set guifont=Dejavu\ Serif\ 12

Але це дає мені досить потворні результати:

введіть тут опис зображення

Я отримую однакові результати, якщо використовую меню (Правка -> Вибір шрифту)

:help guifont каже:

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.

Тож я вважаю, що наведені вище результати вважаються "не найкраще виглядати"? Чи можна це якось покращити?

Я також спробував встановити немоноспеціальний шрифт у своєму терміналі ( xterm), але, схоже, він має приблизно такий же ефект:

введіть тут опис зображення

Я не проти використовувати інший емулятор терміналу для цього btw.


Здається, тут уже відповіли: superuser.com/questions/357571/…
guideo

1
@guido Я не бачу відповіді там ... Найбільш схваленою відповіддю є лише пояснення, що таке шрифти (не відповідь), а інші "відповіді" ще гірші ...
Martin Tournoij,

Відповіді:


25

Я знайшов mlterm, що це підтримує. Окрім вбудованого терміналу Emacs (термін Mx), це єдиний знайдений термінал, який підтримує це (я пробував приблизно 15-20 різних).
Я встановив, що mltermпрацює краще, ніж Emacs завдяки налаштуванням співвідношення сцени, і ви також уникаєте необхідності запускати Vim у сеансі Emacs (я навіть не впевнений, що це дозволено законодавчо).

Знімок екрана (це виглядає некрасиво, якщо ви не відкриєте його в повному розмірі через масштабування в браузері):

введіть тут опис зображення

Однак для цього потрібна певна настройка любові. Після запуску натисніть Ctrl+ середній клік будь-де, це відкриє екран налаштування. Я встановлюю ці параметри

На вкладці Шрифт:

  • Поставте прапорець "Анті-псевдонім"
  • Поставте прапорець "Змінна ширина стовпця"; це "ключова особливість", відсутня у більшості інших емуляторів терміналів
  • Встановіть шрифт на "DejaVu Sans Book 16" (або що завгодно більше)
  • Встановити ширину "співвідношення екрана проти розміру шрифту" на 60; це стосується програм про ширину терміналу, ви цього не робите, ви використовуєте лише ~ 50% розміру екрана. Найкраще значення для цього залежить від використовуваного шрифту, тому експериментуйте трохи ...

Екран налаштування правою кнопкою миші здається делікатним, я також відредагував свій, ~/.mlterm/vaafontоскільки він не оновлювався:

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

І мої ~/.mlterm/main(це налаштування, які я встановив вище, а також деякі особисті налаштування):

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

Є деякі артефакти, яких можна очікувати, але написання електронних листів або таких публікацій, схоже, працює досить добре!

Я створив псевдонім у своїй оболонці для цього:

alias pvim mlterm -e vim

Я також створив невелику функцію для видалення більшості хромування інтерфейсу користувача:

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

Є також goyo.vim, який іде приблизно так само, але це не спрацювало дуже добре для мене (надто багато роздумів з маржами). YMMV, хоча.


Мені довелося використовувати Ctrl + RightClick, а не посеред Ubuntu 18.04 з MLTerm від репостів Ubuntu. Інакше я отримую лише якийсь дивний квадратний кадр навколо курсору миші та жодного діалогового вікна.
Руслан

Виглядає смішно (і непридатно), коли ви використовуєте вертикальний розкол: скріншот . Але цього можна очікувати від термінального рішення.
Руслан

7

Це точно не підтримується в GUI Vim, і я буду здивований, якби було більше ніж декілька емуляторів терміналів, які підтримують пропорційні шрифти так, як ви сподіваєтесь: це зламає занадто багато стандартних речей, для яких є термінали б / в. Оскільки так багато частин Unix та інших середовищ командного рядка передбачають одноразові шрифти, цей тип відображення не може використовуватися як термінал загального призначення, тому розробнику терміналу довелося б провести додаткову роботу для невеликої користі.

Однак існує принаймні один емулятор термінала, реалізований за допомогою веб-технологій ( Ajaxterm ), і оскільки для рендерингу використовується HTML / CSS, можливо, змусити його використовувати пропорційний шрифт за допомогою CSS. CJS Hayward зробив саме це, але це вимагає використання дуже старого браузера.

Якби Ви запускали Vim в такому терміналі, ви отримали б те, що просите; просто будьте готові до нерозумного хижинсу, коли ви використовуєте будь-які функції на основі стовпців. (наприклад j, kвізуальний режим блочно або 'colorcolumn'варіант)

ОНОВЛЕННЯ Як в коментарі вказує оригінальний запитувач Carpetsmoker , Emacs має належну пропорційну підтримку шрифту, а також включає емулятор терміналу ( M-x term), усередині якого можна запустити Vim. Любителі виділених пропорційних шрифтів можуть також хотіти заглянути в Emacs's Evil, щоб отримати Vim-подібний досвід у Emacs.


4

Пропорційні шрифти підтримуються в Oni , Neovim GUI. Для кращих результатів використовуйте рендерінг "webgl".

 "editor.renderer": "webgl"

Дивіться також https://github.com/onivim/oni/isissue/2359


Виглядає цікаво! На жаль, я не можу змусити цей проект запуститись, і я не
встигаю

Є заздалегідь створені архіви на веб- сайті github.com/onivim/oni/releases .
Джастін М. Кіз
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.