LINUX.ORG.RU

gvim + xft

 , , ,


2

2

Друзья, представляю вам свою реализацию рендеринга через XFT в gvim.

Долгое время я пользовался vim'ом в терминале urxvt+xft, и меня всё устраивало, кроме невозможности выбрать полноцветные цветовые схемы и скорости отрисовки сложной подсветки кода в php. Поэтому я начал рассматривать другие варианты запуска vim, среди которых были gvim+gtk1, gvim+gtk2, gvim+motif. Резултаты следующие:

gvim+gtk1 - работает быстро, нет рендеринга со сглаживанием, не поддерживается начиная с vim 7.3

gvim+gtk2 - есть рендеринг со сглаживанием, текст рисуется через pango, который тормоз. Работать в этом очень неуютно.

gvim+motif - работает быстро, поддерживается, нет рендеринга со сглаживанием.

Поскольку удовлетворительного варианта не нашлось, было решено закатать рукава и всё сделать самому. Допиливать неподдерживаемый gvim+gtk1 нет смысла, допиливать gvim+gtk2 было бы очень сложно, потому что для pango там отдельная большая ветка кода, и переписывать её не в кайф. А вот допиливать gvim+motif оказалось легко и приятно, потому что библиотека libxft сделана с оглядкой на поддержку X core fonts.

В результате допиливания получилось то, что видно на скриншоте. Код брать здесь http://code.google.com/r/thesameml-vim-xft/source/checkout собирать как обычный gvim только с --enable-gui=motif --enable-xft. Шрифт устанавливать так ":set guifont=Monospace-10". Диалог выбора шрифта я ещё не портировал, потому что там чёртов Xt, в котором ничего не понятно.

Скорость отрисовки оказалась средней между pango и x core fonts.

Кроме того, оказалось, что в тормозах отрисовки виноват не только движок рендеринга, но и подсветка синтаксиса, которая для php сделана исключительно тормозно. Поэтому для тех, кому это может пригодиться, вот ускоренная упрощённая подсветка: https://gist.github.com/4610024

Код: http://code.google.com/r/thesameml-vim-xft/source/checkout

Подсветка php: https://gist.github.com/4610024

>>> Просмотр (1190x680, 91 Kb)

★★★★

Проверено: JB ()
Последнее исправление: thesame (всего исправлений: 1)

кроме невозможности выбрать полноцветные цветовые схемы

It's hard to find colorschemes for terminal Vim.  Most colorschemes are 
written to only support GVim, and don't work at all in terminal Vim. 

