Compare commits

...

176 Commits

Author SHA1 Message Date
eea38195a1 Плагин https://github.com/unixorn/git-extra-commands 2025-06-28 09:15:11 +03:00
c7bb09d5bc zinit 3.14.0 2025-04-17 13:44:31 +03:00
0ab8f29d9e Версия fzf 2025-02-06 10:12:43 +03:00
ffb71f5600 Адрес загрузки плагинов для fzf 2025-02-06 10:10:38 +03:00
ee02aea5a7 Номер версии fzf 2025-02-06 10:07:57 +03:00
1df17fc702 Обработка номера версии fzf 2025-02-06 10:05:12 +03:00
62670c583c Загрузка плагинов для установленной версии fzf 2025-02-06 09:56:51 +03:00
faa5c5a550 fzf 2024-07-25 08:44:54 +03:00
4d8052da4b Плагин для редактирования истории команд 2024-07-04 11:53:35 +03:00
bb4f1bbb53 Правка работы с fzf 2024-07-04 10:36:03 +03:00
44111962f2 zinit 3.13.1 2024-01-29 15:15:38 +03:00
9c38804a6a zinit 3.12.1 2023-11-20 16:02:19 +03:00
6562cc7774 zinit 3.12.0 2023-09-08 06:05:48 +03:00
d8eb4a6049 Установка шрифто 2023-06-07 17:43:34 +03:00
0246176d38 zinit 3.11.0 2023-06-07 16:46:04 +03:00
6d35685e33 Восстановлен файл 2023-05-31 19:32:58 +03:00
312733c575 Merge branch 'master' of git.246060.ru:config/zsh 2023-05-31 19:30:41 +03:00
a7e2a48581 Обновление $ZDOTDIR 2023-05-12 23:58:28 +03:00
442480e151 При наличии gdu запускать вместо ncdu 2023-05-12 23:43:28 +03:00
b25739c78b Установка пакета со шрифтом Iosevka Prog Nerd 2023-05-08 11:34:57 +03:00
88efc82376 ycal 2023-05-06 19:15:33 +03:00
9e58e8e04f При наличии bat использовать его в качестве пейджера 2023-04-28 14:25:46 +03:00
c0c1920574 Замена wget на curl 2023-04-17 13:17:02 +03:00
842b64bfe1 Исправлено обновление конфигурации 2023-04-17 08:07:42 +03:00
484a4b943f Установка curl 2023-04-16 23:11:07 +03:00
a288ff89ed Убран алиас на dotdrop 2023-04-16 22:12:04 +03:00
48902750b9 Путь к репозиторию 2023-04-16 22:11:23 +03:00
ce3d65d15b Скрипт для быстрой установки 2023-04-16 22:02:09 +03:00
ab88a647c0 Использование определённой версии zinit 2023-04-16 21:47:11 +03:00
0d440310bd OMZL::functions 2023-04-05 21:39:35 +03:00
566cca7844 Поддержка xterm 2022-12-27 14:30:50 +03:00
188e40834e Возможность пользовательской настройки p10k 2022-12-27 14:21:01 +03:00
3819c3ee74 Виджет для завершения процессов 2022-12-23 16:44:39 +03:00
8364968e2f Использование fd для поиска файлов 2022-12-23 16:44:02 +03:00
b1ab03e165 Отключены плагины, приводящие к нестабильной работе 2022-12-23 15:11:23 +03:00
020da06b8a Рефакторинг 2022-12-23 11:39:49 +03:00
01f900a450 Отключен виджет (не работает в Orel) 2022-12-23 09:58:40 +03:00
dd91f10bb4 Запуск виджетов, если командная строка пуста 2022-12-22 21:58:01 +03:00
0943137da8 Правка параметров для агентов 2022-12-22 21:56:13 +03:00
5e593ade5e Быстрый переход к проектам 2022-12-22 21:55:30 +03:00
2b8ea8a194 zsh-navigation-tools 2022-12-22 21:49:25 +03:00
edf4ef872c Подбор запуска history-search-multi-word 2022-12-21 14:03:17 +03:00
9730fc1f5c Подбор запуска history-search-multi-word 2022-12-21 14:01:45 +03:00
9aa3dec349 Подбор запуска history-search-multi-word 2022-12-21 13:58:17 +03:00
834a086fbc Другой вариант запуска history-search-multi-word 2022-12-21 13:46:19 +03:00
c7b2bbb92f Проба оптимизации автодополнения 2022-12-21 13:40:59 +03:00
a545d3be52 Пример использования keychain только для ssh-agent 2022-12-21 10:50:42 +03:00
9dc78aa73d Проверка наличия программ 2022-12-21 10:25:12 +03:00
ebbc50dc4c Переменная SHORT_HOST 2022-12-21 10:08:09 +03:00
75c47072f9 Условия для загрузки плагинов 2022-12-21 09:42:47 +03:00
41cc096839 Проверка возможности работы плагинов 2022-12-20 18:05:16 +03:00
33eb5a63e1 Исправлена загрузка шрифтов 2022-12-20 16:32:36 +03:00
505bccc687 Убран автоматический запуск gpg-agent 2022-12-20 15:12:24 +03:00
8321fb3a86 Документация 2022-12-20 13:10:53 +03:00
1be479ca64 Команда для git 2022-12-20 13:01:36 +03:00
43a6deb60c Подключена библиотека git 2022-12-20 11:29:43 +03:00
3df25cc280 Псевдонимы 2022-12-19 19:10:18 +03:00
bc176b9f3a Подавление вывода при загрузке 2022-12-19 16:49:42 +03:00
d7f8f98895 Правка пути 2022-12-19 16:09:18 +03:00
addc2bbc65 Установка шрифтов 2022-12-19 16:05:31 +03:00
8d6f4d0a0c Использование Eget 2022-12-19 11:58:27 +03:00
345d23e0dc Установка программ выполняется с помощью zyedidia/eget 2022-12-19 11:22:18 +03:00
a20d17eb8b Клавиша для запуска navi 2022-12-19 06:47:20 +03:00
df7bc41b32 Правка синтаксиса 2022-12-19 06:46:56 +03:00
e09e731101 Правка замечаний shellcheck 2022-12-18 18:58:00 +03:00
a8f767c95d Мелкие правки 2022-12-18 17:39:40 +03:00
0d1192758c Git Extras 2022-12-18 12:37:32 +03:00
311c596fca Navi 2022-12-18 12:17:48 +03:00
193684d640 Правка для работы MC в сессии SSH 2022-12-18 12:02:02 +03:00
fb5782101b Оптимизация 2022-12-18 11:51:02 +03:00
5773b855f3 Настройка дополнения 2022-12-18 05:13:48 +03:00
19280ec6fc Удаление файлов 2022-12-17 19:30:17 +03:00
6b44017c88 Переход на использование zinit 2022-12-17 19:17:36 +03:00
723cf0b917 update 2022-10-14 19:51:41 +03:00
4514bed79d update 2022-10-14 19:50:16 +03:00
fc40d816f9 Убрана лишняя печать 2022-09-13 11:53:06 +03:00
785476f0b2 Файл с функциями, выполняющими правки настроек сторонних программ 2022-09-13 11:49:56 +03:00
b61cbee31d Документация 2022-09-13 11:17:20 +03:00
bb3ea52f23 Синтаксическая ошибка 2022-09-13 11:16:09 +03:00
3877f9aacc Чистка 2022-09-13 11:14:58 +03:00
120501c27a lazygit 2022-09-13 11:02:08 +03:00
b40c45ed19 Обновление документации 2022-09-08 12:10:01 +03:00
eeaa1d8b55 Дополнительные команды 2022-09-08 12:06:19 +03:00
d0292e504b Отключен плагин подсветки синтаксиса 2022-09-08 12:04:13 +03:00
3239797775 Использование fzf из устанавливаемого плагина 2022-09-08 12:02:31 +03:00
16c0331040 Уменьшен размер истории ввода команд 2022-09-08 12:02:01 +03:00
e6831d7126 Отказ от автоматической настройки для терминала kitty 2022-09-08 12:00:37 +03:00
227ba485f2 Обновление поддержки kitty 2022-07-05 10:54:44 +03:00
bf2bee47e4 Чтение настроек zsh после обновления 2022-07-04 20:49:47 +03:00
a091c15045 Правила для уведомлений 2022-06-22 15:45:57 +03:00
c00e6d09ef Исправлено условие для обновления 2022-06-04 06:09:26 +03:00
e57fe1194e Для обновлённого powerline10k требуется zsh 5.3 2022-06-04 06:07:41 +03:00
c4b37c2c5b Автоматические обновление powerlevel10k 2022-06-04 06:03:39 +03:00
51f06cefb6 Псевдонимы для сортировки 2022-05-27 07:08:44 +03:00
6f6855c87d Глобальные псевдонимы для фильтров sort и xargs 2022-04-12 06:46:39 +03:00
497f23c115 Отказ от поиска в несуществующем каталоге 2022-01-23 16:38:23 +03:00
c95c869728 Merge branch 'master' of git.246060.ru:f1x1t/zshrc 2022-01-15 18:00:15 +03:00
04758ba487 Добавлены пути к исполняемым файлам gem 2022-01-15 17:56:23 +03:00
a79fd61f94 Запрет автоматического запуска tmux 2022-01-12 16:31:27 +03:00
f9beb69853 Запрет автоматической загрузки репозитория при подключении по ssh 2021-12-26 11:55:52 +03:00
ffe045607c Исправлена обработка вывода команды ch (интерфейса для cheat.sh) 2021-12-17 10:44:20 +03:00
4c9802e35b Переписаны функции для обеспечения совместимости с mc и kitty 2021-12-17 10:39:37 +03:00
0348458331 Проверка работы в tmux или screen 2021-12-13 14:25:34 +03:00
38c56ac271 Совместимая с POSIX проверка существования функции 2021-12-13 09:56:47 +03:00
5701f67a36 Убран лишний аргумент 2021-12-13 08:22:40 +03:00
6029a95324 Рефакторинг 2021-12-12 19:28:51 +03:00
e6e01d8917 Команды для настройки kitty и mc 2021-12-12 15:17:40 +03:00
ab498eb5a9 Проба tmux 2021-12-12 13:15:40 +03:00
b2370ee807 Предупреждение 2021-12-12 13:12:24 +03:00
5d3f3ea6ea Имя каталога 2021-12-12 13:08:04 +03:00
e6823abbb3 Установка описания терминала kitty, если его нет в системе 2021-12-12 13:03:03 +03:00
4b1fbca444 Команда zu для полного обновления конфигурации 2021-12-11 13:01:07 +03:00
2bd3607a7a Исправлено использование отложенной загрузки плагинов 2021-12-11 12:15:10 +03:00
ecc46ef2da Перенесены функции из плагина systemadmin 2021-12-11 12:10:09 +03:00
3821972789 Пакет git-lfs убран из списка для установки 2021-12-09 10:49:41 +03:00
8ab92f830a Цвет приглашения при удалённом доступе 2021-12-09 10:36:44 +03:00
b0986af849 Текущий контекст (ssh, sudo) отображается слева 2021-12-09 10:32:12 +03:00
1b628d45d5 Рекомендуется к установке grepcidr 2021-12-09 10:31:44 +03:00
abf4a8f35f Обработка клавиш 2021-12-07 13:47:16 +03:00
5b466f5203 Прямая загрузка grc 2021-12-07 13:19:06 +03:00
38278f06df Документация 2021-12-07 13:18:56 +03:00
93e084e94f Отложенная загрузка медленных плагинов 2021-12-07 12:03:46 +03:00
c1ef48141d Убраны медленные плагины 2021-12-07 08:22:48 +03:00
31e1dface0 Переход на zcomet 2021-12-07 00:48:22 +03:00
b3d70173c1 Закончена проба с Oh My Zsh 2021-12-06 21:55:21 +03:00
9d5f93b0dc Запрет чтения настроек из системного каталога /etc 2021-12-06 12:00:11 +03:00
cd72c1cfa0 Правка документации 2021-12-06 00:45:59 +03:00
8d03a2ed06 Переход на использование Oh My Zsh 2021-12-06 00:42:07 +03:00
97d234df5f Merge branch 'master' of https://git.246060.ru/f1x1t/zshrc 2021-12-04 09:45:19 +03:00
061989e556 Подключение плагинов 2021-11-07 10:34:23 +03:00
943fc1d242 Отключены некоторые автодополнения для работы в mc 2021-11-07 10:26:38 +03:00
dc2ac2eef7 Переменная ZSH_IS_SUBSHELL 2021-11-06 20:47:14 +03:00
026199797d Загрузка скриптов pre и post 2021-11-06 20:29:19 +03:00
22197ae61a Правка документации 2021-11-06 19:55:26 +03:00
00bd63ccc6 Переход на менеджер https://github.com/jandamm/zgenom 2021-11-06 19:50:38 +03:00
e9b976f5f2 Список загружаемых файлов 2021-09-08 09:43:54 +03:00
098834c637 Обновление 2021-08-09 15:50:23 +03:00
a040a92a2d Не запускать tmux автоматически 2021-08-09 09:12:07 +03:00
c49d89dc1a Установка git и ssh-askpass 2021-08-02 11:23:43 +03:00
d868d4f8ae Команды для apt 2021-07-22 09:19:16 +03:00
21adbc8e43 Merge branch 'master' of https://git.246060.ru/f1x1t/zshrc 2021-07-18 06:39:11 +03:00
2e052d7d19 Имя сессии tmux 2021-07-13 18:11:42 +03:00
f362f02879 Merge branch 'master' of https://git.246060.ru/f1x1t/zshrc 2021-07-13 17:57:22 +03:00
4c980e0da6 Revert "tmux"
This reverts commit 506eda17f4.
2021-07-13 17:57:14 +03:00
5c9556f8a0 tmux 2021-07-13 17:56:20 +03:00
506eda17f4 tmux 2021-07-13 17:54:46 +03:00
ff8bccb541 Правки 2021-07-13 17:38:03 +03:00
ba6c92a2ce Переход на zdharma/zinit 2021-07-13 16:17:09 +03:00
a3b19b9f4c Лишние пробелы 2021-06-08 19:03:58 +03:00
ceb8f4c9df Замена antibody на zplug 2021-04-19 11:32:04 +03:00
f895320362 Автодополнение для kill и killall 2021-03-11 12:08:10 +03:00
ecbcc2e8cd zmv 2020-12-27 15:36:23 +03:00
2631d43e21 Обновление 2020-12-20 21:47:16 +03:00
c419c6f8f2 Merge branch 'master' of git.246060.ru:f1x1t/zshrc 2020-12-19 12:47:09 +03:00
c2ce0cbff3 aliases-tips 2020-12-19 12:46:34 +03:00
3494732ae4 Установка fzf 2020-12-09 16:03:22 +03:00
46541ea6fd Улучшены псевдонимы для youtube-dl 2020-12-09 12:06:17 +03:00
2baad93acc Merge branch 'master' of git.246060.ru:f1x1t/zshrc 2020-12-09 09:42:26 +03:00
a8520fc7d9 aliases.zsh 2020-12-09 09:41:39 +03:00
469ffa4da1 Intel Studio 2020-11-28 14:44:16 +03:00
994fa2897a Merge branch 'master' of git.246060.ru:f1x1t/zshrc 2020-11-28 14:03:43 +03:00
7e4221b74f Переменная окружения для VTune 2020-11-16 11:11:57 +03:00
058459dc8f Приглашение в зависимости от версии zsh 2020-11-16 11:06:26 +03:00
4ae82b99b7 Работа CTRL-T, CTRL-R, ALT-C с помощью fzf 2020-11-16 11:01:17 +03:00
ee2fdf6f27 Временная правка для Intel 2020-05-19 20:26:01 +03:00
05a0baf925 Определение версии 2020-05-19 19:25:27 +03:00
f949c5c453 Приглашение для Эльбрус-Д 2020-05-18 11:01:52 +03:00
406995f72b update 2020-04-20 08:52:59 +03:00
f52309d2d9 Сокращения для apt 2020-04-18 10:19:12 +03:00
e2170afdba Настройки времени для уведомлений 2020-04-05 14:57:36 +03:00
6c98fb13c3 Исправлен конфликт peco и fzf 2020-04-05 00:05:43 +03:00
6ac27b6087 Удалён yarn 2020-04-04 23:46:18 +03:00
ba04ed4f22 Загрузка плагинов, если найдены соответствующие программы 2020-04-04 23:40:58 +03:00
d578ba6b1a fzf и z 2020-04-04 23:33:34 +03:00
8498b7f0e0 Поддержка Смоленск 1.5 2020-04-04 23:24:14 +03:00
3520c9f73c Опечатка 2020-04-04 23:11:11 +03:00
27 changed files with 4149 additions and 198 deletions

