Статьи → Настройки хоста → Из обычного терминала в мощный инструмент
Настройки хоста Актуальная

Из обычного терминала в мощный инструмент

Andrew ⚡ Администратор
(обновлено 01.07.2026)
1263 v1.0

Выжимаем максимум из стандартной консоли Astra Linux!


Давайте представим следующую картину: у нас в распоряжении имеется серьезная железка, которая тянет огромное количество задач, но при этом на ней отсутствует графическая оболочка, а доступен исключительно консольный интерфейс. Безусловно, существует стандартный набор консольных утилит, представляющих собой определенный фундамент знаний для любого администратора. Но что делать, если стоит цель повысить личную продуктивность и ускорить рабочие процессы в разы? В этом материале я продемонстрирую процесс трансформации стандартного терминала в полноценный комбайн, подходящий как для написания кода, так и для повседневного администрирования. Весь цикл будет разделен на два выпуска:

  • Первый выпуск - базовая установка и поверхностный обзор инструментов;
  • Второй выпуск - продвинутые сценарии использования и дополнительные фишки.

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

Тестовый стенд:
  • entnet-s03 (условно мощный сервер, далее будем называть его СЕРВЕР)
  • наш ПК (рабочая машина администратора, далее ХОСТ)

НАВИГАЦИЯ ПО СТАТЬЕ

  1. Установка zsh
  2. Инсталляция OhMyZsh
  3. Подключение шрифтов
  4. Тонкая настройка vim
  5. Сборка neovim
  6. Процедура удаления neovim
  7. Установка cargo
  8. Инсталляция вспомогательных утилит
    1. ripgrep
    2. lsd
    3. bat
    4. fd-find
    5. zoxide
    6. fzf
    7. LazyVim
    8. superfile
    9. fastfetch
    10. kitty
  9. Практические примеры
  10. Возникающие нюансы

Процесс установки

0. Начнем с фундамента: развернем на нашем СЕРВЕРЕ и ХОСТЕ оболочку zsh вместе с ohmyzsh (подробнее в первом пункте).

В мире Linux распространено несколько командных оболочек: bash, zsh, fish. В Astra Linux из коробки поставляется bash. В свою очередь, zsh представляет собой эволюционное развитие bash, предоставляющее заметно более широкий функционал.

Подключаемся по SSH к нашему СЕРВЕРУ

1. (СЕРВЕР + ХОСТ) Определяем текущую оболочку

echo $SHELL

Если вывод показывает bash, то инсталлируем zsh. В противном случае пропускаем данный шаг и двигаемся дальше.

sudo apt update

sudo apt install -y zsh

zsh --version

Как видно из вывода, zsh успешно установлен, и его версия равна 5.9. Теперь наша задача сделать так, чтобы эта оболочка запускалась по умолчанию вместо bash.

chsh -s /usr/bin/zsh

Вводим пользовательский пароль и перелогиниваемся на СЕРВЕР.

При следующем входе система встретит нас диалоговым окном с предложением выбрать один из вариантов действия:

  • Q) Завершить сеанс без каких-либо изменений, оставив настройку на потом
  • 0) Покинуть меню и создать пустой .zshrc (конфигурационный файл оболочки, аналог .bashrc)
  • 1) Продолжить работу и перейти к основному меню конфигурации
  • 2) Инициализировать .zshrc стандартным шаблоном

Нас интересует вариант 0

2. Развертывание Oh My Zsh (надстройка над zsh)

Запускаем официальный инсталлятор Oh My Zsh одной командой

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

На данном этапе Oh My Zsh заметил, что файл .zshrc уже присутствует в системе (мы его создали на предыдущем шаге, выбрав нулевой вариант, и там появился пустой файл с комментариями).

  • Доступные варианты ответа:
    • Y (Yes) - выполнить перезапись файла
      • Прежний .zshrc сохранится с расширением .zshrc.pre-oh-my-zsh (на случай отката)
      • Будет сгенерирован свежий .zshrc с оптимальными параметрами для Oh My Zsh
    • n (No) - отказаться от перезаписи
      • Исходный .zshrc останется в неприкосновенности

Если у вас уже существует собственный конфиг, придется вручную интегрировать в него следующие директивы, которые подсвечены в выводе инсталлятора:

export ZSH="$HOME/.oh-my-zsh"
ZSH_THEME="robbyrussell"
plugins=(git)

source $ZSH/oh-my-zsh.sh

Как можно заметить, приглашение командной строки преобразилось, и Oh My Zsh успешно развернут. Теперь проделываем абсолютно идентичные действия на ХОСТЕ.

Убеждаемся, что на ХОСТЕ и СЕРВЕРЕ функционирует нужная оболочка совместно с ohmyzsh

3. (ХОСТ) Инсталляция шрифтов

На локальной машине потребуется установить специализированные шрифты. Поскольку мы работаем через SSH-сессию, инсталлировать их на СЕРВЕР не имеет смысла, ведь рендеринг происходит именно на стороне клиента. Данные шрифты критически важны для корректного отображения иконок в современных утилитах.

Переходим на портал nerdfonts.com

Затем кликаем по кнопке Downloads

В моем случае выбор пал на гарнитуру Lekton Nerd Font

Скачиваем архив и последовательно выполняем команды* (не забывайте адаптировать пути под свой скачанный архив со шрифтами!!)

Вариант инсталляции для конкретного пользователя (ниже будет показан вариант для всей системы).

