Яндекс

Расширенные возможности терминала

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

(2 Votes)

Превращаем штатный терминал Astra Linux в мощный инструмент!

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

  • 1 часть - установка и легкая демонстрация утилит;
  • 2 часть - более расширенная демонстрация утилит + дополнительные утилиты.

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


Установка

0. Начнем с БАЗЫ, поставим на наш СЕРВЕР и ХОСТ zsh с ohmyzsh (установка с первого пункта).

(есть несколько оболочек: bash, zsh, fish. По дефолту стоит bash в astra linux). zsh - улучшенная версия bash, позволяет больше функционала реализовать.

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

1. (СЕРВЕР + ХОСТ) Проверяем какой SHELL (bash/zsh/fish)

echo $SHELL

Если bash, то ставим zsh, если нет, то пропускаем первый пункт и переходим ко второму.

sudo apt update

sudo apt install -y zsh

zsh --version

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

chsh -s /usr/bin/zsh

Вводим пароль и перезаходим на наш СЕРВЕР.

При входе нас встретит окно, где просит выбрать действие. Нас спрашивают:

  • Q) Выйти и ничего не делать и настроить в будущем zsh
  • 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 (мы ранее выбрали опцию 0 и он создал пустой файл с комментарием).

  • Варианты:
    • 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 и смотрим какие там зависимости.

Как мы видим, шрифты мы уже поставили, гит соответствует, а вот дистрибутив neovim в репозиториях астры очень старый, что не удовлетворяет зависимостям для LazyVim. 😬

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

Если вы никогда не собирали из исходников, то это достаточно интересный процесс 😀

Ставим пакеты для сборки из исходников
sudo apt install xclip build-essential cmake gettext ninja-build lua5.1 liblua5.1-dev

Эти пакеты необходимы для сборки из исходников.

Так же поставим cargo для Rust. Так как большинство утилит которые мы будем использовать, написаны на Rust, то лучше сразу загрузить их через пакетный менеджер раста, чем собирать из исходников, так как в репозиториях астра линукс данных утилит нету (исключение 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 (СЕРВЕР (опционально) + ХОСТ (опционально))

Смысла - 0, Функционала - 0, Баловство - бесценно

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 - современный эмулятор терминала

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.

Вписываем в edito = "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

Добавить комментарий

Будьте взаимовежливы и корректны.

Все сообщения проходят премодерацию.

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


На развитие проекта

Вход