9
.gitignore vendored
View File

@ -1,4 +1,7 @@
.zcompdump*
keychain-config.zsh
*.post.zsh
*.pre.zsh
*.user.zsh
.zshenv.user
.zcalc_history
.zcompdump*
*.zwc

1652
.p10k.8colors.zsh Normal file

File diff suppressed because it is too large Load Diff

1649
.p10k.zsh Normal file

File diff suppressed because it is too large Load Diff

82
.zshenv Normal file
View File

@ -0,0 +1,82 @@
# shellcheck shell=bash
# vim: ft=sh
# Запрет чтения настроек из системного каталога /etc
unsetopt GLOBAL_RCS
# PATH {{{
# Ruby
if command -v ruby >/dev/null && command -v gem >/dev/null; then
path=("$(ruby -r rubygems -e 'puts Gem.user_dir')/bin" $path)
fi
# Поиск в домашнем каталоге
path=("$HOME/bin" "$HOME/.local/bin" $path)
# Удалить дубликаты в массиве
typeset -aU path
# }}}
# Базовые каталоги {{{
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_DATA_HOME="$HOME/.local/share"
export XDG_STATE_HOME="$HOME/.local/state"
# }}}
export ZSH_CACHE_DIR="$XDG_CACHE_HOME/zsh"
export ZSH_COMPDUMP="$ZSH_CACHE_DIR/zcompdump-${HOST/.*/}-$ZSH_VERSION"
typeset -g POWERLEVEL9K_INSTANT_PROMPT=off
# Короткое имя компьютера, обязательно нужно для ssh-agent.
# Часто используется в OhMyZsh.
export SHORT_HOST="${SHORT_HOST:-${(%):-%m}}"
# Отключаем некоторые плагины, если запуск в качестве подоболочки mc
# Bug: https://midnight-commander.org/ticket/4253
[ "$(ps -p $PPID -o cmd=)" = "mc" ] && ZSH_MC_SUBSHELL=1
# GnuPG
export GNUPGHOME="$XDG_CONFIG_HOME/gnupg"
# askpass # {{{
if [[ -n ${DISPLAY+set} ]]; then
if command -v /usr/lib/openssh/gnome-ssh-askpass >/dev/null 2>&1; then
# Gnome
export SSH_ASKPASS=/usr/lib/openssh/gnome-ssh-askpass
elif command -v /usr/bin/lxqt-openssh-askpass >/dev/null 2>&1; then
# LxQt
export SSH_ASKPASS=/usr/bin/lxqt-openssh-askpass
elif command -v /usr/bin/ssh-askpass >/dev/null 2>&1; then
# X11
export SSH_ASKPASS=/usr/bin/ssh-askpass
fi
fi
# }}}
if command -v bat >/dev/null; then
export PAGER=bat
export MANPAGER="sh -c 'col -bx | bat -l man -p'"
fi
# Uncrustify
export UNCRUSTIFY_CONFIG="${XDG_CONFIG_HOME}/uncrustify/uncrustify.cfg"
[ ! -r "${UNCRUSTIFY_CONFIG}" ] && unset UNCRUSTIFY_CONFIG
# Intel OneAPI #{{{
if [[ -n ${ENABLE_INTEL_STUDIO+set} ]]; then
#export COMPILERVARS_ARCHITECTURE=intel64
#export COMPILERVARS_PLATFORM=linux
INTEL_VARS=( /opt/intel/oneapi/advisor/latest/advixe-vars.sh
/opt/intel/oneapi/compiler/latest/env/vars.sh
/opt/intel/oneapi/vtune/latest/vtune-vars.sh )
for f in "${INTEL_VARS[@]}"; do
if [ -r "$f" ]; then source "$f" >/dev/null; fi
done
fi
# }}}
[ -r "$ZDOTDIR/.zshenv.user" ] && source "$ZDOTDIR/.zshenv.user"

