Pull to refresh

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

Reading time 2 min
Views 11K


На 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






Я выбрал тему 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!

Поддержка 24-bit цветов в screen


Пришлось собирать из исходников. Примерно вот в таком ключе:


yum install ncurses-devel
yum install pam-devel
yum install texi2html texinfo 
git clone https://git.savannah.gnu.org/git/screen.git


В папке src

./autogen.sh
./configure & config.status
make && make install


screen --version
Screen version 4.99.0 (build on 2020-01-08 20:01:25) 


Tags:
Hubs:
+11
Comments 2
Comments Comments 2

Articles