Created
November 22, 2024 06:46
-
-
Save s3rgeym/49473c20663444a779b728b2b4e58106 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/zsh | |
# Экспортируемые переменные доступны ТОЛЬКО в сессии терминала и, порождаемых | |
# им процессах. Для приложений, которые запускаются не из терминала, переменные | |
# прописываются в ~/.zshenv либо /etc/environment для всех пользователей. Так же | |
# переменные можно задать через ~/.config/environment.d/ | |
export TERM=xterm-256color | |
# Переменные окружения и алиасы лучше объявлять после инициализации antigen, так как они могут быть переопределены в плагинах. Однако, некоторые переменные окружения используются в плагинах. | |
export ZDOTDIR=${ZDOTDIR:-$HOME} | |
export ZSH="${ZDOTDIR}/oh-my-zsh" | |
# https://github.com/ohmyzsh/ohmyzsh/blob/master/plugins/asdf/asdf.plugin.zsh#L3 | |
export ASDF_DATA_DIR="${XDG_DATA_HOME:-$HOME}/.asdf" | |
# Это костыль который позволяет обойти захардкоженное поведение vim и разместить конфиг в любом месте | |
export VIMINIT=':so $MYVIMRC' | |
# В ~/.config лучше не переносить, так много где захардкожен ~/.vim | |
export MYVIMRC='~/.vim/.vimrc' | |
# Проверки нужны для избежания вывода ошибок, например, при монтировании home в distrobox | |
# Альтернатива antigen https://github.com/mattmc3/antidote | |
# https://getantidote.github.io/ | |
# yay -S zsh-antidote | |
if [ -f '/usr/share/zsh-antidote/antidote.zsh' ]; then | |
# Lazy-load antidote and generate the static load file only when needed | |
zsh_plugins=${ZDOTDIR:-$HOME}/.zsh_plugins | |
if [[ ! ${zsh_plugins}.zsh -nt ${zsh_plugins}.txt ]]; then | |
( | |
source '/usr/share/zsh-antidote/antidote.zsh' | |
antidote bundle <${zsh_plugins}.txt >${zsh_plugins}.zsh | |
) | |
fi | |
source ${zsh_plugins}.zsh | |
fi | |
# Основные Настройки | |
# Настройки для автодополнения и навигации | |
setopt auto_cd # Автоматически переходить в директорию по имени | |
setopt auto_list # Автоматически показывать список вариантов при неоднозначном завершении | |
setopt auto_menu # Автоматически использовать меню для выбора вариантов | |
setopt complete_in_word # Дополнять слова внутри команды | |
# Настройки для исправления ошибок | |
setopt correct # Исправлять опечатки в командах | |
setopt correct_all # Исправлять опечатки во всех аргументах команд | |
export CORRECT_IGNORE='_*' # Игнорировать файлы, начинающиеся с подчеркивания | |
# Настройки для истории команд | |
export HISTFILE=$ZDOTDIR/.zsh_history # Указываем файл для хранения истории команд | |
export HISTSIZE=1000000 # Увеличиваем размер истории команд | |
export SAVEHIST=1000000 # Увеличиваем размер сохраняемой истории команд | |
setopt share_history # Синхронизировать историю между сессиями терминала | |
setopt append_history # Добавлять команды в историю, а не перезаписывать её | |
setopt hist_ignore_all_dups # Игнорировать дубликаты команд в истории | |
setopt hist_reduce_blanks # Убирать лишние пробелы в командах перед сохранением | |
setopt inc_append_history # Добавлять команды в историю по мере их ввода | |
setopt extended_history # Добавлять метку времени к командам в истории | |
setopt hist_no_store # Не сохранять команду history в истории | |
setopt hist_ignore_dups # Игнорировать повторы команд при поиске по истории | |
# Настройки для комментариев и расширенного глоббинга | |
setopt interactive_comments # Разрешить комментарии в интерактивных сессиях | |
setopt extended_glob # Включить ограниченное использование регулярных выражений вместе с '*' | |
# Улучшение стиля автодополнения | |
zstyle ':completion:*' menu select # Выбирать варианты с помощью стрелок | |
zstyle ':completion:*' group-name '' # Группировать результаты по категориям | |
zstyle ':completion:*' completer _expand _complete _ignored _approximate # Включить приблизительные совпадения для автодополнения | |
# Автоматически развернуть алиасы | |
setopt aliases | |
# Автоматически развернуть переменные окружения | |
setopt auto_param_keys | |
# Автоматически добавлять слэш после завершения директории | |
setopt auto_param_slash | |
# Автоматически удалять слэш после завершения файла | |
setopt auto_remove_slash | |
# Автоматически заменять '~' на домашнюю директорию | |
setopt auto_name_dirs | |
# Автоматически заменять '..' на '../..' и т.д. | |
setopt auto_pushd | |
# Игнорировать дубликаты в стеке директорий | |
setopt pushd_ignore_dups | |
# Не показывать сообщение о том, что директория изменилась | |
setopt pushd_silent | |
# Не добавлять символ '%' в вывод | |
unsetopt prompt_cr prompt_sp | |
# Отключить магические функции для вставки \ перед ? и т.п. | |
DISABLE_MAGIC_FUNCTIONS=true | |
# Стираем с помощью Ctrl-W ссылки целиком | |
backward-kill-url() { | |
local WORDCHARS='*?_-.[]~=/&:;!#$%^(){}<>' | |
zle backward-kill-word | |
} | |
zle -N backward-kill-url | |
bindkey '^W' backward-kill-url | |
# Настройки плагинов | |
# IMPORTANT: put these settings before the line that sources oh-my-zsh | |
zstyle :omz:plugins:ssh-agent agent-forwarding on | |
zstyle :omz:plugins:ssh-agent quiet yes | |
# Запрашивает пароль от ключей только при их первом использовании, а не старте | |
zstyle :omz:plugins:ssh-agent lazy yes | |
# добавим ключи | |
zstyle :omz:plugins:ssh-agent identities id_rsa id_ed25519 | |
# время жизни ключей в агенте (по умолчанию: вечно) | |
#zstyle :omz:plugins:ssh-agent lifetime 4h | |
# Создаем директорию | |
if [ ! -d "$ZDOTDIR/zshrc.d" ]; then | |
mkdir -p "$ZDOTDIR/zshrc.d" | |
fi | |
# Подключаем вспомогательные файлы | |
for src in $ZDOTDIR/zshrc.d/*.zsh; do | |
. "$src" | |
done | |
# Подсветка синтаксиса в less + возможность с помощью less просматривать архивы | |
# yay -S lesspipe | |
if command -v lesspipe.sh &>/dev/null; then | |
eval "$(lesspipe.sh)" | |
fi | |
# Менеджер сниппетов для терминала | |
# yay -S pet-bin | |
if command -v pet &>/dev/null; then | |
function prev() { | |
PREV=$(fc -lrn | head -n 1) | |
sh -c "pet new `printf %q "$PREV"`" | |
} | |
function pet-select() { | |
BUFFER=$(pet search --query "$LBUFFER") | |
CURSOR=$#BUFFER | |
zle redisplay | |
} | |
# Добавляем вызов по Ctrl+S | |
zle -N pet-select | |
stty -ixon | |
bindkey '^s' pet-select | |
fi | |
# Проверка эмулятора терминала в котором запускается сессия zsh | |
if [[ "$(cat /proc/$PPID/comm)" != "yakuake" ]]; then | |
# Без true промпт будет красным, тк не перехвачена ошибка | |
[ "$(command -v fastfetch)" ] && fastfetch || true | |
fi | |
# TERM_PROGRAM — это программа, запустившая эмулятор, например, vscode | |
if [ -n "$ALACRITTY_WINDOW_ID" ] && [ "$(command -v zellij)" ]; then | |
eval "$(zellij setup --generate-auto-start zsh)" | |
fi | |
source /home/sergey/.config/broot/launcher/bash/br |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment