Поддержка 24-bit цветов в терминале в связке ssh + tmux + neovim

vk_uenhifakqah-zfbqxvuivoka.png

На windows я всегда использовал SecureCRT для работы по ssh и горя не знал. Но тут мне в голову стукнуло, что надо попробовать 24-битный терминал и поработать по ssh, используя красивую тему для vim на удаленном сервере.

Шаг 1. Программа-терминал с поддержкой 24-bit


К сожалению, на данный момент SecureCRT не поддерживает 24-битный экран, висит только тред на форуме, что поддержку добавят в отдаленном светлом будущем.

Поэтому я пошел на поиски и нашел вот такой гит на эту тему. Там список разных терминалов для Linux / Mac / Windows с поддержкой True Color. Можно перебирать, смотреть, что нравится. Я остановился на MobaXterm для windows, он чем-то похож на привычный для меня SecureCRT, даже конфиг от SecureCRT подхватывает. Есть портабельная версия, скачать можно отсюда:

mobaxterm.mobatek.net

После запуска, если наберете команду:

lscolors


то увидите тестовую табличку как на скриншоте в начале статьи.

Шаг 2. NeoVim


Дальше поставил neovim на удаленной машине, к которой я собирался конектится по ssh, используя терминал от MobaXterm.

Вот инструкция по установке neovim:

github.com/neovim/neovim/wiki/Installing-Neovim

И поставил vim-plug:

github.com/junegunn/vim-plug

Шаг 3. Тема challenger_deep с поддержкой True Color


tlgfifnvlx3a3m3phwxlhhdvfru.png

l6vd9ru5pfuakgntvvjvbl2li3g.png

Я выбрал тему challenger_deep с поддержкой True Color, лично мне понравилась. Но их много разных, можно подобрать по вкусу, только надо смотреть, чтобы была поддержка True Color.

И самая минимальная конфигурация для neovim:

call plug#begin('~/.local/share/nvim/plugged')
Plug 'vim-airline/vim-airline'
Plug 'itchyny/lightline.vim'
Plug 'challenger-deep-theme/vim'
call plug#end()

syntax on
filetype on
filetype plugin on
filetype plugin indent on
set termguicolors
colorscheme challenger_deep


Файл ~/.config/nvim/init.vim — это аналог .vimrc для классического vim.

Дальше:

:PlugInstall


И, собственно, все должно стать похожим на скриншот.

Шаг 4. Поддержка цветов в tmux


По умолчанию, если запустить сессию tmux (аналог screen), то цвета поблекнут и вернутся в обычное скучное русло. Вот как можно это победить и вернуть цветовую гамму.

Создаем файл ~/xterm-24bit.terminfo со следующим содержимым:


xterm-24bit|xterm with 24-bit direct color mode,
   use=xterm-256color,
   sitm=\E[3m,
   ritm=\E[23m,
   setb24=\E[48;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%dm,
   setf24=\E[38;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%dm,


Убедитесь, что есть пустая строка в конце файла.

Запускаем команду:


tic -x -o ~/.terminfo xterm-24bit.terminfo


И далее:

export TERM=xterm-24bit


Ее можно засунуть в .bashrc
В конфиг .tmux.conf добавляем:


set -g default-terminal "xterm-24bit"
set -g terminal-overrides ',xterm-24bit:Tc'


Запускаем tmux и enjoy!

P.S.


Я не пробовал сделать тоже самое в классическом vim и не пробовал сделать это в screen, вместо tmux. Если у кого-то работает, напишите, плз.

© Habrahabr.ru