45
.zshrc
View File

@ -1,22 +1,31 @@
source $ZDOTDIR/env.zsh
[ -e $ZDOTDIR/env.user.zsh ] && source $ZDOTDIR/env.user.zsh
# shellcheck shell=bash
# vim: ft=sh
source $ZDOTDIR/history.zsh
[ -e $ZDOTDIR/history.user.zsh ] && source $ZDOTDIR/history.user.zsh
# Profiling start
# zmodload zsh/zprof
source $ZDOTDIR/options.zsh
[ -e $ZDOTDIR/options.user.zsh ] && source $ZDOTDIR/options.user.zsh
for S in \
05-start \
15-options \
25-history \
42-zinit \
45-plugins \
55-agents \
62-scripts \
68-aliases \
72-widgets \
78-keybindings \
82-completion \
88-prompt \
95-finish
do
N="${S//[0-9\-]/}"
if [[ -r "$ZDOTDIR/$S.pre.zsh" ]]; then source "$ZDOTDIR/$S.pre.zsh"; fi
if [[ -r "$ZDOTDIR/$S.zsh" ]]; then source "$ZDOTDIR/$S.zsh"; fi
if [[ -r "$ZDOTDIR/$S.user.zsh" ]]; then source "$ZDOTDIR/$S.user.zsh"; fi
if [[ -r "$ZDOTDIR/$N.user.zsh" ]]; then source "$ZDOTDIR/$N.user.zsh"; fi
if [[ -r "$ZDOTDIR/$S.post.zsh" ]]; then source "$ZDOTDIR/$S.post.zsh"; fi
done
source $ZDOTDIR/plugins.zsh
[ -e $ZDOTDIR/plugins.user.zsh ] && source $ZDOTDIR/plugins.user.zsh
# zprof
source $ZDOTDIR/agents.zsh
[ -e $ZDOTDIR/agents.user.zsh ] && source $ZDOTDIR/agents.user.zsh
source $ZDOTDIR/aliases.zsh
[ -e $ZDOTDIR/aliases.user.zsh ] && source $ZDOTDIR/aliases.user.zsh
source $ZDOTDIR/prompt.zsh
[ -e $ZDOTDIR/prompt.user.zsh ] && source $ZDOTDIR/prompt.user.zsh
true

