Инструментарий гиперсовременного терминала
Инструменты терминала, оболочки и командной строки, устанавливающие стандарт в 2023 году.
Все разработчики используют терминалы; для некоторых весь рабочий процесс — это терминал
Этот пост представляет Hypermodern Terminal Toolbox — инструменты терминала, оболочки и командной строки, устанавливающие стандарт в 2023 году
Kitty как эмулятор терминала
Kitty — это эмулятор терминала — альтернатива терминалу GNOME, Alacritty или терминалу Windows.
Эмулятор терминала — это программа, которая запускает ваш терминал. Различные операционные системы (ОС) предлагают разные эмуляторы терминала либо как часть ОС, либо как устанавливаемые сторонние программы.
Kitty — это сторонний эмулятор терминала с ускорением на графическом процессоре. Kitty работает быстро, с широкими возможностями настройки и открытым исходным кодом.
Конфигурация выполняется с помощью kitty.conf
текстового файла:
# $XDG_CONFIG_HOME/kitty/kitty.conf
font_family Operator Mono Book
font_size 14.0
scrollback_lines 2000
Совет — при изменении настроек Китти в kitty.conf
, вам потребуется полностью перезапустить программу Китти.
Zsh & Prezto как оболочка
Zsh — это оболочка, написанная на C — это альтернатива Bash или Fish.
Оболочка — это текстовый интерфейс операционной системы, работающий внутри терминала. Команды оболочки выполняют такие задачи, как создание файлов и запуск программ.
Zsh — это оболочка с открытым исходным кодом, предлагающая больше функций и возможностей настройки, чем Bash.
Zsh настраивается с помощью .zshrc
файла:
# ~/.zshrc
HISTSIZE=9999
alias brew='arch -x86_64 brew'
export PATH="$HOME/dotfiles/scripts:$PATH"
Особенности Prezto включают в себя подсветку синтаксиса и завершение команды на вкладке. Автодополнение с помощью табуляции полезно для интерактивного изучения новых инструментов командной строки.
Prezto настраивается с помощью .zpreztorc
файла:
# ~/.zpreztorc
zstyle ':prezto:load' pmodule \
'environment' \
'terminal' \
'editor' \
'history' \
'directory' \
'spectrum' \
'utility' \
'completion' \
'git' \
'syntax-highlighting' \
'history-substring-search' \
'autosuggestions' \
'prompt'
Neovim как текстовый редактор
Neovim — текстовый редактор, написанный на Lua — это альтернатива Vim, Nano или Emacs.
Neovim — популярный преемник Vim. Вся экосистема плагинов Vim, написанных на Vimscript, работает в Neovim, поверх бурной экосистемы плагинов Neovim, написанных на Lua.
Хорошо сконфигурированный Neovim имеет языковые серверы для автодополнения (те же языковые серверы доступны в VS Code), подсветку синтаксиса с помощью Treesitter и Telescope для поиска по разным типам списков.
Конфигурация Neovim выполняется на Lua — начиная с init.lua
файла:
-- $XDG_CONFIG_HOME/nvim/init.lua
-- set size of a tab to be 4
-- vim command line `:set tabstop=2`
-- vimscript `set tabstop=2`
vim.opt.set.tabstop = 2
-- run vimscript in lua
vim.cmd([[set tabstop=2]])
-- set variable
-- vimscript `let g:zoom#statustext = 'Z'`
vim.g['zoom#statustext'] = 'Z'
Совет — подпишитесь на This Week in Neovim, чтобы получать еженедельный информационный бюллетень, посвященный оживленной экосистеме Neovim.
Tmux для нескольких терминалов
Tmux — это мультиплексор терминалов, написанный на C — это альтернатива Screen или запуск терминалов в нескольких окнах.
Мультиплексоры терминалов позволяют управлять несколькими сеансами терминалов в одном окне.
Tmux предоставляет вам постоянные сеансы, управление окнами и панелями с помощью настраиваемых привязок клавиш.
Tmux использует иерархию концепций для управления несколькими терминалами:
- Панель представляет собой прямоугольную область внутри окна. Каждая панель отображает отдельный сеанс терминала.
- Окно — это полноэкранный контейнер, содержащий одну или несколько панелей.
- Сеанс — это набор из одного или нескольких окон.
Вы можете начать новый сеанс Tmux с помощью tmux new
:
# create a session named `work`
$ tmux new -s work
Вы можете повторно подключиться к работающему сеансу Tmux с помощью tmux attach
:
# reattach to last session
$ tmux attach
# reattach the session named `work`
$ tmux attach -t work
Ctrl-b c
: создать новое окно.Ctrl-b n
: переход к следующему окну.Ctrl-b p
: переход к предыдущему окну.
# ~/.tmux.conf
set -g default-terminal "screen-256color"
setw -g mode-keys vi
set -g status-left "#[fg=green,bold]Session: #S #[fg=white,bold]| #[fg=yellow,bold]Window: #W"
set-option -g prefix C-a
Звездолет для красивой подсказки
Starship — это приглашение оболочки, написанное на Rust — это альтернатива Powerlevel10k или Pure.
Приглашение — это настраиваемая часть командной строки, предоставляющая контекст, например текущий каталог или ветку Git.
Starship дает вам быструю настраиваемую подсказку. Конфигурация выполняется с помощью starship.toml
файла:
# $XDG_CONFIG_HOME/starship.toml
[username]
disabled = true
[hostname]
disabled = true
[git_status]
ahead = "↑"
behind = "↓"
[directory]
truncation_length = 2
Ripgrep для поиска текста
Ripgrep — поисковик текстовых файлов, написанный на Rust — альтернатива grep или find.
Основная особенность Ripgrep — скорость — она быстрее, чем альтернативные инструменты.
Основное использование Ripgrep — поиск шаблона в каталоге:
$ rg 'pattern' ~/project
alias g='rg -l --hidden --smart-case --line-buffered'
$ g 'some-pattern' some/directory
fzf для нечеткого поиска
fzf — нечеткий поиск, написанный на Go — альтернатива детерминированному поиску.
fzf позволяет выполнять поиск с использованием алгоритма нечеткого поиска, который сопоставляет шаблоны регулярных выражений с неполной информацией. Это позволяет отображать результаты поиска по мере ввода, даже с орфографическими ошибками.
fzf можно запустить как программу командной строки:
$ fzf
# fuzzy search all files in the `work` directory
$ cat ~/work/** <TAB>
fzf можно использовать с различными механизмами поиска, такими как find, grep или Ripgrep.
Совет — используйте Ripgrep в качестве бэкенда fzf, установив FZF_DEFAULT_COMMAND
переменную окружения export FZF_DEFAULT_COMMAND='rg --files --hidden'
.
Exa для листинга файлов
Exa — это программа для вывода списка файлов, написанная на Rust — альтернатива ls и tree.
Программа списка файлов показывает вам списки файлов и каталогов. Exa предлагает такие функции, как значки, интеграцию с Git и универсальные параметры сортировки.
Exa имеет несколько различных основных представлений:
# list as a grid
$ exa -G
bp-historical-data cities data-science-south-data predict-newspapers README.md titanic
# list each item on one line
$ exa -1
bp-historical-data
cities
data-science-south-data
predict-newspapers
README.md
titanic
# list as a table - same as `ls -l`
$ exa -l
drwxr-xr-x - adam 26 Apr 20:20 bp-historical-data
drwxr-xr-x - adam 14 Feb 16:42 cities
drwxr-xr-x - adam 26 Apr 20:25 data-science-south-data
drwxr-xr-x - adam 28 Apr 14:52 predict-newspapers
.rw-r--r-- 124 adam 29 Apr 15:20 README.md
drwxr-xr-x - adam 26 Apr 17:31 titanic
$ exa --tree --level=2
├── bp-historical-data
│ ├── __pycache__
│ ├── dashboard.py
│ ├── data
│ ├── notebooks
│ ├── README.md
│ └── requirements.txt
├── README.md
└── titanic
├── data
├── requirements.txt
├── titanic.ipynb
├── titanic.md
└── titanic.py
Мои псевдонимы для Exa:
alias ls = 'exa --long --icons --no-permissions --no-user --git --time-style long-iso --time=modified --group-directories-first -a'
alias tree = 'exa --tree'
Бат для просмотра файлов
Bat — просмотрщик файлов, написанный на Rust — альтернатива cat.
Просмотрщик файлов — это программа, которая отображает содержимое файла.
Bat предлагает такие функции, как подсветка синтаксиса, интеграция с Git и автоматическая подкачка файлов.
Bat используется путем указания программы на текстовый файл:
$ bat path/to/file
Грустно за замену текста
Sad — это потоковый редактор, написанный на Rust — это альтернатива sed или awk.
Потоковые редакторы выполняют операции поиска и замены в текстовых потоках или текстовых файлах.
Sad (Space Age seD) показывает предлагаемые замены перед их применением, позволяя вам проверить и выбрать, какие замены сделать, прежде чем их зафиксировать.
Sad используется как программа командной строки:
$ sad '<pattern>' '<replacement>'
$ cat README.md
# Data Science South Projects
Example projects for the courses at [Data Science South](https://www.datasciencesouth.com/).
$ exa -1 | sad "courses" "modules"
$ cat README.md
# Data Science South Projects
Example projects for the modules at [Data Science South](https://www.datasciencesouth.com/).
jq для работы с JSON
jq — это процессор JSON, написанный на C — это альтернатива fx, jp или обработке JSON на таком языке, как Python.
jq позволяет фильтровать, преобразовывать и манипулировать данными JSON, что полезно для работы с ответами API, файлами конфигурации и хранилищами данных.
Центральной идеей jq является фильтр, который применяется к входному JSON:
$ jq 'filter_expression' input.json
.key
- извлечь значение ключа,.[]
- извлечь все значения из массива,.[2]
- извлечь третье значение из массива.
# extract the `name` key
$ echo '{"name": "Alice", "data": [6, 12]}' | jq '.name'
"Alice"
# extract the second element from the `data` list
$ echo '{"name": "Alice", "data": [6, 12]}' | jq '.data[1]'
12
zoxid для навигации
zoxid — это утилита навигации по терминалу, написанная на Rust — это альтернатива cd, pushd и popd.
zoxid переходит к каталогам из вашей истории посещений. Каждому каталогу присваивается оценка в зависимости от того, как часто и в последнее время они посещались.
zoxid используется как программа командной строки:
# move to a folder that best matches `code`
$ z code
Tig для просмотра истории Git
Tig — это просмотрщик истории Git, написанный на C — это альтернатива использованию Git CLI или Lazygit.
Tig предоставляет удобный интерфейс с цветовой кодировкой для просмотра истории коммитов Git. Он позволяет искать коммиты, просматривать график коммитов и показывать файлы в другой момент времени.
Tig запускается как программа командной строки:
$ tig
direnv для управления переменными среды
direnv загружает и выгружает переменные среды оболочки — написанные на Go, это альтернатива использованию$ source .env
.
direnv автоматически загружает и выгружает переменные среды при перемещении между различными каталогами проекта.
Использование direnv позволяет избежать ручной загрузки переменных среды и защищает от переменных среды из одного проекта, установленных в другом проекте.
direnv использует .envrc
файл для хранения переменных, характерных для вашего проекта, который запускается как сценарий оболочки:
# .envrc
export PROJECT_NAME="alpha"
$ direnv allow .
Обычной практикой является необязательная загрузка секрета или частного .envrc
:
source_env_if_exists .envrc.secret
Совет. Используйте direnv exec <path> <command>
для запуска команды со средой, загруженной для определенного каталога, без перехода к нему.
Лазидокер для Докера
Lazydocker управляет контейнерами и образами Docker — написан на Go, это альтернатива Docker Desktop или Docker CLI.
Lazydocker позволяет легко просматривать, запускать, останавливать и удалять контейнеры и образы через пользовательский интерфейс терминала. Он также может предоставлять обзор состояния контейнера, журналов и использования ресурсов в режиме реального времени.
Lazydocker используется как программа командной строки:
$ lazydocker
Markserv для предварительного просмотра Markdown
Markserv отображает файлы Markdown в браузере — написанный на Node.js, это альтернатива Grip или Markdown Preview.
Markserv преобразует Markdown в HTML в режиме реального времени, автоматически отражая изменения по мере их внесения.
Markserv поддерживает Markdown со вкусом GitHub, что означает, что он форматирует блоки кода и таблицы так же, как Github. Markserv отлично подходит для предварительного просмотра README.md
файлов без отправки на Github.
Чтобы запустить сервер Markserv на порту 8010:
$ markserv -p 8010
Ngrok для совместного использования локальных серверов
ngrok создает туннели к вашим локальным серверам — написан на Go, это альтернатива Serveo, LocalTunnel или PageKite.
ngrok предоставляет Интернету доступ к локальному серверу за NAT или брандмауэром. Это полезно для совместного использования сервера разработки с вашей командой.
Вы можете запустить туннель на порт 8000, запустив:
$ ngrok http 8000
Краткое содержание
Набор инструментов гиперсовременного терминала :
- Kitty для GPU-ускоренного терминала с широкими возможностями настройки,
- Zsh для оболочки и Prezto для конфигурации Zsh,
- Neovim как текстовый редактор,
- Tmux для управления несколькими терминалами,
- Звездолет для довольно быстро,
- Ripgrep для поиска текстовых файлов,
- fzf для нечеткого поиска,
- Exa для перечисления файлов,
- Бат для просмотра файлов,
- Печально для поиска и замены в текстовых файлах,
- jq для работы с JSON,
- зоксид для навигации,
- Tig для просмотра истории Git,
- direnv для управления переменными среды,
- Лазидокер для Докера,
- Markserv для предварительного просмотра Markdown,
- ngrok для предоставления доступа к локальным серверам в Интернете.
Постоянно изучайте один инструмент за раз, чтобы стать мастером терминала
Первоначально опубликовано на https://www.datasciencesouth.com .
Повышение уровня кодирования
Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:
- Хлопайте за историю и подписывайтесь на автора
- Смотрите больше контента в публикации Level Up Coding
- Бесплатный курс собеседования по программированию ⇒ Посмотреть курс
- Подписывайтесь на нас: Твиттер | Линкедин | Новостная рассылка