This plugin makes GVim-only colorschemes Just Work in terminal Vim, as long 
as the terminal supports 88 or 256 colors - and most do these days.  This 
usually requires no user interaction (but see the help for what to do if 
things don't Just Work).  After getting this plugin happily installed, any 
time you use :colorscheme it will do its magic and make the colorscheme Just 
Work. 

http://www.vim.org/scripts/script.php?script_id=2390
https://github.com/godlygeek/csapprox

science ★★☆
()
Ответ на: комментарий от science

Эти скрипты в лучшем случае работают кое-как, а в типичном случае несут ахинею. У меня было много надежд на них, но увы.

thesame ★★★★
() автор топика
Ответ на: комментарий от beastie

нет пока, сначала нужно таки портировать диалог выбора шрифта

thesame ★★★★
() автор топика

Круто, конечно. Но все таки существует полно годнейших тем для консольной версии - lucius, molokai, zenburn, twilight, jellybeans...И проще, наверное, было бы допилить любую из них.

kovrik ★★★★★
()
Ответ на: комментарий от kovrik

Даже если так, некомфортно ощущать себя ограниченным в выборе.

thesame ★★★★
() автор топика
Ответ на: комментарий от thesame

Эти скрипты в лучшем случае работают кое-как, а в типичном случае несут ахинею. У меня было много надежд на них, но увы.

Если не секрет, на какой или каких colorschemes не работал CSApprox? хочу проверить, интересно стало, т.к. какую не посмотрю - повторяет практически точно гвимовскую тему. Если помните конечно.

Ну а по сабжу: круто, наверное удобно для тех, кто пользуется gvim'ом

science ★★☆
()
Ответ на: комментарий от science

да чёто он у меня вообще не срабатывает

thesame ★★★★
() автор топика

круто. но считаю, что сглаживание в коде не нужно, использую gvim+motif+terminus

vvviperrr ★★★★★
()
Ответ на: комментарий от science

Слушай, если у тебя оно работает, скажи, как завести? Я поставил сам скрипт, прописал t_Co=256, но :colorscheme как рисовал херню, так и продолжает. И в urxvt и в xterm. Куда копать?

thesame ★★★★
() автор топика
Ответ на: комментарий от thesame

его не нужно заводить, даже из описания говорится, что работает из коробки сразу после установки - при условии - что у тебя действительно настроен терминал на 256 цветов и соотв. в .vimrc стоит set t_Co=256

вот например зацени, тема taqua, (слева направо): http://ompldr.org/vaDc0OQ

vim без CSApprox | vim с CSApprox | gvim

если глянуть в тему taqua.vim, видно что нигде значения для cterm не прописаны, т.е. CSAprox работает отлично, не на 100.00% конечно, но очень близко к оригиналу.
Но работает, фактически, примерно с 8/10 тем, некоторые цвета всё-же не поддерживает (которые невозможно даже близко точно показать в 256ц. палитре)

а как ты его устанавливал? (рекомендую pathogen)

science ★★☆
()
Последнее исправление: science (всего исправлений: 1)
Ответ на: комментарий от science

Спасибо, сработало.

После установки CSApprox с удовольствием обнаружил, что моя реализация всё-таки быстрее чем vim+urxvt+xft, и что csapprox таки заметно промахивается мимо цветов. tango2 прям ваще не похож. И ещё после применения csapprox слетают жирный/курсив. Так что всё равно мой труд профитный.

thesame ★★★★
() автор топика

Спасибо друг! Сейчас поставим.

crono
()

Мужик - уже писали?

Однако я жуть как не переношу сглаживание шрифтов, и если текст в браузере читать еще более-менее, когда глаза не напрягаются, то писать код, и контролировать каждую строку кода, уже напрягая глаза - они слезятся, от абсолютно любого мыла в шрифтах. Единственный выход отключить сглаживание совсем, что я и делаю.

Использую шрифт Fixedsys (тот, что из оффтопика), в notepadleafpad, и 9x15b для консольного vim.

Вы конечно молодец, но на скриншоте эталонное не нужно: gvim, сглаживание моноширинных шрифтов, motif, декорации окон, светлая тема vim. :3

Spoofing ★★★★★
()

Выглядит съедобно, надо попробовать.

Sharezil
()

все это конечно офигенно круто.. но не проще ли было просто найти 1 нормальную тему для консольного vim? :)

я уже несколько лет пользуюсь одной и той же, главное найти такую, от которой не устаешь.

waker ★★★★★
()

есть идея для твоего следующего проекта:

добавить в xterm поддержку 24битного цвета, и пропатчить vim соотв, чтобы цветовые схемы от gvim работали :)

waker ★★★★★
()

А отправить патч в апстрим не думал?

gloomy ★★
()

Мужик!

Вот какие пользователи нужны линуксу! А не хомячьё с претензиями.

geekless ★★
()
Ответ на: комментарий от waker

это на порядок сложнее, и не нужно

thesame ★★★★
() автор топика
Ответ на: комментарий от waker

оказалось, что моя реализация быстрее чем urxvt+xft, плюс всякие плюшки от gui. Так что, может было бы и проще, но не так спортивно.

thesame ★★★★
() автор топика
Ответ на: комментарий от thesame

казалось, что моя реализация быстрее чем urxvt+xft, плюс всякие плюшки от gui.

ну да, я читал выше. мне просто в терминале удобнее, не из-за скорости.

waker ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.