12
05-start.zsh Normal file
View File

@ -0,0 +1,12 @@
# shellcheck shell=bash
# vim: ft=sh
# Enable Powerlevel10k instant prompt.
# Should stay close to the top of ~/.config/zsh/.zshrc.
# Initialization code that may require console input
# (password prompts, [y/n] confirmations, etc.)
# must go above this block; everything else may go below.
if [ -r "${XDG_CACHE_HOME}/p10k-instant-prompt-${(%):-%n}.zsh" ]; then
source "${XDG_CACHE_HOME}/p10k-instant-prompt-${(%):-%n}.zsh"
fi

30
15-options.zsh Normal file
View File

@ -0,0 +1,30 @@
# shellcheck shell=bash
# vim: ft=sh
setopt AUTO_PUSHD # Push the current directory visited on the stack.
setopt PUSHD_IGNORE_DUPS # Do not store duplicates in the stack.
setopt PUSHD_SILENT # Do not print the directory stack after pushd or popd.
autoload -Uz allopt zed zmv zcalc colors is-at-least
colors
zmodload zsh/terminfo
autoload -Uz edit-command-line
zle -N edit-command-line
autoload -Uz select-word-style
select-word-style shell
if [ -z ${DISABLE_MAGIC_FUNCTIONS+set} ]; then
if is-at-least 5.1; then
autoload -Uz bracketed-paste-magic
zle -N bracketed-paste bracketed-paste-magic
fi
autoload -Uz url-quote-magic
zle -N self-insert url-quote-magic
fi
# Подсветка вывода основных команд
if [[ -r /etc/grc.zsh ]]; then source /etc/grc.zsh; fi

View File

@ -1,9 +1,12 @@
HISTFILE="$HOME/.cache/zsh/history"
HISTSIZE=10000000
SAVEHIST=10000000
# shellcheck shell=bash
# vim: ft=sh
HISTFILE="$ZSH_CACHE_DIR/history"
HISTSIZE=600000
SAVEHIST=500000
HISTDUP=erase
[ ! -d "$HOME/.cache/zsh" ] && mkdir -p "$HOME/.cache/zsh"
[ ! -d "$ZSH_CACHE_DIR" ] && mkdir -p "$ZSH_CACHE_DIR"
setopt BANG_HIST # Treat the '!' character specially during expansion.
setopt EXTENDED_HISTORY # Write the history file in the ":start:elapsed;command" format.
@ -19,4 +22,3 @@ setopt HIST_REDUCE_BLANKS # Remove superfluous blanks before recording en
setopt HIST_VERIFY # Don't execute immediately upon history expansion.
setopt HIST_BEEP # Beep when accessing nonexistent history.

27
42-zinit.zsh Normal file
View File

@ -0,0 +1,27 @@
# shellcheck shell=bash
# vim: ft=sh
declare -A ZINIT
ZINIT[VERSION]="3.14.0"
ZINIT[HOME_DIR]="$ZSH_CACHE_DIR/zinit-${ZINIT[VERSION]}"
ZINIT[PLUGINS_DIR]="$ZSH_CACHE_DIR/plugins"
ZINIT[SNIPPETS_DIR]="$ZSH_CACHE_DIR/snippets"
ZINIT[ZCOMPDUMP_PATH]="$ZSH_CACHE_DIR/zcompdump"
ZPFX="$ZSH_CACHE_DIR/polaris"
if [ ! -d "${ZINIT[HOME_DIR]}" ]; then
curl -sL "https://github.com/zdharma-continuum/zinit/archive/refs/tags/v${ZINIT[VERSION]}.tar.gz" | tar zxf - -C "$ZSH_CACHE_DIR"
sed -i 's/.*zinit-self-update -q//' "${ZINIT[HOME_DIR]}/zinit-autoload.zsh"
zcompile "${ZINIT[HOME_DIR]}/zinit.zsh"
fi
source "${ZINIT[HOME_DIR]}/zinit.zsh"
autoload -Uz _zinit
(( ${+_comps} )) && _comps[zinit]=_zinit
# Расширение zinit для загрузки файлов
zinit light zdharma-continuum/z-a-patch-dl
# Расширение zinit для запуска программ и скриптов, расположенных вне $PATH
zinit light zdharma-continuum/z-a-bin-gem-node

103
45-plugins.zsh Normal file
View File

@ -0,0 +1,103 @@
# shellcheck shell=bash
# vim: ft=sh
zinit light willghatch/zsh-saneopt
zinit light mafredri/zsh-async
export ZSHZ_CASE=smart
export ZSHZ_DATA="${ZSH_CACHE_DIR}/z"
zinit ice lucid wait'0' depth'1'
zinit light agkozak/zsh-z
zinit snippet OMZP::pj
if [[ "$(id -u)" != "0" ]] && [[ -n "${DISPLAY+set}" ]]; then
zstyle ':notify:*' expire-time 5000
zstyle ':notify:*' command-complete-timeout 20
zstyle ':notify:*' enable-on-ssh yes
zinit light marzocchi/zsh-notify
fi
zinit snippet OMZL::functions.zsh
zinit snippet OMZL::clipboard.zsh
zinit snippet OMZL::key-bindings.zsh
zinit snippet OMZL::termsupport.zsh
zinit light marlonrichert/zsh-hist
if [ -x /usr/lib/command-not-found ]; then
zinit snippet OMZP::command-not-found
fi
zinit snippet OMZP::common-aliases
zinit snippet OMZP::debian
zinit snippet OMZP::isodate
if command -v mosh > /dev/null 2>&1; then
zinit snippet OMZP::mosh
fi
if command -v nmap > /dev/null 2>&1; then
zinit snippet OMZP::nmap
fi
if command -v pre-commit > /dev/null 2>&1; then
zinit snippet OMZP::pre-commit
fi
if command -v rsync > /dev/null 2>&1; then
zinit snippet OMZP::rsync
fi
zinit snippet OMZP::vscode
zinit snippet OMZP::web-search
if command -v git-lfs > /dev/null 2>&1; then
zinit light brymck/print-alias
fi
if command -v fzf > /dev/null 2>&1; then
FZF_DEFAULT_OPTS='--height 60% --layout=reverse --border'
if command -v fd > /dev/null 2>&1; then
FZF_DEFAULT_COMMAND="fd --type f"
FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
FZF_ALT_C_COMMAND="fd --type d"
fi
FZF_VERSION="$(fzf --version | sed -r 's/([0-9]+\.[0-9]+).*/\1/' )"
zinit ice lucid wait'0' mv"completion.zsh -> _fzf" pick"_fzf" as"completion"
if is-at-least "0.54" "$FZF_VERSION"; then
zinit snippet "https://raw.githubusercontent.com/junegunn/fzf/refs/tags/v${FZF_VERSION}.0/shell/completion.zsh"
zinit snippet "https://raw.githubusercontent.com/junegunn/fzf/refs/tags/v${FZF_VERSION}.0/shell/key-bindings.zsh"
else
zinit snippet "https://raw.githubusercontent.com/junegunn/fzf/refs/tags/${FZF_VERSION}.0/shell/completion.zsh"
zinit snippet "https://raw.githubusercontent.com/junegunn/fzf/refs/tags/${FZF_VERSION}.0/shell/key-bindings.zsh"
fi
fi
if command -v git > /dev/null 2>&1; then
GIT_AUTO_FETCH_INTERVAL=3600
zinit snippet OMZL::git.zsh
zinit snippet OMZP::git
zinit snippet OMZP::git-extras
zinit snippet OMZP::github
[ -z ${SSH_CONNECTION+set} ] && zinit snippet OMZP::git-auto-fetch
zinit light unixorn/git-extra-commands
fi
if command -v psql > /dev/null 2>&1; then
zinit snippet OMZP::postgres
fi
if command -v sudo > /dev/null 2>&1; then
zinit snippet OMZP::sudo
fi
if command -v systemctl > /dev/null 2>&1; then
zinit snippet OMZP::systemd
fi
if command -v vim > /dev/null 2>&1; then
zinit snippet OMZP::vim-interaction
fi
if command -v tmux > /dev/null 2>&1; then
zstyle ':prezto:module:tmux:auto-start' local 'no'
zstyle ':prezto:module:tmux:auto-start' remote 'no'
zstyle ':prezto:module:tmux:session' name "$(hostname)"
zinit ice pick'init.zsh'
zinit light laggardkernel/zsh-tmux
zinit light amyreese/zsh-titles
fi
if command -v kitty > /dev/null 2>&1; then
zinit light redxtech/zsh-kitty
fi

