Давным-давно, а точнее 10 лет назад я писал статью про свое рабочее окружение. С тех пор много воды утекло, я стал менеджером, стал меньше работать с терминалом, пересел с линукса на макось.
Итак, представляю обновление своего инструментария. Из того, что не изменилось, по прежнему bash, да, даже под макось не захотел переходить на zsh.
Терминал
Пользуюсь wezterm, но посматриваю в сторону iterm2.
Вот как выглядит мой wezterm config ~/.wezterm.lua
с комментариями:
local wezterm = require 'wezterm';
local mykeys = {}
-- restore Alt+Number key assignments, switch between tabs using Alt + number
for i = 1, 9 do
table.insert(mykeys, {key=tostring(i), mods="ALT", action=wezterm.action{ActivateTab=i-1}})
end
return {
-- canonicalize_pasted_newlines = "None",
-- color_scheme = 'NightLion v1',
-- font settings, JetBrains Mono is the best
font = wezterm.font("JetBrains Mono"),
font_size = 14,
-- disable sound when bell even is trigerred
audible_bell = "Disabled",
keys = {
-- This will create a new split and run your default program inside it
{key="r", mods="SUPER",
-- action=wezterm.action{SplitVertical={args={"bash"}}}},
action=wezterm.action{SplitVertical={domain="CurrentPaneDomain"}}},
{key="e", mods="SUPER",
action=wezterm.action{SplitHorizontal={domain="CurrentPaneDomain"}}},
-- activate last active tab
{key="q", mods="ALT", action="ActivateLastTab"},
{key="q", mods="SUPER", action="ActivateLastTab"},
-- Make Option-Left equivalent to Alt-b which many line editors interpret as backward-word
{key="LeftArrow", mods="OPT", action=wezterm.action{SendString="\x1bb"}},
-- Make Option-Right equivalent to Alt-f; forward-word
{key="RightArrow", mods="OPT", action=wezterm.action{SendString="\x1bf"}},
-- Make Ctrl-Left equivalent to Alt-b which many line editors interpret as backward-word
{key="LeftArrow", mods="CTRL", action=wezterm.action{SendString="\x1bb"}},
-- Make Ctrl-Right equivalent to Alt-f; forward-word
{key="RightArrow", mods="CTRL", action=wezterm.action{SendString="\x1bf"}},
-- merge mykeys for Alt-number switching set above
table.unpack(mykeys)
},
-- reconnect to unix socket to restore tabs if terminal is closed
unix_domains = {
{
name = "unix",
}
},
connect_automatically = true,
default_gui_startup_args = {"connect", "unix"},
-- Close anyways even if exit code is non zero
exit_behavior = "Close",
mouse_bindings = {
-- Change the default click behavior so that it only selects
-- text and doesn't open hyperlinks
{
event={Up={streak=1, button="Left"}},
mods="NONE",
action=wezterm.action{CompleteSelection="PrimarySelection"},
},
-- and make CTRL-Click open hyperlinks
{
event={Up={streak=1, button="Left"}},
mods="CTRL",
action="OpenLinkAtMouseCursor",
},
},
}
Рекомендую шрифт JetBrains Mono в размере 14, выглядит шикарно в 4к разрешении. Если вы еще не обновили монитор до 4к, то уже пора.
SSH
По сути мало что изменилось, вот мой ~/.ssh/config
:
Host github.com bitbucket.org bitbucket.com gitlab.com
User git
Host *
HashKnownHosts no
KeepAlive yes
ServerAliveInterval 600
ServerAliveCountMax 3
StrictHostKeyChecking no
IdentityFile ~/.ssh/id_ed25519
UseKeychain yes
AddKeysToAgent yes
ForwardAgent yes
Перешел с RSA на ED25519 для ключей и шифрую их паролем, который сохраняется в системном keychain, очень удобно.
Screen -> Tmux
Пересел со screen на tmux, т.к. он гибче в настройке и предоставляет больше фич.
Вот мой tmux config ~/.tmux.conf
:
unbind-key C-b
# use Ctrl+X as modifier key
set-option -g prefix C-x
# got to previously used tab with Ctrl+X+X
bind-key C-x last-window
# scroll with mouse
# setw -g mouse on
# toogle mouse with Ctrl-X-m key
bind-key m set-option -g mouse
# MacOS only: move with Ctrl-B/F in copy mode
bind-key -T copy-mode C-b send-keys -X page-up
bind-key -T copy-mode C-f send-keys -X page-down
# increase scrollback
set -g history-limit 100000
# highlight windows with activity
set -wg monitor-activity on
# lower time messages stay in status bar
set -g display-time 2000
# fix vim in ssh session
set -g default-terminal "screen-256color"
set -ag terminal-overrides ",xterm-256color:RGB"
# monitor silence
bind s command-prompt -p "monitor-silence (seconds)" "setw monitor-activity off; setw monitor-silence %%"
# monitor activity
bind a setw monitor-activity on\; setw visual-activity on
# Check https://github.com/tmux-plugins/tpm on install instructions
# Then press prefix + I to install all plugins
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
# set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'jatap/tmux-base16-statusline'
set -g @base16-statusline 'main'
# set -g @plugin 'erikw/tmux-powerline'
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'
Vim -> Neovim
Большой переезд помимо с линукса на макось для меня был еще с vim на neovim он же nvim.
Использовал для этого NvChad с кастомизациями. К нему еще прикручен Github Copilot.
Starship
Очень удобный shell prompt Starship: Cross-Shell Prompt. Настроил время выполнения команд, PS1, и пр.
~/.config/starship.toml
# Inserts a blank line between shell prompts
add_newline = true
command_timeout = 1000
# Replace the "❯" symbol in the prompt with "➜"
[character] # The name of the module we are configuring is "character"
success_symbol = "[➜](bold green) " # The "success_symbol" segment is being set to "➜" with the color "bold green"
error_symbol = "[✗](bold red) "
# Disable the package module, hiding it from the prompt completely
[package]
disabled = true
[username]
style_user = "white bold"
style_root = "red bold"
format = "[$user]($style)"
disabled = false
show_always = true
[hostname]
ssh_only = false
format = "@[$hostname](bold green) "
disabled = false
[aws]
disabled = true
[gcloud]
disabled = true
format = 'on [$domain@$project](bold purple) '
[kubernetes]
disabled = false
[time]
disabled = false
format = '🕙[$time]($style) '
Выглядит все это как-то так: