Инструментарий гиперсовременного терминала

May 10 2023
Терминалы, оболочки и инструменты командной строки, устанавливающие стандарт в 2023 году. Все разработчики используют терминалы; для некоторых весь рабочий процесс — это терминал Этот пост знакомит с Hypermodern Terminal Toolbox — терминалом, оболочкой и инструментами командной строки, устанавливающими стандарт в 2023 году Kitty как эмулятор терминала Kitty — это эмулятор терминала — альтернатива терминалу GNOME , Alacritty или Терминал Windows.

Инструменты терминала, оболочки и командной строки, устанавливающие стандарт в 2023 году.

Создано с помощью стабильной диффузии. Подсказка: «экран компьютерного терминала: 0,3, печать программы оболочки на экране терминала: 0,3, стиль раскладки, яркий, яркий». Семя: 42.

Все разработчики используют терминалы; для некоторых весь рабочий процесс — это терминал

Этот пост представляет Hypermodern Terminal Toolbox — инструменты терминала, оболочки и командной строки, устанавливающие стандарт в 2023 году

Kitty как эмулятор терминала

Kitty — это эмулятор терминала — альтернатива терминалу GNOME, Alacritty или терминалу Windows.

Встроенный браузер тем Китти, доступ к которому можно получить, запустив `$ kitty +kitten themes`.

Эмулятор терминала — это программа, которая запускает ваш терминал. Различные операционные системы (ОС) предлагают разные эмуляторы терминала либо как часть ОС, либо как устанавливаемые сторонние программы.

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
  • Бесплатный курс собеседования по программированию ⇒ Посмотреть курс
  • Подписывайтесь на нас: Твиттер | Линкедин | Новостная рассылка