40
55-agents.zsh Normal file
View File

@ -0,0 +1,40 @@
# shellcheck shell=bash
# vim: ft=sh
# Copy this file to 55-agents.user.zsh and modify to your needs
# SSH agent #{{{
# if command -v ssh-agent >/dev/null 2>&1; then
# zstyle :omz:plugins:ssh-agent agent-forwarding on
# zstyle :omz:plugins:ssh-agent identities id_rsa
# zstyle :omz:plugins:ssh-agent lifetime 10h
# zinit snippet OMZP::ssh-agent
# fi
#}}}
# GPG agent #{{{
# if command -v gpg-agent >/dev/null 2>&1; then
# zinit snippet OMZP::gpg-agent
# if command -v gpg-conf >/dev/null 2>&1; then
# gpgconf --create-socketdir
# fi
# fi
#}}}
# Keychain #{{{
# if command -v keychain >/dev/null 2>&1; then
# zstyle :omz:plugins:keychain identities id_rsa 01234567
# zstyle :omz:plugins:keychain options --quiet --inherit any-once --noask --nocolor --absolute --dir ~/.cache/keychain
# zstyle :omz:plugins:keychain agents gpg,ssh
# zinit snippet OMZP::keychain
# fi
#}}}
# Keychain: вариант только для ssh-agent #{{{
# if command -v keychain >/dev/null 2>&1; then
# zstyle :omz:plugins:keychain identities id_rsa
# zstyle :omz:plugins:keychain options --quiet --inherit any-once --noask --nocolor
# zstyle :omz:plugins:keychain agents ssh
# zinit snippet OMZP::keychain
# fi
#}}}

96
62-scripts.zsh Normal file
View File

@ -0,0 +1,96 @@
# shellcheck shell=bash
# vim: ft=sh
# Обновление конфигурации zsh, менеджера zinit и плагинов
zu() {
git -C $ZDOTDIR rev-parse 2>/dev/null && git -C $ZDOTDIR pull
zinit update --parallel --all
exec zsh
}
gpsr() {
git push -u "$1" "$(git branch --show-current)"
}
ch() {
curl -s "https://cheat.sh/$1" | less -R
}
exf() {
case "$1" in
*.tar.bz2) tar xjf "$1" ;;
*.tar.gz) tar xzf "$1" ;;
*.tar.xz) tar xJf "$1" ;;
*.tbz2) tar xjf "$1" ;;
*.tgz) tar xzf "$1" ;;
*.tar) tar xf "$1" ;;
*.zip) unzip "$1" ;;
*.7z) 7z x "$1" ;;
*.iso) 7z x "$1" ;;
*.rar) unrar x "$1" ;;
*) echo "'$1' cannot be extracted" ;;
esac
}
exfl() {
for F in "$@"
do
if [ -f "$F" ]; then
exf "$F"
else
echo "'$F' is not a valid file"
fi
done
}
exd() {
case "$1" in
*.tar.bz2) b=${1%.tar.bz2}; mkdir -p "$b">/dev/null; tar xjf "$1" -C "$b" ;;
*.tar.gz) b=${1%.tar.gz}; mkdir -p "$b">/dev/null; tar xzf "$1" -C "$b" ;;
*.tar.xz) b=${1%.tar.xz}; mkdir -p "$b">/dev/null; tar xJf "$1" -C "$b" ;;
*.tbz2) b=${1%.tbz2}; mkdir -p "$b">/dev/null; tar xjf "$1" -C "$b" ;;
*.tgz) b=${1%.tgz}; mkdir -p "$b">/dev/null; tar xzf "$1" -C "$b" ;;
*.tar) b=${1%.tar}; mkdir -p "$b">/dev/null; tar xf "$1" -C "$b" ;;
*.zip) b=${1%.zip}; unzip "$1" -d "$b" ;;
*.7z) b=${1%.7z}; 7z x -o"$b" "$1" ;;
*.iso) b=${1%.iso}; 7z x -o"$b" "$1" ;;
*.rar) b=${1%.rar}; rar x "$1" "$b" ;;
*) echo "'$1' cannot be extracted" ;;
esac
}
exdl() {
for F in "$@"
do
if [ -f "$F" ]; then
exd "$F"
else
echo "'$F' is not a valid file"
fi
done
}
psgrep() {
ps aux | grep "${1:-.}" | grep -v grep
}
# Kills any process that matches a regexp passed to it
killit() {
ps aux | grep -v grep | grep "$@" | awk '{print $2}' | xargs sudo kill
}
# gather external ip address
geteip() {
curl -s -S -4 https://icanhazip.com
curl -s -S -6 https://icanhazip.com
}
# determine local IP address(es)
getip() {
if (( ${+commands[ip]} )); then
ip addr | awk '/inet /{print $2}' | command grep -v 127.0.0.1
else
ifconfig | awk '/inet /{print $2}' | command grep -v 127.0.0.1
fi
}

95
68-aliases.zsh Normal file
View File

@ -0,0 +1,95 @@
# shellcheck shell=bash
# vim: ft=sh
# zmv
alias zcp='zmv -C'
alias zln='zmv -L'
# shellcheck disable=SC2154
alias path='print -l $path'
alias mkdir='mkdir -pv'
# APT
alias aptu='sudo apt-get update'
alias aptn='sudo apt-get update && sudo apt-get dist-upgrade'
alias apti='sudo apt-get install'
alias aptp='sudo apt-get purge'
alias aptr='sudo apt-get remove'
alias aptc='sudo apt-get --purge autoremove && sudo apt-get clean'
alias aptk='sudo apt-key add'
alias apts='apt-cache show'
aptf() {
[ -z "$1" ] && return 1
if [ -z "$2" ]; then
apt-cache search "$1"
else
apt-cache search "$1" | grep "$2"
fi
}
alias lzg='lazygit'
alias lzd='lazydocker'
alias tldr='tealdeer'
# Youtube
if command -v yt-dlp > /dev/null 2>&1; then
alias ydlbest="yt-dlp --merge-output-format mkv -f 'bestvideo+bestaudio'"
alias ydlaudio="yt-dlp -f bestaudio"
alias ydl="yt-dlp --merge-output-format mkv"
alias youtube-dl="yt-dlp"
fi
# feh
command -v feh > /dev/null 2>&1 && alias feh="feh --cache-size 256 --version-sort --sort filename --image-bg black"
# Замена шрифта у заголовка окна в i3 при использовании ssh или mosh
if [ -n "${DISPLAY+set}" ] ; then
if command -v i3-msg >/dev/null 2>&1 ; then
i3-mosh () {
i3-msg -q title_format "<span foreground='#AAAAFF' font-weight='bold'>%title</span>"
mosh "$@"
i3-msg -q title_format "%title"
}
alias mosh=i3-mosh
i3-ssh () {
i3-msg -q title_format "<span foreground='#AAAAFF' font-weight='bold'>%title</span>"
ssh "$@"
i3-msg -q title_format "%title"
}
alias ssh=i3-ssh
fi
fi
# git
alias gpa="git remote | xargs -L1 git push --all"
alias gu="git pull"
alias gur="git pull --recurse-submodules"
alias gsui="git submodule update --recursive --init"
alias gsur="git submodule update --recursive --init --remote"
alias ycal="ncal $(date +%Y)"
# gdu вместо ncdu
command -v gdu > /dev/null 2>&1 && alias ncdu=gdu
# Фильтры (H,T,G,L определены в common-aliases)
alias -g N1='1>/dev/null'
alias -g N2='2>/dev/null'
alias -g NN='&>/dev/null'
alias -g S='| sort'
alias -g SU='| sort -u'
alias -g S0='| sort -z'
alias -g SU0='| sort -u -z'
alias -g X='| xargs'
alias -g X0='| xargs -0'
alias -g XS='| sort | xargs'
alias -g XS0='| sort -z | xargs -0'
alias -g Z='| fzf'
# shellcheck disable=SC1073,SC1064,SC1072
audio-join() ffmpeg -i "concat:${(j:|:)@[2,-1]}" -acodec copy $1