unzip Lekton.zip -d ~/Загрузки/lekton-nerd

mkdir -p ~/.local/share/fonts

cp ~/Загрузки/lekton-nerd/*.ttf ~/.local/share/fonts/
либо, если архив содержит .otf:
cp ~/Загрузки/lekton-nerd/*.otf ~/.local/share/fonts/

Актуализируем шрифтовой кэш
fc-cache -fv

Удостоверимся, что гарнитура появилась в системе

Параллельно можно сменить шрифт и в настройках штатной консоли

!!!(СИСТЕМНАЯ ИНСТАЛЛЯЦИЯ ДЛЯ ВСЕХ УЧЕТНЫХ ЗАПИСЕЙ)

sudo mkdir -p /usr/local/share/fonts/lekton-nerd

sudo cp ~/Загрузки/lekton-nerd/*.ttf /usr/local/share/fonts/lekton-nerd/

sudo fc-cache -fv

Процедура удаления гарнитуры (если возникнет необходимость)

Для пользовательского варианта:
rm ~/.local/share/fonts/*Lekton*.ttf
fc-cache -fv

Для общесистемного:
sudo rm /usr/local/share/fonts/lekton-nerd/*Lekton*.ttf
sudo fc-cache -fv

4. Конфигурируем vim (СЕРВЕР + ХОСТ)

Чтобы обеспечить функционирование мыши в TTY (чистая консоль без иксов), может понадобиться пакет gpm:
sudo apt install gpm
sudo systemctl enable gpm

Записываем конфигурацию vim

vim ~/.vimrc

" ============================================================================
" Vim config для Astra Linux - Arctic Blue theme
" Автор: Andrew
" ============================================================================
" === Базовые настройки ===
set nocompatible
set encoding=utf-8
set fileencodings=utf8,cp1251
set termencoding=utf-8
set t_Co=256
" === Тема и шрифт ===
colorscheme arctic_blue
set guifont=Lekton\ Nerd\ Font\ Mono:h12  " Для GUI-версий (gVim) " МЕНЯЕМ НА СВОЙ ШРИФТ!!!
" === Интерфейс ===
set nu                    " Нумерация строк
" set relativenumber        " Относительная нумерация (опционально)
set cursorline            " Подсветка текущей строки
set mouse=a               " Поддержка мыши
set mousehide             " Скрывать курсор мыши при вводе
set ruler                 " Показывать позицию курсора
set showmatch             " Подсвечивать парные скобки
set showtabline=1         " Показывать табы при необходимости
set novisualbell
set t_vb=                 " Отключить звуковой/визуальный сигнал
set backspace=indent,eol,start
set whichwrap+=<,>,[,]
" === Отступы (универсальные 4 пробела) ===
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab             " Заменять табы на пробелы
set smarttab
set autoindent
set smartindent
" === Перенос строк ===
set wrap
set linebreak
set breakindent
" === Буфер и файлы ===
set hidden                " Разрешить переключение между буферами без сохранения
set nobackup
set noswapfile
set clipboard=unnamed     " Использовать системный буфер обмена
set undofile              " Сохранять историю отмен
set undodir=~/.vim/undodir
" === Поиск ===
set ignorecase
set smartcase
set incsearch
set hlsearch
" === Подсветка синтаксиса ===
syntax on
filetype plugin indent on
let python_highlight_all = 1
" === Автокоманды для Python и Bash ===
" Убираем пробелы в конце строк перед сохранением
autocmd BufWritePre *.py,*.bash,*.sh normal m`:%s/\s\+$//e ``
" Умные отступы для Python
autocmd FileType python setlocal smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class
" Умные отступы для Bash
autocmd FileType sh setlocal smartindent cinwords=if,then,else,elif,fi,case,esac,for,while,do,done,function
" === Навигация по буферам ===
nnoremap <C-N> :bnext<CR>
nnoremap <C-P> :bprev<CR>
" === Быстрое сохранение и выход ===
nnoremap <leader>w :w<CR>
nnoremap <leader>q :q<CR>
nnoremap <leader>q! :q!<CR>
" === Vundle (если используешь) ===
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'tpope/vim-fugitive'
Plugin 'tpope/vim-surround'
Plugin 'flazz/vim-colorschemes'
call vundle#end()
filetype plugin indent on

Обязательно не забудьте подставить название своего шрифта

set guifont=Lekton\ Nerd\ Font\ Mono:h12 " Для GUI-версий (gVim) " МЕНЯЕМ НА СВОЙ ШРИФТ!!!

Поскольку в конфигурации мы ссылаемся на кастомную цветовую схему, ее необходимо создать вручную.

Для этих целей формируем каталог colors и непосредственно файл arctic_blue.vim

mkdir -p ~/.vim/colors
vim ~/.vim/colors/arctic_blue.vim

" Vim color file: Arctic Blue
" Автор: Andrew | Синяя тема для комфортной работы
" Совместимо: Vim 8+, Neovim 0.5+
set background=dark
highlight clear
if exists("syntax_on")
syntax reset
endif
let g:colors_name = "arctic_blue"
" === Базовые цвета ===
hi Normal       guifg=#c8d3e5 guibg=#0a1628 gui=NONE ctermfg=252 ctermbg=234 cterm=NONE
hi Cursor       guifg=#0a1628 guibg=#7aa2f7 gui=NONE ctermfg=234 ctermbg=111 cterm=NONE
hi CursorLine   guibg=#162640 gui=NONE ctermbg=236 cterm=NONE
hi CursorColumn guibg=#162640 gui=NONE ctermbg=236 cterm=NONE
" === Выделение текста ===
hi Visual       guifg=#ffffff guibg=#1b3a57 gui=NONE ctermfg=231 ctermbg=24 cterm=NONE
hi VisualNOS    guifg=#c8d3e5 guibg=#1b3a57 gui=NONE ctermfg=252 ctermbg=24 cterm=NONE
hi Search       guifg=#0a1628 guibg=#ffc777 gui=NONE ctermfg=234 ctermbg=221 cterm=NONE
hi IncSearch    guifg=#0a1628 guibg=#4fd6be gui=NONE ctermfg=234 ctermbg=79 cterm=NONE
" === Синтаксис ===
hi Comment      guifg=#6272a4 gui=italic ctermfg=60 cterm=italic
hi Constant     guifg=#ffc777 gui=NONE ctermfg=221 cterm=NONE
hi String       guifg=#4fd6be gui=NONE ctermfg=79 cterm=NONE
hi Identifier   guifg=#7aa2f7 gui=NONE ctermfg=111 cterm=NONE
hi Function     guifg=#7aa2f7 gui=NONE ctermfg=111 cterm=NONE
hi Statement    guifg=#bb9af7 gui=NONE ctermfg=141 cterm=NONE
hi Keyword      guifg=#ff7b93 gui=NONE ctermfg=204 cterm=NONE
hi PreProc      guifg=#bb9af7 gui=NONE ctermfg=141 cterm=NONE
hi Type         guifg=#7dcfff gui=NONE ctermfg=117 cterm=NONE
hi Special      guifg=#ffc777 gui=NONE ctermfg=221 cterm=NONE
hi Error        guifg=#ff7b93 guibg=#0a1628 gui=reverse ctermfg=204 ctermbg=234 cterm=reverse
hi Todo         guifg=#ff7b93 guibg=NONE gui=bold ctermfg=204 cterm=bold
" === Интерфейс ===
hi LineNr       guifg=#4a5a78 guibg=#0f1a2b gui=NONE ctermfg=60 ctermbg=235 cterm=NONE
hi CursorLineNr guifg=#7aa2f7 guibg=#0f1a2b gui=bold ctermfg=111 ctermbg=235 cterm=bold
hi VertSplit    guifg=#1b3a57 guibg=#0a1628 gui=NONE ctermfg=24 ctermbg=234 cterm=NONE
hi StatusLine   guifg=#c8d3e5 guibg=#1b3a57 gui=bold ctermfg=252 ctermbg=24 cterm=bold
hi StatusLineNC guifg=#6272a4 guibg=#0f1a2b gui=NONE ctermfg=60 ctermbg=235 cterm=NONE
hi WildMenu     guifg=#0a1628 guibg=#7aa2f7 gui=bold ctermfg=234 ctermbg=111 cterm=bold
hi Pmenu        guifg=#c8d3e5 guibg=#162640 gui=NONE ctermfg=252 ctermbg=236 cterm=NONE
hi PmenuSel     guifg=#0a1628 guibg=#7aa2f7 gui=NONE ctermfg=234 ctermbg=111 cterm=NONE
hi PmenuSbar    guibg=#0f1a2b ctermbg=235
hi PmenuThumb   guibg=#4a5a78 ctermbg=60
" === Разное ===
hi MatchParen   guifg=#0a1628 guibg=#7aa2f7 gui=bold ctermfg=234 ctermbg=111 cterm=bold
hi ColorColumn  guibg=#0f1a2b ctermbg=235
hi SignColumn   guibg=#0a1628 ctermbg=234
hi Folded       guifg=#6272a4 guibg=#0f1a2b gui=NONE ctermfg=60 ctermbg=235 cterm=NONE
hi FoldColumn   guifg=#4a5a78 guibg=#0a1628 gui=NONE ctermfg=60 ctermbg=234 cterm=NONE
hi DiffAdd      guifg=#4fd6be guibg=NONE gui=reverse ctermfg=79 cterm=reverse
hi DiffChange   guifg=#ffc777 guibg=NONE gui=reverse ctermfg=221 cterm=reverse
hi DiffDelete   guifg=#ff7b93 guibg=NONE gui=reverse ctermfg=204 cterm=reverse
hi DiffText     guifg=#7aa2f7 guibg=NONE gui=reverse ctermfg=111 cterm=reverse
" === Поддержка 256 цветов в терминале ===
if &t_Co >= 256
hi Normal ctermfg=252 ctermbg=234
hi Cursor ctermfg=234 ctermbg=111
hi LineNr ctermfg=60 ctermbg=235
hi CursorLineNr ctermfg=111 ctermbg=235 cterm=bold
endif

Чтобы вся эта конструкция ожила (мы ведь указали в конфиге сторонние плагины, которые нужно загрузить), нам потребуется плагин-менеджер Vundle, через который мы и установим все зависимости.
mkdir -p ~/.vim/bundle

Склонируем репозиторий Vundle
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

Инсталлируем расширения, перечисленные в .vimrc
vim +PluginInstall +qall

По завершении процесса при открытии любого файла через vim не должно появляться сообщений об отсутствующих плагинах (как на скриншоте ниже).

При благоприятном исходе мы сразу оказываемся в рабочем окне vim

Точно такие же манипуляции производим и на ХОСТ машине.

5. Инсталляция neovim (СЕРВЕР + ХОСТ (по желанию)) для связки с LazyVim

Пакет neovim нам потребуется для полноценной работы LazyVim (продвинутая конфигурация Neovim) (чуть позже продемонстрирую, зачем это нужно, просто доверьтесь :)) Это нечто вроде полноценной IDE, только работающей в терминале и заточенной под neovim

Открываем официальный репозиторий lazyvim на github и изучаем раздел с зависимостями.

Смотрим на список: шрифты у нас уже стоят, git соответствует требованиям, однако пакет neovim в официальных репозиториях Astra Linux слишком древний и не удовлетворяет минимальным требованиям LazyVim. 😬

В репах астры на 2026 год neovim застыл на версии 0.7.2, поэтому придется прибегнуть к компиляции из исходного кода, но сперва установим все необходимые для сборки пакеты.

Если вам ранее не доводилось собирать софт из исходников, то это довольно увлекательный опыт 😀

Инсталлируем инструментарий для компиляции
sudo apt install xclip build-essential cmake gettext ninja-build lua5.1 liblua5.1-dev

Эти библиотеки и компиляторы нужны исключительно для сборки из исходников.

Заодно поставим cargo для экосистемы Rust. Поскольку львиная доля утилит, которые мы будем использовать далее, написаны именно на Rust, гораздо разумнее получать их через родной пакетный менеджер языка, нежели мучиться с ручной компиляцией (особенно учитывая, что в репозиториях Astra Linux этих утилит практически нет, за исключением разве что ncdu).

Загружаем и разворачиваем cargo

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Соглашаемся с условиями, нажав y
В процессе установки:
Жмем 1 (Proceed with installation)

По окончании инсталляции выполняем source, как нам и подсказывает сам установщик.

source $HOME/.cargo/env

обновляем инструментарий rust
rustup update stable
rustup default stable

Приступаем к сборке neovim из исходных кодов

Открываем официальную страницу neovim на github и находим раздел Install from source 

sudo mkdir -p /opt/sourcecode

sudo chown superuser:superuser /opt/sourcecode

cd /opt/sourcecode
git clone https://github.com/neovim/neovim.git
cd neovim

Если в перспективе вы планируете обновлять Neovim до свежих релизов, рекомендуется оставаться внутри директории с клонированным репозиторием, а не скачивать ZIP-архивы. Так вы сможете без проблем подтягивать обновления обычной командой git pull.

make CMAKE_BUILD_TYPE=RelWithDebInfo
sudo make install

CMAKE_BUILD_TYPE=RelWithDebInfo - данная опция соберет оптимизированную сборку, сохранив при этом отладочную информацию

По инсталляция по умолчанию выполняется в каталог /usr/local/ (исполняемый бинарник окажется в /usr/local/bin/nvim). Если требуется разместить файлы в иной локации, используйте параметр CMAKE_INSTALL_PREFIX.

Отлично! Теперь nvim у нас самой актуальной версии.

Если по каким-либо причинам возникнет потребность деинсталлировать nvim, ниже представлена пошаговая инструкция.

Деинсталляция Neovim, скомпилированного из исходников
При инсталляции через make install файлы физически копируются в файловую систему, но никак не регистрируются в системном пакетном менеджере (apt), поэтому удалить их одной командой apt remove не выйдет.

Метод 1: Воспользоваться целью uninstall (предпочтительный вариант)

Находясь в каталоге с исходным кодом, выполните:

cd /opt/sourcecode/neovim
sudo make uninstall
Эта инструкция удалит все инсталлированные файлы. Впрочем, цель uninstall присутствует не во всех Makefile. В проекте Neovim она, к счастью, реализована.

Метод 2: Ручная зачистка (если make uninstall не сработал)

Изначально Neovim размещается в /usr/local/. Можно точечно удалить исполняемый файл и сопутствующие данные:

Удаление бинарника
sudo rm /usr/local/bin/nvim

Удаление вспомогательных ресурсов (документация, библиотеки и прочее)
sudo rm -rf /usr/local/share/nvim
sudo rm -rf /usr/local/lib/nvim
sudo rm -rf /usr/local/man/man1/nvim.1

Теперь выполним конфигурацию neovim по аналогии с vim

Создадим директорию под кастомную тему arctic_blue.vim

mkdir -p ~/.config/nvim/colors
vim ~/.config/nvim/colors/arctic_blue.vim

Записываем туда саму тему

" Vim color file: Arctic Blue
" Автор: Andrew | Синяя тема для комфортной работы
" Совместимо: Vim 8+, Neovim 0.5+
set background=dark
highlight clear
if exists("syntax_on")
syntax reset
endif
let g:colors_name = "arctic_blue"
" === Базовые цвета ===
hi Normal       guifg=#c8d3e5 guibg=#0a1628 gui=NONE ctermfg=252 ctermbg=234 cterm=NONE
hi Cursor       guifg=#0a1628 guibg=#7aa2f7 gui=NONE ctermfg=234 ctermbg=111 cterm=NONE
hi CursorLine   guibg=#162640 gui=NONE ctermbg=236 cterm=NONE
hi CursorColumn guibg=#162640 gui=NONE ctermbg=236 cterm=NONE
" === Выделение текста ===
hi Visual       guifg=#ffffff guibg=#1b3a57 gui=NONE ctermfg=231 ctermbg=24 cterm=NONE
hi VisualNOS    guifg=#c8d3e5 guibg=#1b3a57 gui=NONE ctermfg=252 ctermbg=24 cterm=NONE
hi Search       guifg=#0a1628 guibg=#ffc777 gui=NONE ctermfg=234 ctermbg=221 cterm=NONE
hi IncSearch    guifg=#0a1628 guibg=#4fd6be gui=NONE ctermfg=234 ctermbg=79 cterm=NONE
" === Синтаксис ===
hi Comment      guifg=#6272a4 gui=italic ctermfg=60 cterm=italic
hi Constant     guifg=#ffc777 gui=NONE ctermfg=221 cterm=NONE
hi String       guifg=#4fd6be gui=NONE ctermfg=79 cterm=NONE
hi Identifier   guifg=#7aa2f7 gui=NONE ctermfg=111 cterm=NONE
hi Function     guifg=#7aa2f7 gui=NONE ctermfg=111 cterm=NONE
hi Statement    guifg=#bb9af7 gui=NONE ctermfg=141 cterm=NONE
hi Keyword      guifg=#ff7b93 gui=NONE ctermfg=204 cterm=NONE
hi PreProc      guifg=#bb9af7 gui=NONE ctermfg=141 cterm=NONE
hi Type         guifg=#7dcfff gui=NONE ctermfg=117 cterm=NONE
hi Special      guifg=#ffc777 gui=NONE ctermfg=221 cterm=NONE
hi Error        guifg=#ff7b93 guibg=#0a1628 gui=reverse ctermfg=204 ctermbg=234 cterm=reverse
hi Todo         guifg=#ff7b93 guibg=NONE gui=bold ctermfg=204 cterm=bold
" === Интерфейс ===
hi LineNr       guifg=#4a5a78 guibg=#0f1a2b gui=NONE ctermfg=60 ctermbg=235 cterm=NONE
hi CursorLineNr guifg=#7aa2f7 guibg=#0f1a2b gui=bold ctermfg=111 ctermbg=235 cterm=bold
hi VertSplit    guifg=#1b3a57 guibg=#0a1628 gui=NONE ctermfg=24 ctermbg=234 cterm=NONE
hi StatusLine   guifg=#c8d3e5 guibg=#1b3a57 gui=bold ctermfg=252 ctermbg=24 cterm=bold
hi StatusLineNC guifg=#6272a4 guibg=#0f1a2b gui=NONE ctermfg=60 ctermbg=235 cterm=NONE
hi WildMenu     guifg=#0a1628 guibg=#7aa2f7 gui=bold ctermfg=234 ctermbg=111 cterm=bold
hi Pmenu        guifg=#c8d3e5 guibg=#162640 gui=NONE ctermfg=252 ctermbg=236 cterm=NONE
hi PmenuSel     guifg=#0a1628 guibg=#7aa2f7 gui=NONE ctermfg=234 ctermbg=111 cterm=NONE
hi PmenuSbar    guibg=#0f1a2b ctermbg=235
hi PmenuThumb   guibg=#4a5a78 ctermbg=60
" === Разное ===
hi MatchParen   guifg=#0a1628 guibg=#7aa2f7 gui=bold ctermfg=234 ctermbg=111 cterm=bold
hi ColorColumn  guibg=#0f1a2b ctermbg=235
hi SignColumn   guibg=#0a1628 ctermbg=234
hi Folded       guifg=#6272a4 guibg=#0f1a2b gui=NONE ctermfg=60 ctermbg=235 cterm=NONE
hi FoldColumn   guifg=#4a5a78 guibg=#0a1628 gui=NONE ctermfg=60 ctermbg=234 cterm=NONE
hi DiffAdd      guifg=#4fd6be guibg=NONE gui=reverse ctermfg=79 cterm=reverse
hi DiffChange   guifg=#ffc777 guibg=NONE gui=reverse ctermfg=221 cterm=reverse
hi DiffDelete   guifg=#ff7b93 guibg=NONE gui=reverse ctermfg=204 cterm=reverse
hi DiffText     guifg=#7aa2f7 guibg=NONE gui=reverse ctermfg=111 cterm=reverse
" === Поддержка 256 цветов в терминале ===
if &t_Co >= 256
hi Normal ctermfg=252 ctermbg=234
hi Cursor ctermfg=234 ctermbg=111
hi LineNr ctermfg=60 ctermbg=235
hi CursorLineNr ctermfg=111 ctermbg=235 cterm=bold
endif

Следом записываем базовый конфиг для nvim
vim ~/.config/nvim/init.vim

" ============================================================================
" Neovim config для Astra Linux — Arctic Blue theme
" Автор: Andrew
" ============================================================================
" === Загружаем общие настройки из .vimrc (опционально) ===
" source ~/.vimrc
" === Базовые настройки ===
set encoding=utf-8
set fileencodings=utf8,cp1251
set t_Co=256
" === Тема ===
" Для Neovim в терминале: цвета берутся из арктик_блю.вим
" Для GUI (neovim-qt): можно задать шрифт
if has('gui_running') || has('nvim')
set guifont=Lekton\ Nerd\ Font\ Mono:h12
endif
colorscheme arctic_blue
" === Интерфейс ===
set number
"set relativenumber
set cursorline
set mouse=a
set ruler
set showmatch
set showtabline=1
set novisualbell
set t_vb=
set backspace=indent,eol,start
set whichwrap+=<,>,[,]
" === Отступы: 4 пробела для Python и Bash ===
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
set smarttab
set autoindent
set smartindent
" === Перенос строк ===
set wrap
set linebreak
set breakindent
" === Буфер и файлы ===
set hidden
set nobackup
set noswapfile
set clipboard=unnamed
set undofile
set undodir=~/.local/share/nvim/undodir
" === Поиск ===
set ignorecase
set smartcase
set incsearch
set hlsearch
" === Подсветка ===
syntax on
filetype plugin indent on
let python_highlight_all = 1
" === Автокоманды для Python и Bash ===
autocmd BufWritePre *.py,*.bash,*.sh normal m`:%s/\s\+$//e ``
autocmd FileType python setlocal smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class
autocmd FileType sh setlocal smartindent cinwords=if,then,else,elif,fi,case,esac,for,while,do,done,function
" === Навигация по буферам ===
nnoremap <C-N> :bnext<CR>
nnoremap <C-P> :bprev<CR>
" === Быстрые команды ===
nnoremap <leader>w :w<CR>
nnoremap <leader>q :q<CR>
nnoremap <leader>q! :q!<CR>

 

ВНИМАНИЕ! Не забывайте корректировать название шрифта в конфигах, если вы отдали предпочтение другой гарнитуре.

Ну и финальный штрих - инсталляция плагинов.

git clone https://github.com/VundleVim/Vundle.vim.git ~/.config/nvim/bundle/Vundle.vim

nvim +PlugInstall +qall

На данном этапе у нас полностью настроен и готов к работе nvim (продвинутая эволюция vim, заточенная под связку с lazyvim).

6. Инсталляция вспомогательных и крайне полезных утилит (СЕРВЕР + ХОСТ (по желанию))

Демонстрация практического применения каждой утилиты будет приведена во второй части материала.

6.1 ripgrep

Первой в нашем списке идет ripgrep (продвинутая альтернатива классическому grep)

ripgrep (вызывается командой rg) - интеллектуальный поиск текстовых фрагментов
Что умеет: Молниеносно ищет по файловой системе (замена grep). Самостоятельно игнорирует содержимое .gitignore, бинарные файлы и прочий мусор.

Скачиваем готовый deb пакет и инсталлируем его стандартным методом.

curl -LO https://github.com/BurntSushi/ripgrep/releases/download/14.1.1/ripgrep_14.1.1-1_amd64.deb

sudo dpkg -i ripgrep_14.1.1-1_amd64.deb

6.2 lsd

lsd - прокачанная версия утилиты ls с поддержкой иконок

Что умеет: Выводит список файлов с цветовым оформлением, иконками (Nerd Fonts) и возможностью построения дерева.

Поставим ее через пакетный менеджер rust, который мы инсталлировали и обновили чуть выше.

cargo install lsd

Наглядный пример работы lsd

Чтобы софт, установленный через cargo, корректно запускался, пропишем соответствующий путь в нашем zshrc

nvim ~/.zshrc

# Cargo binaries
export PATH="$HOME/.cargo/bin:$PATH"

source ~/.zshrc

6.3 bat

bat - интеллектуальный cat с полноценной подсветкой
Что умеет: Выводит содержимое файлов с подсветкой синтаксиса, нумерацией строк и отображением Git-статуса.

cargo install --locked bat

6.4 fd-find

fd (fd-find) - лаконичная и быстрая замена find
Что умеет: Осуществляет поиск файлов по имени либо расширению. Обладает гораздо более дружелюбным синтаксисом по сравнению с find.

cargo install fd-find --locked

6.5 zoxide

zoxide - умный аналог команды cd
Что умеет: Запоминает историю ваших перемещений и позволяет телепортироваться в каталоги по частичному совпадению имени.

cargo install zoxide --locked

6.6 fzf

fzf - нечеткий поиск по чему угодно
Что умеет: Интерактивный фильтр для любых списков (файлы, история команд, системные процессы).

git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install

7. Инсталляция LazyVim (СЕРВЕР + ХОСТ (по желанию))

В руководстве по развертыванию LazyVim на официальной странице четко сказано, что первым делом необходимо сделать резервную копию текущих конфигов nvim.

mv ~/.config/nvim{,.bak}

mv ~/.local/share/nvim{,.bak}
mv ~/.local/state/nvim{,.bak}
mv ~/.cache/nvim{,.bak}

Скачиваем стартовый репозиторий lazyvim

git clone https://github.com/LazyVim/starter ~/.config/nvim
rm -rf ~/.config/nvim/.git

Далее просто запускаем nvim и терпеливо дожидаемся, пока подтянутся все плагины.

nvim

По завершении всех установочных процедур мы получаем вот такой внешний вид nvim.

8. Развертывание superfile (spf) (СЕРВЕР + ХОСТ (по желанию))

Инсталляция проходит молниеносно и выполняется буквально одной строчкой

bash -c "$(curl -sLo- https://superfile.dev/install.sh)"

По дефолту spf открывает файлы через nano, чтобы изменить это поведение, потребуется отредактировать config.toml
Займемся этим в самом конце статьи, в разделе здесь

9. [ОПЦИОНАЛЬНО] Инсталляция fastfetch (СЕРВЕР (по желанию) + ХОСТ (по желанию))

Практического смысла - ноль, прикладного функционала - ноль, а вот эстетического удовольствия - бесценно

fastfetch является духовным наследником заброшенного проекта neofetch (отображает сводку о системе в консоли, приправленную логотипом ОС).

cd /opt/sourcecode/
git clone https://github.com/fastfetch-cli/fastfetch.git

cd fastfetch

mkdir -p build
cd build
cmake ..
cmake --build . --target fastfetch

./fastfetch

10. [ Бонус ] Инсталляция kitty (ХОСТ (по желанию) )

kitty - передовой эмулятор терминала с поддержкой GPU

curl -L https://sw.kovidgoyal.net/kitty/installer.sh | sh /dev/stdin

mkdir -p ~/.local/bin/
ln -sf ~/.local/kitty.app/bin/kitty ~/.local/kitty.app/bin/kitten ~/.local/bin/
cp ~/.local/kitty.app/share/applications/kitty.desktop ~/.local/share/applications/

~/.local/bin/kitty


nvim ~/.fly/toolbar/kitty.desktop

[Desktop Entry]
Name=kitty
Name[ru]=kitty
Type=Application
NoDisplay=false
Exec=~/.local/kitty.app/bin/kitty
Icon=~/.local/kitty.app/share/icons/hicolor/256x256/apps/kitty.png
Icon[ru]=~/.local/kitty.app/share/icons/hicolor/256x256/apps/kitty.png
Hidden=false
Terminal=false
StartupNotify=false

mkdir -p ~/.config/kitty/themes
vim ~/.config/kitty/themes/arctic_blue.conf

# Arctic Blue — кастомная тема в сине-голубых тонах
# Автор: Andrew | Для Astra Linux + Kitty
# === Базовые цвета ===
background #0a1628          # Глубокий тёмно-синий фон
foreground #c8d3e5          # Мягкий светло-серый текст
cursor #7aa2f7              # Курсор — яркий голубой
cursor_text_color #0a1628   # Текст под курсором
# === Выделение текста ===
selection_background #1b3a57
selection_foreground #ffffff
# === Цвета палитры (8 основных) ===
color0 #1a2b4a    # чёрный -> тёмно-синий
color1 #ff7b93    # красный -> мягкий коралловый (для ошибок)
color2 #4fd6be    # зелёный -> бирюзовый
color3 #ffc777    # жёлтый -> тёплый янтарный
color4 #7aa2f7    # синий -> яркий акцентный голубой
color5 #bb9af7    # фиолетовый -> лаванда
color6 #7dcfff    # голубой -> светлый циан
color7 #b0c4e3    # белый -> приглушённый голубовато-серый
# === Яркие цвета (8 дополнительных) ===
color8  #2a3f5f    # яркий чёрный
color9  #ff96aa    # яркий красный
color10 #6be6d6    # яркий зелёный
color11 #ffd999    # яркий жёлтый
color12 #9ab8ff    # яркий синий
color13 #ccb0ff    # яркий фиолетовый
color14 #99e1ff    # яркий голубой
color15 #e0e9f7    # яркий белый
# === Дополнительно (опционально) ===
# Цвет для гиперссылок
url_color #7aa2f7
# Прозрачность (если хотите эффект размытия)
# background_opacity 0.95
# Цвет для визуального предупреждения (bell)
visual_bell_color #ff7b93

nvim ~/.config/kitty/kitty.conf

# Загрузка темы
include themes/arctic_blue.conf
# Шрифт (рекомендую с поддержкой Nerd Fonts)
font_family      Lekton Nerd Font Mono
bold_font        auto
italic_font      auto
bold_italic_font auto
# Размер шрифта
font_size 19.0
cursor_shape beam
cursor_trail 1
background_opacity 0.95
# Отступы (опционально, для удобства)
window_padding_width 10
window_margin 22
confirm_os_window_close 0
shell zsh
ВНИМАНИЕ! Не забывайте подставлять свой собственный шрифт!
На этом базовая инсталляция завершена. Теперь на простых практических примерах продемонстрирую, что именно мы поставили, для каких целей и какую пользу это может принести.
Более глубокий разбор будет представлен во второй части статьи.

Находясь на сервере, мы хотим сформировать директорию, а внутри нее создать скрипт. Разумеется, можно обойтись стандартными mkdir, touch либо vim/nano и прочим.
Однако перед тем, как что-то создать, приходится постоянно держать в голове текущее местоположение и содержимое каталогов. Запустив утилиту spf, мы получаем возможность свободно перемещаться по файловой системе, просматривать файлы и даже получать предпросмотр каждого из них (вплоть до отрисовки картинок прямо в терминале). Более того, внутри spf можно нажать : по аналогии с vim/nvim и выполнить произвольную команду. Например :mkdir /tmp/test, затем :cp ~/Загрузки/1c.png /tmp/test/, после чего перейти в /tmp/test и лицезреть результат, не покидая интерфейса spf.

Посредством spf доступно просмотрение метаданных, содержимого буфера обмена, хода операции копирования и так далее, можно закреплять часто используемые директории и получать к ним моментальный доступ. Самое важное - это внимательно изучить документацию и запомнить комбинации горячих клавиш.

Предположим, мы сгенерировали новый файл через spf

Теперь переключимся в nvim, где, как и в случае с spf, у нас есть возможность просматривать структуру директории и открывать любой файл для редактирования.

Мы открыли пустой файл test.sh, набросали простенький скрипт и сохранили результат.

Через spf мы точно так же можем выделить любой файл и отправить его на редактирование.

С помощью lsd мы можем комбинировать вывод ls, раскрашивать его по цветам и добавлять иконки. Можно даже визуализировать вложенность в виде дерева, как это делает утилита tree.

В nvim доступно открытие сразу нескольких файлов в формате закладок или отдельных панелей с переключением между ними посредством горячих клавиш. Детальнее об этом поговорим во втором выпуске. К примеру, вы зашли на сервер и вам необходимо из одного конфига скопировать блок кода или настроек и перенести его в другой. Удобнее всего это реализовать через nvim, используя сплит-панели или табы. Практически как если бы вы работали в windows с графическим интерфейсом.

Благодаря интеллектуальному и молниеносному поиску мы способны находить не только файл по названию функции, но и конкретный номер строки. Допустим, мы знаем, что где-то существует скрипт, содержащий функцию hello, но мы понятия не имеем, где он лежит и как называется. Не беда, ripgrep отыщет его за вас. Пишем rg "def hello" и наслаждаемся результатом.

Утилита rg обнаружила скрипт test2.py, в котором на 3 строке файла присутствует функция def hello.

Другой сценарий. Хочу отыскать скрипт, внутри которого происходит импорт библиотек.

rg нашел два подходящих скрипта, а заодно указал номера строк, где непосредственно выполняются импорты библиотек.

bat умеет выводить содержимое с нумерацией, построчно и с полноценной подсветкой синтаксиса.

Пример вывода без нумерации и с нумерацией

fd представляет собой отличную альтернативу find

В fd я просто набираю fd -e py (хочу отыскать все файлы с расширением py - скрипты python), тогда как в find мне пришлось бы конструировать громоздкую конструкцию вида find ~/Загрузки -type f -name "*.py"

zoxide - это незаменимая вещь, если вы ежедневно перемещаетесь по десяткам различных директорий. Для пущего удобства и лаконичности лучше завести alias, чтобы сократить вызов, и использовать именно его

Предположим, мы регулярно ходим в /home/superuser/Desktops/Desktop1/project/new_version_project/test3
согласитесь, набирать cd /home/superuser/Desktops/Desktop1/project/new_version_project/test3 каждый раз крайне утомительно. Поэтому мы один раз выполняем

z /home/superuser/Desktops/Desktop1/project/new_version_project/test3 и впоследствии при следующем визите просто пишем z test3, мгновенно оказываясь в /home/superuser/Desktops/Desktop1/project/new_version_project/test3

Также иногда бывает полезен fzf - это своего рода скоростной интерактивный фильтр. К примеру, можно выполнить history | fzf, пролистать историю команд стрелками на клавиатуре, выцепить нужную строчку, нажать enter, и она повторно выполнится. Не нужно ничего набирать или копировать. И это лишь один из множества сценариев. Можно скормить вывод fd в fzf, а уже внутри него через интерактивный поиск быстро выцепить из сотен найденных файлов именно то, что требуется.

P.s.: по дефолту spf открывает документы через nano, давайте исправим это недоразумение.

Нам необходимо отыскать config.toml
Допустим, я помню, что это файл с расширением toml и он относится к утилите superfile, давайте запустим поиск.

fd -H -e toml | rg superfile

Файл мы обнаружили, однако если слегка модернизировать команду, мы сможем сразу выбрать нужный файл из результатов поиска и открыть его на редактирование.

fd -H -e toml | rg superfile | fzf --preview 'bat --color=always {}' | xargs nvim

Мы ищем все файлы с расширением toml, в том числе в скрытых директориях (-H), сортируем результаты по подстроке superfile, далее отфильтрованный список передаем в fzf с предварительным просмотром каждого файла через чтение содержимого утилитой bat (аналог cat), а при подтверждении выбора открываем файл в nvim.

Вписываем в поле editor = "nvim", по дефолту там просто пустые кавычки ""

Сохраняем изменения, и теперь при открытии через spf (по хоткею o при выделении файла) документ открывается не в nano, а в полноценном nvim.

На этом первая часть подошла к своему логическому завершению. Надеюсь, вам понравился данный материал, и вы прокачали свой терминал до неузнаваемости. Во второй части мы продолжим знакомиться с новыми утилитами на практике и изучим еще несколько интересных инструментов.


Если вы сталкиваетесь с вот таким артефактом отображения 

Это означает, что ваш терминал работает в режиме xterm, а он поддерживает лишь 8 цветов.

Проверить этот факт можно командой

echo $TERM

Устраняется проблема следующим образом: принудительно укажем в .zshrc, сколько именно цветов использовать.

nvim ~/.zshrc

и дописываем строки

# Всегда использовать 256-цветный терминал при SSH
if [[ -n "$SSH_CLIENT" ]] || [[ -n "$SSH_TTY" ]]; then
export TERM=xterm-256color
fi

Затем перелогиниваемся в сессию.

Проблема бесследно исчезает при повторном подключении.

Второй нюанс. Не забывайте в своем штатном терминале (если используете именно его) сменить шрифт со стандартного на Lekton Nerd Font

📚 Все части цикла «Превращаем терминал Astra Linux в мощный инструмент»:

0
Andrew

DevOps Engineer

1 50 статей
Комментарии (0)
Войдите, чтобы оставить комментарий

Пока нет комментариев. Будьте первым!