48
72-widgets.zsh Normal file
View File

@ -0,0 +1,48 @@
# shellcheck shell=bash
# vim: ft=sh
# Navi
if command -v navi > /dev/null 2>&1; then
zinit snippet https://github.com/denisidoro/navi/blob/master/shell/navi.plugin.zsh
function magic-ctrl-g {
if ! (( $#BUFFER )) && [[ "$CONTEXT" == start ]]; then _navi_widget; fi
}
zle -N magic-ctrl-g
bindkey '^G' magic-ctrl-g
fi
# FZF #{{{
if command -v fzf > /dev/null 2>&1; then
function magic-ctrl-f {
if ! (( $#BUFFER )) && [[ "$CONTEXT" == start ]]; then fzf-file-widget; fi
}
zle -N magic-ctrl-f
bindkey '^F' magic-ctrl-f
fi
#}}}
ZSH_FZF_PASTE_KEY=enter
ZSH_FZF_EXEC_KEY=ctrl-r
fzf-kill-proc-by-list() {
local cmd=$([ "$UID" != '0' ] && echo "ps -f -u $UID" || echo 'ps -ef')
local res=$(${=cmd} \
| FZF_DEFAULT_OPTS="${FZF_DEFAULT_OPTS}
--no-sort
--reverse
--bind=\"${ZSH_FZF_PASTE_KEY}:execute@echo kill -9 \$(echo {} | awk '{print \$2}')@+abort\"
--bind=\"${ZSH_FZF_EXEC_KEY}:execute@kill -9 \$(echo {} | awk '{print \$2}')@+abort\"
" $(__fzfcmd))
if [[ -n "$res" ]]; then
LBUFFER=${LBUFFER}$res
zle redisplay
else
zle reset-prompt
fi
}
if command -v fzf > /dev/null 2>&1; then
zle -N fzf-kill-proc-by-list
bindkey '^Z' fzf-kill-proc-by-list
fi

6
78-keybindings.zsh Normal file
View File

@ -0,0 +1,6 @@
# shellcheck shell=bash
# vim: ft=sh
# [Esc] [Esc]
bindkey '\e\e' send-break

53
82-completion.zsh Normal file
View File

@ -0,0 +1,53 @@
# shellcheck shell=bash
# vim: ft=sh
# Speed up autocomplete, force prefix mapping
zstyle ':completion:*' accept-exact '*(N)'
zstyle ':completion:*' use-cache on
zstyle ':completion:*' cache-path "$ZSH_CACHE_DIR"
zstyle ':completion:*' menu select
zstyle ':completion:*:processes' command 'ps -ax'
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;32'
zstyle ':completion:*:*:kill:*' menu yes select
zstyle ':completion:*:*:kill:*' force-list always
zstyle ':completion:*:*:kill:*' insert-ids single
zstyle ':completion:*:processes-names' command 'ps -e -o comm='
zstyle ':completion:*:*:killall:*' menu yes select
zstyle ':completion:*:killall:*' force-list always
# SSH/SCP/RSYNC
zstyle ':completion:*:(ssh|scp|rsync):*' hosts off
zstyle ':completion:*:(scp|rsync):*' tag-order 'hosts:-host hosts:-domain:domain hosts:-ipaddr:ip\ address *'
zstyle ':completion:*:(scp|rsync):*' group-order users files all-files hosts-domain hosts-host hosts-ipaddr
zstyle ':completion:*:ssh:*' tag-order users 'hosts:-host hosts:-domain:domain hosts:-ipaddr:ip\ address *'
zstyle ':completion:*:ssh:*' group-order hosts-domain hosts-host users hosts-ipaddr
zstyle ':completion:*:(ssh|scp|rsync):*:hosts-host' ignored-patterns '*.*' loopback localhost
zstyle ':completion:*:(ssh|scp|rsync):*:hosts-domain' ignored-patterns '<->.<->.<->.<->' '^*.*' '*@*'
zstyle ':completion:*:(ssh|scp|rsync):*:hosts-ipaddr' ignored-patterns '^<->.<->.<->.<->' '127.0.0.<->'
# marlonrichert/zsh-autocomplete
zinit wait'0' lucid light-mode depth'1' for \
atinit"ZINIT[COMPINIT_OPTS]=-C; zicompinit; zicdreplay" \
zdharma-continuum/fast-syntax-highlighting \
blockf \
zsh-users/zsh-completions \
atload"!_zsh_autosuggest_start" \
zsh-users/zsh-autosuggestions
zinit wait'0' lucid light-mode depth'1' for \
atload"bindkey '^[[A' history-substring-search-up; \
bindkey '^[[B' history-substring-search-down" \
zsh-users/zsh-history-substring-search
#[ "$(lsb_release -c -s)" = "orel" ] && ZSH_HISTORY_SEARCH_MULTI_WORD_MODE=1
#[ -n "${SSH_CONNECTION}" ] && ZSH_HISTORY_SEARCH_MULTI_WORD_MODE=2
#zstyle ':history-search-multi-word' page-size "$((LINES/2))"
#zstyle ':plugin:history-search-multi-word' clear-on-cancel 'yes'
#zinit ice if'[[ -z ${ZSH_HISTORY_SEARCH_MULTI_WORD_MODE+set} ]]' \
# wait'0' lucid light-mode depth'1' for \
# atload"bindkey '^K' history-search-multi-word"
#zinit light zdharma-continuum/history-search-multi-word

20
88-prompt.zsh Normal file
View File

@ -0,0 +1,20 @@
# shellcheck shell=bash
# vim: ft=sh
if is-at-least 5.3; then
zinit ice depth"1" # git clone depth
zinit light romkatv/powerlevel10k
# To customize prompt, run `p10k configure` or edit ~/.config/zsh/.p10k.zsh.
if [[ -r "$ZDOTDIR/.p10k.user.zsh" ]]; then
source "$ZDOTDIR/.p10k.user.zsh"
else
if [[ "$TERM" = "xterm" ]]; then
[[ -r "$ZDOTDIR/.p10k.8colors.zsh" ]] && source "$ZDOTDIR/.p10k.8colors.zsh"
else
[[ -r "$ZDOTDIR/.p10k.zsh" ]] && source "$ZDOTDIR/.p10k.zsh"
fi
fi
else
zinit light agkozak/agkozak-zsh-prompt
fi

3
95-finish.zsh Normal file
View File

@ -0,0 +1,3 @@
# shellcheck shell=bash
# vim: ft=sh

187
README.md
View File

@ -1,36 +1,48 @@
# Быстрая установка
```sh
sudo apt-get install curl
sh -c "$(curl -fsSL https://git.246060.ru/config/zsh/raw/branch/master/install.sh)"
```
# Установка
Установка необходимых пакетов:
Установить оболочку [Zsh](https://www.zsh.org) и git:
```sh
sudo apt-get install zsh antibody
sudo apt-get install git zsh curl
```
Установка желательных пакетов:
На системах, где нет пакета Zsh или есть только старая версия, можно установить статически
скомпилированную версию программы командой:
```sh
sudo apt-get install keychain peco wmctrl xdotool
sh -c "$(curl -fsSL https://raw.githubusercontent.com/romkatv/zsh-bin/master/install)"
```
Клонирование репозитория в каталог `~/.config/zsh`:
Установить рекомендуемые пакеты:
```sh
git clone https://git.246060.ru/f1x1t/zshrc ~/.config/zsh
sudo apt-get install command-not-found grc grepcidr kitty-terminfo wmctrl xdotool
```
Установить дополнительные программы по [инструкции](https://git.246060.ru/config/eget/).
Клонировать репозиторий с настройками Zsh в каталог `~/.config/zsh`:
```sh
git clone https://git.246060.ru/config/zsh ~/.config/zsh
```
# Базовая настройка
С правами суперпользователя открыть файл `/etc/zsh/zshenv`
в редакторе командой
```sh
sudo ${EDITOR:-mcedit} /etc/zsh/zshenv
```
и добавить строку
Создать файл `$HOME/.zshenv` со следующим содержимым:
```sh
# Загрузка конфигурации из каталога $ZDOTDIR
export ZDOTDIR=$HOME/.config/zsh
source $ZDOTDIR/.zshenv
```
Установить интерпретатор Zsh по умолчанию для пользователя `username`.
@ -39,21 +51,67 @@ export ZDOTDIR=$HOME/.config/zsh
sudo usermod -s /usr/bin/zsh username
```
# Установка шрифтов
```sh
wget -A ".deb" -c -q -np -nd -r -l 1 https://deb.246060.ru/bin/fonts/pool/main/f/fonts-iosevka-prog/
wget -A ".deb" -c -q -np -nd -r -l 1 https://deb.246060.ru/bin/fonts/pool/main/f/fonts-iosevka-prog-nerd/
sudo dpkg -i fonts*deb
```
# Настройка агентов
Существует несколько вариантов настройки агентов для SSH и/или GPG.
Для любого из вариантов следует скопировать шаблонный файл для настроек:
```sh
cp ~/.config/zsh/agents.zsh ~/.config/zsh/agents.user.zsh
cp ~/.config/zsh/55-agents.zsh ~/.config/zsh/55-agents.user.zsh
```
## Настройка SSH агента
Установить необходимые пакеты:
```sh
sudo apt install openssh-client
```
Раскомментировать в файле ` ~/.config/zsh/55-agents.user.zsh` строки:
```sh
# if command -v ssh-agent >/dev/null 2>&1; then
# zstyle :omz:plugins:ssh-agent agent-forwarding on
# zstyle :omz:plugins:ssh-agent identities id_rsa
# zstyle :omz:plugins:ssh-agent lifetime 10h
# zinit snippet OMZP::ssh-agent
# fi
```
Добавить в конец файла `~/.ssh/config` правило для разрешения агенту сохранять ключи:
```text
Host *
AddKeysToAgent yes
```
## Настройка GPG агента
Раскомментировать в файле ` ~/.config/zsh/agents.user.zsh` строки:
Установить необходимые пакеты:
```text
# antibody bundle ohmyzsh/ohmyzsh path:plugins/gpg-agent
```sh
sudo apt install openssh-client gpg-agent gpgconf
```
Раскомментировать в файле ` ~/.config/zsh/55-agents.user.zsh` строки:
```sh
# if command -v gpg-agent >/dev/null 2>&1; then
# zinit snippet OMZP::gpg-agent
# if command -v gpg-conf >/dev/null 2>&1; then
# gpgconf --create-socketdir
# fi
# fi
```
Пример файла настройки GPG агента `~/.config/gnupg/gpg-agent.conf`:
@ -69,43 +127,80 @@ pinentry-program /usr/bin/pinentry-qt
```
Чтобы включить в GPG агенте поддержку SSH, нужно раскомментировать
последнюю строку.
## Настройка SSH агента
Раскомментировать в файле ` ~/.config/zsh/agents.user.zsh` строки:
```text
# zstyle :omz:plugins:ssh-agent agent-forwarding on
# zstyle :omz:plugins:ssh-agent identities id_rsa
# zstyle :omz:plugins:ssh-agent lifetime 10h
# antibody bundle ohmyzsh/ohmyzsh path:plugins/ssh-agent
```
Добавить в конец файла `~/.ssh/config` правило для разрешения агенту сохранять ключи:
```text
Host *
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
```
последнюю строку и отредактировать файл `~/.ssh/config`, как это описано
в разделе настройки SSH.
## Настройка Keychain
Программа Keychain позволит использовать агенты GPG и SSH между входами в систему.
Для её работы необходимо отключить в системе все автоматические запуски агентов,
например в файле `/etc/X11/Xsession.options`.
например в файле `/etc/X11/Xsession.options` удалить строку:
Раскомментировать в файле ` ~/.config/zsh/agents.user.zsh` строки:
```sh
use-ssh-agent
```
```text
# zstyle :omz:plugins:keychain identities id_rsa 01234567
# zstyle :omz:plugins:keychain options --quiet --inherit local-once --noask --nocolor --quick
# zstyle :omz:plugins:keychain agents gpg,ssh
# antibody bundle ohmyzsh/ohmyzsh path:plugins/keychain
Установить необходимые пакеты:
```sh
sudo apt install keychain openssh-client gpg-agent gpgconf
```
Раскомментировать в файле ` ~/.config/zsh/55-agents.user.zsh` строки:
```sh
# if command -v keychain >/dev/null 2>&1; then
# zstyle :omz:plugins:keychain identities id_rsa 01234567
# zstyle :omz:plugins:keychain options --quiet --inherit any-once --noask --nocolor --absolute --dir ~/.cache/keychain
# zstyle :omz:plugins:keychain agents gpg,ssh
# zinit snippet OMZP::keychain
# fi
```
Отредактировать файлы настроек для агента GPG и SSH, как это описано в разделах выше.
## Инициализация
После редактирования файлов настройки запустить `zsh`. Автоматически будет загружен
менеджер [zinit](https://github.com/zdharma-continuum/zinit) и необходимые плагины.
## Обновление
Обновление `zinit` и плагинов:
```sh
zu
````
## Устранение проблем
Для решения некоторых проблем необходимо загрузить файл с дополнительными
командами в терминале:
```sh
source $HOME/.config/zsh/fixes.zsh
```
Если в системе установлена программа `fzf` версии ниже `0.53.0`, то может
не работать поиск по истории, файлам и автодополнение. Исправление:
```
fix-update-fzf
```
Для обеспечения поддержки терминала `kitty` на системах, где недоступно
его описание, можно выполнить команду:
```sh
fix-kitty-terminal-support
```
Для исправления работы файлового менеджера Midnight Commander в терминале
`kitty`, можно выполнить команду:
```sh
fix-mc-kitty-support -f
```

View File

@ -1,23 +0,0 @@
# Copy this file to agents.user.zsh and modify to your needs
##
# SSH agent
##
# zstyle :omz:plugins:ssh-agent agent-forwarding on
# zstyle :omz:plugins:ssh-agent identities id_rsa
# zstyle :omz:plugins:ssh-agent lifetime 10h
# antibody bundle ohmyzsh/ohmyzsh path:plugins/ssh-agent
##
# GPG agent
##
# antibody bundle ohmyzsh/ohmyzsh path:plugins/gpg-agent
##
# Keychain
##
# zstyle :omz:plugins:keychain identities id_rsa 01234567
# zstyle :omz:plugins:keychain options --quiet --inherit local-once --noask --nocolor --quick
# zstyle :omz:plugins:keychain agents gpg,ssh
# antibody bundle ohmyzsh/ohmyzsh path:plugins/keychain

View File

@ -1,12 +0,0 @@
# Dotdrop
alias dotdrop="$HOME/etc/dotdrop.sh" --cfg="$HOME/etc/config.yaml"
# APT
alias u='sudo apt-get update && sudo apt-get dist-upgrade'
# Youtube
alias ydlbest="youtube-dl --merge-output-format mkv -f 'bestvideo+bestaudio'"
# feh
alias feh="feh --cache-size 256 --version-sort --sort filename --image-bg black"

22
env.zsh
View File

@ -1,22 +0,0 @@
export XDG_CONFIG_HOME=$HOME/.config
export XDG_CACHE_HOME=$HOME/.cache
export XDG_DATA_HOME=$HOME/.local/share
export PATH=$HOME/bin:$HOME/.local/bin:$PATH
# Удалить дубликаты в PATH
typeset -U PATH
export GNUPGHOME=$HOME/.config/gnupg
export SVDIR=$HOME/sv
# Настройка uncrustify
UNCRUSTIFY_CONFIG="${XDG_CONFIG_HOME}/uncrustify/default.cfg"
[ -e "${UNCRUSTIFY_CONFIG}" ] && export UNCRUSTIFY_CONFIG
# Настройка компилятора Intel (если установлен)
[ -e /opt/intel/bin/compilervars.sh ] && source /opt/intel/bin/compilervars.sh intel64 > /dev/null
[ -e /opt/intel/vtune_amplifier/amplxe-vars.sh ] && source /opt/intel/vtune_amplifier/amplxe-vars.sh > /dev/null
[ -e /opt/intel/inspector/inspxe-vars.sh ] && source /opt/intel/inspector/inspxe-vars.sh > /dev/null
[ -e /opt/intel/advisor/advixe-vars.sh ] && source /opt/intel/advisor/advixe-vars.sh > /dev/null

32
fixes.zsh Normal file
View File

@ -0,0 +1,32 @@
#!/bin/bash
# Установка файла описания терминала kitty на системы,
# где отсутствует пакет kitty-terminfo
fix-kitty-terminal-support() {
mkdir -p $HOME/.terminfo/x
curl -fsSL https://github.com/kovidgoyal/kitty/raw/master/terminfo/x/xterm-kitty > $HOME/.terminfo/x/xterm-kitty
}
# Настройка mc для работы в терминале kitty
# Необходимо закрыть все экземпляры mc для текущего пользователя
# При вызове функции с параметром -f текущие настройки клавиш
# для работы mc в терминале kitty будут перезаписаны
fix-mc-kitty-support() {
local cfg="${HOME}/.config/mc/ini"
[[ "$1" == "-f" ]] && sed -i '/\[terminal:xterm-kitty\]/,/^$/{d}' "${cfg}"
if [ -w "${cfg}" ]; then
if ! grep -qF "[terminal:xterm-kitty]" "${cfg}" ; then
echo >> "${cfg}"
echo "[terminal:xterm-kitty]" >> "${cfg}"
echo "copy=xterm" >> "${cfg}"
fi
fi
}
# Новые версии плагинов для поиска используют функционал fzf версии 0.54.1.
fix-update-fzf() {
mkdir -p $HOME/bin
wget -O- https://github.com/junegunn/fzf/releases/download/v0.54.1/fzf-0.54.1-linux_amd64.tar.gz | tar -zxf - -C $HOME/bin
}

20
install.sh Normal file
View File

@ -0,0 +1,20 @@
#!/bin/sh
set -e
sudo apt-get install git zsh curl wget
git clone https://git.246060.ru/config/zsh $HOME/.config/zsh
cat <<EOF > $HOME/.zshenv
# Загрузка конфигурации из каталога \$ZDOTDIR
export ZDOTDIR=\$HOME/.config/zsh
source \$ZDOTDIR/.zshenv
EOF
sudo usermod -s $(which zsh) $(whoami)
TEMP="${XDG_RUNTIME_DIR:-/tmp}"
wget -P "$TEMP" -c -r -nd --no-parent -A "fonts-iosevka-prog-nerd_*_all.deb" https://deb.246060.ru/bin/fonts/pool/main/f/fonts-iosevka-prog-nerd/
sudo dpkg -i "$TEMP"/fonts-iosevka-prog-nerd_*_all.deb
rm -f "$TEMP"/fonts-iosevka-prog-nerd_*_all.deb

View File

@ -1,16 +0,0 @@
# https://github.com/wting/autojump
# apt-get install autojump
[[ -s /usr/share/autojump/autojump.sh ]] && source /usr/share/autojump/autojump.sh
# Автодополнение
autoload -Uz compinit
typeset -i updated_at=$(date +'%j' -r ~/.zcompdump 2>/dev/null || stat -f '%Sm' -t '%j' ~/.zcompdump 2>/dev/null)
if [ $(date +'%j') != $updated_at ]; then
compinit -i
else
compinit -C -i
fi
zmodload -i zsh/complist

View File

@ -1,22 +0,0 @@
# Менеджер плагинов antibody
source <(antibody init)
# Плагины
antibody bundle zdharma/fast-syntax-highlighting
antibody bundle zsh-users/zsh-autosuggestions
antibody bundle zsh-users/zsh-history-substring-search
antibody bundle zsh-users/zsh-completions
antibody bundle marzocchi/zsh-notify
antibody bundle buonomo/yarn-completion
antibody bundle jimeh/zsh-peco-history
antibody bundle ohmyzsh/ohmyzsh path:plugins/command-not-found
antibody bundle ohmyzsh/ohmyzsh path:plugins/common-aliases
antibody bundle ohmyzsh/ohmyzsh path:plugins/debian
antibody bundle ohmyzsh/ohmyzsh path:plugins/git
antibody bundle ohmyzsh/ohmyzsh path:plugins/postgres
antibody bundle ohmyzsh/ohmyzsh path:plugins/sudo
antibody bundle ohmyzsh/ohmyzsh path:plugins/systemd
antibody bundle ohmyzsh/ohmyzsh path:plugins/vim-interaction
antibody bundle ohmyzsh/ohmyzsh path:plugins/web-search

View File

@ -1,31 +0,0 @@
# Theme
# Install powerline font
SPACESHIP_PROMPT_ORDER=(
user # Username section
dir # Current directory section
host # Hostname section
git # Git section (git_branch + git_status)
hg # Mercurial section (hg_branch + hg_status)
exec_time # Execution time
line_sep # Line break
vi_mode # Vi-mode indicator
jobs # Background jobs indicator
exit_code # Exit code section
char # Prompt character
)
SPACESHIP_PROMPT_ADD_NEWLINE=false
SPACESHIP_PROMPT_SEPARATE_LINE=false
SPACESHIP_CHAR_SYMBOL=""
SPACESHIP_CHAR_SUFFIX=" "
# Simplify prompt if we're using Hyper
if [[ "$TERM_PROGRAM" == "Hyper" ]]; then
SPACESHIP_PROMPT_SEPARATE_LINE=false
SPACESHIP_DIR_SHOW=false
SPACESHIP_GIT_BRANCH_SHOW=false
fi
antibody bundle denysdovhan/spaceship-prompt