Compare commits
90 Commits
c00e6d09ef
...
master
Author | SHA1 | Date | |
---|---|---|---|
eea38195a1 | |||
c7bb09d5bc | |||
0ab8f29d9e | |||
ffb71f5600 | |||
ee02aea5a7 | |||
1df17fc702 | |||
62670c583c | |||
faa5c5a550 | |||
4d8052da4b | |||
bb4f1bbb53 | |||
44111962f2 | |||
9c38804a6a | |||
6562cc7774 | |||
d8eb4a6049 | |||
0246176d38 | |||
6d35685e33 | |||
312733c575 | |||
a7e2a48581 | |||
442480e151 | |||
b25739c78b | |||
88efc82376 | |||
9e58e8e04f | |||
c0c1920574 | |||
842b64bfe1 | |||
484a4b943f | |||
a288ff89ed | |||
48902750b9 | |||
ce3d65d15b | |||
ab88a647c0 | |||
0d440310bd | |||
566cca7844 | |||
188e40834e | |||
3819c3ee74 | |||
8364968e2f | |||
b1ab03e165 | |||
020da06b8a | |||
01f900a450 | |||
dd91f10bb4 | |||
0943137da8 | |||
5e593ade5e | |||
2b8ea8a194 | |||
edf4ef872c | |||
9730fc1f5c | |||
9aa3dec349 | |||
834a086fbc | |||
c7b2bbb92f | |||
a545d3be52 | |||
9dc78aa73d | |||
ebbc50dc4c | |||
75c47072f9 | |||
41cc096839 | |||
33eb5a63e1 | |||
505bccc687 | |||
8321fb3a86 | |||
1be479ca64 | |||
43a6deb60c | |||
3df25cc280 | |||
bc176b9f3a | |||
d7f8f98895 | |||
addc2bbc65 | |||
8d6f4d0a0c | |||
345d23e0dc | |||
a20d17eb8b | |||
df7bc41b32 | |||
e09e731101 | |||
a8f767c95d | |||
0d1192758c | |||
311c596fca | |||
193684d640 | |||
fb5782101b | |||
5773b855f3 | |||
19280ec6fc | |||
6b44017c88 | |||
723cf0b917 | |||
4514bed79d | |||
fc40d816f9 | |||
785476f0b2 | |||
b61cbee31d | |||
bb3ea52f23 | |||
3877f9aacc | |||
120501c27a | |||
b40c45ed19 | |||
eeaa1d8b55 | |||
d0292e504b | |||
3239797775 | |||
16c0331040 | |||
e6831d7126 | |||
227ba485f2 | |||
bf2bee47e4 | |||
a091c15045 |
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,6 +1,7 @@
|
|||||||
*.post.zsh
|
*.post.zsh
|
||||||
*.pre.zsh
|
*.pre.zsh
|
||||||
*.user.zsh
|
*.user.zsh
|
||||||
|
.zshenv.user
|
||||||
.zcalc_history
|
.zcalc_history
|
||||||
.zcompdump*
|
.zcompdump*
|
||||||
*.zwc
|
*.zwc
|
||||||
|
1652
.p10k.8colors.zsh
Normal file
1652
.p10k.8colors.zsh
Normal file
File diff suppressed because it is too large
Load Diff
73
.zshenv
73
.zshenv
@ -1,11 +1,82 @@
|
|||||||
|
# shellcheck shell=bash
|
||||||
|
# vim: ft=sh
|
||||||
|
|
||||||
# Запрет чтения настроек из системного каталога /etc
|
# Запрет чтения настроек из системного каталога /etc
|
||||||
unsetopt GLOBAL_RCS
|
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_CONFIG_HOME="$HOME/.config"
|
||||||
export XDG_CACHE_HOME="$HOME/.cache"
|
export XDG_CACHE_HOME="$HOME/.cache"
|
||||||
export XDG_DATA_HOME="$HOME/.local/share"
|
export XDG_DATA_HOME="$HOME/.local/share"
|
||||||
|
export XDG_STATE_HOME="$HOME/.local/state"
|
||||||
|
# }}}
|
||||||
|
|
||||||
export ZSH_CACHE_DIR="$XDG_CACHE_HOME/zsh"
|
export ZSH_CACHE_DIR="$XDG_CACHE_HOME/zsh"
|
||||||
export ZSH_COMPDUMP="$ZSH_CACHE_DIR/zcompdump-${HOST/.*/}-$ZSH_VERSION"
|
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"
|
||||||
|
|
||||||
|
33
.zshrc
33
.zshrc
@ -1,30 +1,31 @@
|
|||||||
|
# shellcheck shell=bash
|
||||||
|
# vim: ft=sh
|
||||||
|
|
||||||
# Profiling start
|
# Profiling start
|
||||||
# zmodload zsh/zprof
|
# zmodload zsh/zprof
|
||||||
|
|
||||||
for S in \
|
for S in \
|
||||||
05-start \
|
05-start \
|
||||||
15-env \
|
15-options \
|
||||||
25-history \
|
25-history \
|
||||||
35-options \
|
42-zinit \
|
||||||
42-zcomet \
|
45-plugins \
|
||||||
45-prompt \
|
|
||||||
48-plugins \
|
|
||||||
55-agents \
|
55-agents \
|
||||||
65-scripts \
|
62-scripts \
|
||||||
75-aliases \
|
68-aliases \
|
||||||
85-completion \
|
72-widgets \
|
||||||
|
78-keybindings \
|
||||||
|
82-completion \
|
||||||
|
88-prompt \
|
||||||
95-finish
|
95-finish
|
||||||
do
|
do
|
||||||
N="${S//[0-9\-]/}"
|
N="${S//[0-9\-]/}"
|
||||||
[ -e "$ZDOTDIR/$S.pre.zsh" ] && source "$ZDOTDIR/$S.pre.zsh"
|
if [[ -r "$ZDOTDIR/$S.pre.zsh" ]]; then source "$ZDOTDIR/$S.pre.zsh"; fi
|
||||||
[ -e "$ZDOTDIR/$S.zsh" ] && source "$ZDOTDIR/$S.zsh"
|
if [[ -r "$ZDOTDIR/$S.zsh" ]]; then source "$ZDOTDIR/$S.zsh"; fi
|
||||||
[ -e "$ZDOTDIR/$S.user.zsh" ] && source "$ZDOTDIR/$S.user.zsh"
|
if [[ -r "$ZDOTDIR/$S.user.zsh" ]]; then source "$ZDOTDIR/$S.user.zsh"; fi
|
||||||
[ -e "$ZDOTDIR/$N.user.zsh" ] && source "$ZDOTDIR/$N.user.zsh"
|
if [[ -r "$ZDOTDIR/$N.user.zsh" ]]; then source "$ZDOTDIR/$N.user.zsh"; fi
|
||||||
[ -e "$ZDOTDIR/$S.post.zsh" ] && source "$ZDOTDIR/$S.post.zsh"
|
if [[ -r "$ZDOTDIR/$S.post.zsh" ]]; then source "$ZDOTDIR/$S.post.zsh"; fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# To customize prompt, run `p10k configure` or edit ~/.config/zsh/.p10k.zsh.
|
|
||||||
[[ ! -f "${ZDOTDIR}/.p10k.zsh" ]] || source "${ZDOTDIR}/.p10k.zsh"
|
|
||||||
|
|
||||||
# zprof
|
# zprof
|
||||||
|
|
||||||
|
11
05-start.zsh
11
05-start.zsh
@ -1 +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
|
||||||
|
|
||||||
|
55
15-env.zsh
55
15-env.zsh
@ -1,55 +0,0 @@
|
|||||||
# PATH
|
|
||||||
if [[ -d "$HOME/.gem/ruby" ]]; then
|
|
||||||
PATH="$(find $HOME/.gem/ruby -maxdepth 2 -name bin -type d | sort -r | tr '\n' ':')$PATH"
|
|
||||||
fi
|
|
||||||
|
|
||||||
for P in \
|
|
||||||
"$HOME/bin" \
|
|
||||||
"$HOME/.local/bin"
|
|
||||||
do
|
|
||||||
if [[ -d "${P}" ]]; then
|
|
||||||
export PATH="${P}:${PATH}"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Отключаем некоторые плагины, если запуск в качестве подоболочки mc
|
|
||||||
# Bug: https://midnight-commander.org/ticket/4253
|
|
||||||
#if ps $PPID | grep mc; then
|
|
||||||
# export ZSH_MC_WORKAROUND=1
|
|
||||||
#fi
|
|
||||||
|
|
||||||
# Удалить дубликаты в PATH
|
|
||||||
typeset -U PATH
|
|
||||||
|
|
||||||
export GNUPGHOME="$XDG_CONFIG_HOME/gnupg"
|
|
||||||
export SVDIR="$HOME/sv"
|
|
||||||
|
|
||||||
# ASKPASS
|
|
||||||
if [ ! -z ${DISPLAY+x} ]; then
|
|
||||||
if command -v /usr/lib/openssh/gnome-ssh-askpass 2>&1 >/dev/null; then
|
|
||||||
export SSH_ASKPASS=/usr/lib/openssh/gnome-ssh-askpass
|
|
||||||
elif command -v /usr/bin/lxqt-openssh-askpass 2>&1 >/dev/null; then
|
|
||||||
export SSH_ASKPASS=/usr/bin/lxqt-openssh-askpass
|
|
||||||
elif command -v /usr/bin/ssh-askpass 2>&1 >/dev/null; then
|
|
||||||
export SSH_ASKPASS=/usr/bin/ssh-askpass
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Настройка uncrustify
|
|
||||||
UNCRUSTIFY_CONFIG="${XDG_CONFIG_HOME}/uncrustify/default.cfg"
|
|
||||||
[ -e "${UNCRUSTIFY_CONFIG}" ] && export UNCRUSTIFY_CONFIG
|
|
||||||
|
|
||||||
# Настройка Intel Studio
|
|
||||||
if [ ! -z ${ENABLE_INTEL_STUDIO+x} ]; then
|
|
||||||
#export COMPILERVARS_ARCHITECTURE=intel64
|
|
||||||
#export COMPILERVARS_PLATFORM=linux
|
|
||||||
#/opt/intel/bin/iccvars.sh
|
|
||||||
INTEL_VARS=( /opt/intel/advisor/advixe-vars.sh
|
|
||||||
/opt/intel/inspector/inspxe-vars.sh
|
|
||||||
/opt/intel/vtune_profiler/vtune-vars.sh )
|
|
||||||
|
|
||||||
for f in ${INTEL_VARS[*]}; do
|
|
||||||
[ -e "$f" ] && source "$f" > /dev/null
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
@ -1,3 +1,6 @@
|
|||||||
|
# shellcheck shell=bash
|
||||||
|
# vim: ft=sh
|
||||||
|
|
||||||
setopt AUTO_PUSHD # Push the current directory visited on the stack.
|
setopt AUTO_PUSHD # Push the current directory visited on the stack.
|
||||||
setopt PUSHD_IGNORE_DUPS # Do not store duplicates in 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.
|
setopt PUSHD_SILENT # Do not print the directory stack after pushd or popd.
|
||||||
@ -9,18 +12,19 @@ zmodload zsh/terminfo
|
|||||||
|
|
||||||
autoload -Uz edit-command-line
|
autoload -Uz edit-command-line
|
||||||
zle -N edit-command-line
|
zle -N edit-command-line
|
||||||
#bindkey -M vicmd v edit-command-line
|
|
||||||
|
|
||||||
autoload -Uz select-word-style
|
autoload -Uz select-word-style
|
||||||
select-word-style shell
|
select-word-style shell
|
||||||
|
|
||||||
if is-at-least 5.1; then
|
if [ -z ${DISABLE_MAGIC_FUNCTIONS+set} ]; then
|
||||||
autoload -Uz bracketed-paste-magic
|
if is-at-least 5.1; then
|
||||||
zle -N bracketed-paste bracketed-paste-magic
|
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
|
fi
|
||||||
autoload -Uz url-quote-magic
|
|
||||||
zle -N self-insert url-quote-magic
|
|
||||||
|
|
||||||
# Подсветка вывода основных команд
|
# Подсветка вывода основных команд
|
||||||
[[ -r /etc/grc.zsh ]] && source /etc/grc.zsh
|
if [[ -r /etc/grc.zsh ]]; then source /etc/grc.zsh; fi
|
||||||
|
|
@ -1,6 +1,9 @@
|
|||||||
|
# shellcheck shell=bash
|
||||||
|
# vim: ft=sh
|
||||||
|
|
||||||
HISTFILE="$ZSH_CACHE_DIR/history"
|
HISTFILE="$ZSH_CACHE_DIR/history"
|
||||||
HISTSIZE=10000000
|
HISTSIZE=600000
|
||||||
SAVEHIST=10000000
|
SAVEHIST=500000
|
||||||
HISTDUP=erase
|
HISTDUP=erase
|
||||||
|
|
||||||
[ ! -d "$ZSH_CACHE_DIR" ] && mkdir -p "$ZSH_CACHE_DIR"
|
[ ! -d "$ZSH_CACHE_DIR" ] && mkdir -p "$ZSH_CACHE_DIR"
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
export ZCOMET_DIR="${ZSH_CACHE_DIR}/zcomet"
|
|
||||||
|
|
||||||
zstyle ':zcomet:*' home-dir "${ZCOMET_DIR}"
|
|
||||||
zstyle ':zcomet:*' repos-dir "${ZCOMET_DIR}/repos"
|
|
||||||
zstyle ':zcomet:*' snippets-dir "${ZCOMET_DIR}/snippets"
|
|
||||||
zstyle ':zcomet:compinit' dump-file "${ZSH_COMPDUMP}"
|
|
||||||
|
|
||||||
#
|
|
||||||
if [[ ! -f "${ZCOMET_DIR}/bin/zcomet.zsh" ]]; then
|
|
||||||
command git clone --depth=1 https://github.com/agkozak/zcomet.git "${ZCOMET_DIR}/bin"
|
|
||||||
fi
|
|
||||||
source "${ZCOMET_DIR}/bin/zcomet.zsh"
|
|
||||||
|
|
27
42-zinit.zsh
Normal file
27
42-zinit.zsh
Normal 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
103
45-plugins.zsh
Normal 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
|
||||||
|
|
@ -1,12 +0,0 @@
|
|||||||
if is-at-least 5.3; then
|
|
||||||
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
|
|
||||||
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ! -f "${ZCOMET_DIR}/prompt/powerlevel10k/powerlevel10k.zsh-theme" ]]; then
|
|
||||||
command git clone --depth=1 https://github.com/romkatv/powerlevel10k.git "${ZCOMET_DIR}/prompt/powerlevel10k"
|
|
||||||
fi
|
|
||||||
source "${ZCOMET_DIR}/prompt/powerlevel10k/powerlevel10k.zsh-theme"
|
|
||||||
else
|
|
||||||
zcomet load agkozak/agkozak-zsh-prompt
|
|
||||||
fi
|
|
@ -1,67 +0,0 @@
|
|||||||
zcomet trigger zhooks agkozak/zhooks
|
|
||||||
|
|
||||||
zcomet load willghatch/zsh-saneopt
|
|
||||||
zcomet load mafredri/zsh-async
|
|
||||||
zcomet load romkatv/zsh-defer
|
|
||||||
|
|
||||||
export ZSHZ_CASE=smart
|
|
||||||
export ZSHZ_DATA="${ZSH_CACHE_DIR}/z"
|
|
||||||
zcomet load agkozak/zsh-z
|
|
||||||
|
|
||||||
if [[ "$DISPLAY" != '' ]] && command -v xdotool > /dev/null 2>&1 && command -v wmctrl > /dev/null 2>&1; then
|
|
||||||
zstyle ':notify:*' expire-time 5000
|
|
||||||
zstyle ':notify:*' command-complete-timeout 20
|
|
||||||
zstyle ':notify:*' enable-on-ssh yes
|
|
||||||
zcomet load marzocchi/zsh-notify
|
|
||||||
fi
|
|
||||||
if command -v peco > /dev/null 2>&1; then
|
|
||||||
zcomet load jimeh/zsh-peco-history
|
|
||||||
fi
|
|
||||||
|
|
||||||
zcomet load ohmyzsh lib key-bindings.zsh
|
|
||||||
zcomet load ohmyzsh plugins/autojump
|
|
||||||
zcomet load ohmyzsh plugins/command-not-found
|
|
||||||
zcomet load ohmyzsh plugins/common-aliases
|
|
||||||
zcomet load ohmyzsh plugins/debian
|
|
||||||
zcomet load ohmyzsh plugins/isodate
|
|
||||||
zcomet load ohmyzsh plugins/nmap
|
|
||||||
zcomet load ohmyzsh plugins/rsync
|
|
||||||
zcomet load ohmyzsh plugins/web-search
|
|
||||||
zcomet load brymck/print-alias
|
|
||||||
|
|
||||||
if command -v fzf > /dev/null 2>&1; then
|
|
||||||
zcomet load junegunn/fzf shell completion.zsh key-bindings.zsh
|
|
||||||
(( ${+commands[fzf]} )) || ~[fzf]/install --bin
|
|
||||||
fi
|
|
||||||
if command -v git > /dev/null 2>&1; then
|
|
||||||
GIT_AUTO_FETCH_INTERVAL=3600
|
|
||||||
zcomet load ohmyzsh plugins/git
|
|
||||||
zcomet load ohmyzsh plugins/gitfast
|
|
||||||
[ -z "$SSH_CONNECTION" ] && zcomet load ohmyzsh plugins/git-auto-fetch
|
|
||||||
zcomet load ohmyzsh plugins/git-extras
|
|
||||||
zcomet load ohmyzsh plugins/github
|
|
||||||
zcomet load paulirish/git-open
|
|
||||||
fi
|
|
||||||
if command -v psql > /dev/null 2>&1; then
|
|
||||||
zcomet load ohmyzsh plugins/postgres
|
|
||||||
fi
|
|
||||||
if command -v sudo > /dev/null 2>&1; then
|
|
||||||
zcomet load ohmyzsh plugins/sudo
|
|
||||||
fi
|
|
||||||
if command -v systemctl > /dev/null 2>&1; then
|
|
||||||
zcomet load ohmyzsh plugins/systemd
|
|
||||||
fi
|
|
||||||
if command -v vim > /dev/null 2>&1; then
|
|
||||||
zcomet load ohmyzsh plugins/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)"
|
|
||||||
zsh-defer zcomet load laggardkernel/zsh-tmux
|
|
||||||
zcomet snippet https://github.com/jreese/zsh-titles/blob/master/titles.plugin.zsh
|
|
||||||
fi
|
|
||||||
if command -v kitty > /dev/null 2>&1; then
|
|
||||||
zcomet load redxtech/zsh-kitty
|
|
||||||
fi
|
|
||||||
|
|
@ -1,22 +1,40 @@
|
|||||||
|
# shellcheck shell=bash
|
||||||
|
# vim: ft=sh
|
||||||
|
|
||||||
# Copy this file to 55-agents.user.zsh and modify to your needs
|
# Copy this file to 55-agents.user.zsh and modify to your needs
|
||||||
|
|
||||||
##
|
# SSH agent #{{{
|
||||||
# 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 agent-forwarding on
|
# zstyle :omz:plugins:ssh-agent identities id_rsa
|
||||||
# zstyle :omz:plugins:ssh-agent identities id_rsa
|
# zstyle :omz:plugins:ssh-agent lifetime 10h
|
||||||
# zstyle :omz:plugins:ssh-agent lifetime 10h
|
# zinit snippet OMZP::ssh-agent
|
||||||
# zcomet load ohmyzsh plugins/ssh-agent
|
# fi
|
||||||
|
#}}}
|
||||||
|
|
||||||
##
|
# GPG agent #{{{
|
||||||
# GPG agent
|
# if command -v gpg-agent >/dev/null 2>&1; then
|
||||||
##
|
# zinit snippet OMZP::gpg-agent
|
||||||
# zcomet load ohmyzsh plugins/gpg-agent
|
# if command -v gpg-conf >/dev/null 2>&1; then
|
||||||
|
# gpgconf --create-socketdir
|
||||||
|
# fi
|
||||||
|
# fi
|
||||||
|
#}}}
|
||||||
|
|
||||||
##
|
# Keychain #{{{
|
||||||
# Keychain
|
# if command -v keychain >/dev/null 2>&1; then
|
||||||
##
|
# zstyle :omz:plugins:keychain identities id_rsa 01234567
|
||||||
# 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 options --quiet --inherit local-once --noask --nocolor --quick
|
# zstyle :omz:plugins:keychain agents gpg,ssh
|
||||||
# zstyle :omz:plugins:keychain agents gpg,ssh
|
# zinit snippet OMZP::keychain
|
||||||
# zsh-defer zcomet load ohmyzsh plugins/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
|
||||||
|
#}}}
|
||||||
|
@ -1,9 +1,15 @@
|
|||||||
# Обновление конфигурации zsh, менджера zcomet и плагинов
|
# shellcheck shell=bash
|
||||||
|
# vim: ft=sh
|
||||||
|
|
||||||
|
# Обновление конфигурации zsh, менеджера zinit и плагинов
|
||||||
zu() {
|
zu() {
|
||||||
git -C ~/.config/zsh pull && zcomet self-update && zcomet update
|
git -C $ZDOTDIR rev-parse 2>/dev/null && git -C $ZDOTDIR pull
|
||||||
if [[ -f "${ZCOMET_DIR}/prompt/powerlevel10k/powerlevel10k.zsh-theme" ]]; then
|
zinit update --parallel --all
|
||||||
command git -C "${ZCOMET_DIR}/prompt/powerlevel10k" pull
|
exec zsh
|
||||||
fi
|
}
|
||||||
|
|
||||||
|
gpsr() {
|
||||||
|
git push -u "$1" "$(git branch --show-current)"
|
||||||
}
|
}
|
||||||
|
|
||||||
ch() {
|
ch() {
|
||||||
@ -70,7 +76,7 @@ psgrep() {
|
|||||||
|
|
||||||
# Kills any process that matches a regexp passed to it
|
# Kills any process that matches a regexp passed to it
|
||||||
killit() {
|
killit() {
|
||||||
ps aux | grep -v "grep" | grep "$@" | awk '{print $2}' | xargs sudo kill
|
ps aux | grep -v grep | grep "$@" | awk '{print $2}' | xargs sudo kill
|
||||||
}
|
}
|
||||||
|
|
||||||
# gather external ip address
|
# gather external ip address
|
||||||
@ -88,19 +94,3 @@ getip() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Настройка mc для работы в терминале kitty
|
|
||||||
# Необходимо закрыть все экземпляры mc для текущего пользователя
|
|
||||||
# При вызове функции с параметром -f текущие настройки клавиш
|
|
||||||
# для работы mc в терминале kitty будут перезаписаны
|
|
||||||
mc-kitty-add() {
|
|
||||||
local mc_cfg="${HOME}/.config/mc/ini"
|
|
||||||
local mc_term="${ZDOTDIR}/terminfo/mc-kitty.ini"
|
|
||||||
|
|
||||||
[[ "x$1" == "x-f" ]] && sed -i '/\[terminal:xterm-kitty\]/,/^$/{d}' "${mc_cfg}"
|
|
||||||
if [ -w "${mc_cfg}" -a -r "${mc_term}" ]; then
|
|
||||||
if ! grep -qF "[terminal:xterm-kitty]" "${mc_cfg}" ; then
|
|
||||||
cat "${mc_term}" >> "${mc_cfg}"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
95
68-aliases.zsh
Normal file
95
68-aliases.zsh
Normal 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
48
72-widgets.zsh
Normal 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
|
||||||
|
|
@ -1,61 +0,0 @@
|
|||||||
# Dotdrop
|
|
||||||
alias dotdrop="$HOME/etc/dotdrop.sh" --cfg="$HOME/etc/config.yaml"
|
|
||||||
|
|
||||||
# zmv
|
|
||||||
alias zcp='zmv -C'
|
|
||||||
alias zln='zmv -L'
|
|
||||||
|
|
||||||
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'
|
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|
||||||
# Youtube
|
|
||||||
YDL="$HOME/bin/youtube-dl"
|
|
||||||
[ ! -x "$YDL" ] && YDL="$(which youtube-dl)"
|
|
||||||
if [ -x "$YDL" ]; then
|
|
||||||
alias ydlbest="youtube-dl --merge-output-format mkv -f 'bestvideo+bestaudio'"
|
|
||||||
alias ydl="youtube-dl --merge-output-format mkv"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# feh
|
|
||||||
alias feh="feh --cache-size 256 --version-sort --sort filename --image-bg black"
|
|
||||||
|
|
||||||
# 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"
|
|
||||||
|
|
||||||
# Фильтры (H,T,G,L определены в common-aliases)
|
|
||||||
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'
|
|
||||||
|
|
6
78-keybindings.zsh
Normal file
6
78-keybindings.zsh
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# shellcheck shell=bash
|
||||||
|
# vim: ft=sh
|
||||||
|
|
||||||
|
# [Esc] [Esc]
|
||||||
|
bindkey '\e\e' send-break
|
||||||
|
|
@ -1,7 +1,11 @@
|
|||||||
|
# shellcheck shell=bash
|
||||||
|
# vim: ft=sh
|
||||||
|
|
||||||
# Speed up autocomplete, force prefix mapping
|
# Speed up autocomplete, force prefix mapping
|
||||||
zstyle ':completion:*' accept-exact '*(N)'
|
zstyle ':completion:*' accept-exact '*(N)'
|
||||||
zstyle ':completion:*' use-cache on
|
zstyle ':completion:*' use-cache on
|
||||||
zstyle ':completion:*' cache-path $ZSH_CACHE_DIR
|
zstyle ':completion:*' cache-path "$ZSH_CACHE_DIR"
|
||||||
|
zstyle ':completion:*' menu select
|
||||||
|
|
||||||
zstyle ':completion:*:processes' command 'ps -ax'
|
zstyle ':completion:*:processes' command 'ps -ax'
|
||||||
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;32'
|
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;32'
|
||||||
@ -23,10 +27,27 @@ zstyle ':completion:*:(ssh|scp|rsync):*:hosts-host' ignored-patterns '*.*' loo
|
|||||||
zstyle ':completion:*:(ssh|scp|rsync):*:hosts-domain' ignored-patterns '<->.<->.<->.<->' '^*.*' '*@*'
|
zstyle ':completion:*:(ssh|scp|rsync):*:hosts-domain' ignored-patterns '<->.<->.<->.<->' '^*.*' '*@*'
|
||||||
zstyle ':completion:*:(ssh|scp|rsync):*:hosts-ipaddr' ignored-patterns '^<->.<->.<->.<->' '127.0.0.<->'
|
zstyle ':completion:*:(ssh|scp|rsync):*:hosts-ipaddr' ignored-patterns '^<->.<->.<->.<->' '127.0.0.<->'
|
||||||
|
|
||||||
zcomet load zsh-users/zsh-completions
|
# marlonrichert/zsh-autocomplete
|
||||||
|
|
||||||
# Вызов в этом месте и в таком порядке
|
zinit wait'0' lucid light-mode depth'1' for \
|
||||||
zsh-defer zcomet load zsh-users/zsh-autosuggestions
|
atinit"ZINIT[COMPINIT_OPTS]=-C; zicompinit; zicdreplay" \
|
||||||
zsh-defer zcomet load zsh-users/zsh-syntax-highlighting
|
zdharma-continuum/fast-syntax-highlighting \
|
||||||
zsh-defer zcomet load zsh-users/zsh-history-substring-search
|
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
20
88-prompt.zsh
Normal 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
|
@ -1,11 +1,3 @@
|
|||||||
zcomet compinit
|
# shellcheck shell=bash
|
||||||
|
# vim: ft=sh
|
||||||
# Обеспечение совместимости с терминалом kitty
|
|
||||||
# По возможности следует установить пакет kitty-terminfo
|
|
||||||
if ! infocmp "xterm-kitty" > /dev/null 2>&1 ; then
|
|
||||||
mkdir -p "${HOME}/.terminfo/x"
|
|
||||||
cp -ap "${ZDOTDIR}/terminfo/xterm-kitty" "${HOME}/.terminfo/x"
|
|
||||||
echo "Terminal description for xterm-kitty was installed."
|
|
||||||
echo "Close terminal and start again."
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
165
README.md
165
README.md
@ -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):
|
Установить оболочку [Zsh](https://www.zsh.org) и git:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo apt-get install git zsh
|
sudo apt-get install git zsh curl
|
||||||
```
|
```
|
||||||
|
|
||||||
Установка желательных пакетов:
|
На системах, где нет пакета Zsh или есть только старая версия, можно установить статически
|
||||||
|
скомпилированную версию программы командой:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo apt-get install autojump fzf grc grepcidr keychain peco wmctrl xdotool
|
sh -c "$(curl -fsSL https://raw.githubusercontent.com/romkatv/zsh-bin/master/install)"
|
||||||
```
|
```
|
||||||
|
|
||||||
Клонирование репозитория в каталог `~/.config/zsh`:
|
Установить рекомендуемые пакеты:
|
||||||
|
|
||||||
```sh
|
```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`
|
Создать файл `$HOME/.zshenv` со следующим содержимым:
|
||||||
в редакторе командой
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo ${EDITOR:-mcedit} /etc/zsh/zshenv
|
# Загрузка конфигурации из каталога $ZDOTDIR
|
||||||
```
|
export ZDOTDIR=$HOME/.config/zsh
|
||||||
|
source $ZDOTDIR/.zshenv
|
||||||
и добавить строку
|
|
||||||
|
|
||||||
```sh
|
|
||||||
[[ -z "$ZDOTDIR" ]] && export ZDOTDIR="$HOME/.config/zsh"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Установить интерпретатор Zsh по умолчанию для пользователя `username`.
|
Установить интерпретатор Zsh по умолчанию для пользователя `username`.
|
||||||
@ -39,6 +51,14 @@ sudo ${EDITOR:-mcedit} /etc/zsh/zshenv
|
|||||||
sudo usermod -s /usr/bin/zsh username
|
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.
|
Существует несколько вариантов настройки агентов для SSH и/или GPG.
|
||||||
@ -48,12 +68,50 @@ sudo usermod -s /usr/bin/zsh username
|
|||||||
cp ~/.config/zsh/55-agents.zsh ~/.config/zsh/55-agents.user.zsh
|
cp ~/.config/zsh/55-agents.zsh ~/.config/zsh/55-agents.user.zsh
|
||||||
```
|
```
|
||||||
|
|
||||||
## Настройка GPG агента
|
## Настройка SSH агента
|
||||||
|
|
||||||
|
Установить необходимые пакеты:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo apt install openssh-client
|
||||||
|
```
|
||||||
|
|
||||||
Раскомментировать в файле ` ~/.config/zsh/55-agents.user.zsh` строки:
|
Раскомментировать в файле ` ~/.config/zsh/55-agents.user.zsh` строки:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# zcomet load ohmyzsh plugins/gpg-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
|
||||||
|
```
|
||||||
|
|
||||||
|
Добавить в конец файла `~/.ssh/config` правило для разрешения агенту сохранять ключи:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Host *
|
||||||
|
AddKeysToAgent yes
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Настройка GPG агента
|
||||||
|
|
||||||
|
Установить необходимые пакеты:
|
||||||
|
|
||||||
|
```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`:
|
Пример файла настройки GPG агента `~/.config/gnupg/gpg-agent.conf`:
|
||||||
@ -69,27 +127,8 @@ pinentry-program /usr/bin/pinentry-qt
|
|||||||
```
|
```
|
||||||
|
|
||||||
Чтобы включить в GPG агенте поддержку SSH, нужно раскомментировать
|
Чтобы включить в GPG агенте поддержку SSH, нужно раскомментировать
|
||||||
последнюю строку.
|
последнюю строку и отредактировать файл `~/.ssh/config`, как это описано
|
||||||
|
в разделе настройки SSH.
|
||||||
|
|
||||||
## Настройка SSH агента
|
|
||||||
|
|
||||||
Раскомментировать в файле ` ~/.config/zsh/55-agents.user.zsh` строки:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
# zstyle :omz:plugins:ssh-agent agent-forwarding on
|
|
||||||
# zstyle :omz:plugins:ssh-agent identities id_rsa
|
|
||||||
# zstyle :omz:plugins:ssh-agent lifetime 10h
|
|
||||||
# zcomet load ohmyzsh plugins/ssh-agent
|
|
||||||
```
|
|
||||||
|
|
||||||
Добавить в конец файла `~/.ssh/config` правило для разрешения агенту сохранять ключи:
|
|
||||||
|
|
||||||
```text
|
|
||||||
Host *
|
|
||||||
AddKeysToAgent yes
|
|
||||||
IdentityFile ~/.ssh/id_rsa
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## Настройка Keychain
|
## Настройка Keychain
|
||||||
@ -102,13 +141,21 @@ Host *
|
|||||||
use-ssh-agent
|
use-ssh-agent
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Установить необходимые пакеты:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo apt install keychain openssh-client gpg-agent gpgconf
|
||||||
|
```
|
||||||
|
|
||||||
Раскомментировать в файле ` ~/.config/zsh/55-agents.user.zsh` строки:
|
Раскомментировать в файле ` ~/.config/zsh/55-agents.user.zsh` строки:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# zstyle :omz:plugins:keychain identities id_rsa 01234567
|
# if command -v keychain >/dev/null 2>&1; then
|
||||||
# zstyle :omz:plugins:keychain options --quiet --inherit local-once --noask --nocolor --quick
|
# zstyle :omz:plugins:keychain identities id_rsa 01234567
|
||||||
# zstyle :omz:plugins:keychain agents gpg,ssh
|
# zstyle :omz:plugins:keychain options --quiet --inherit any-once --noask --nocolor --absolute --dir ~/.cache/keychain
|
||||||
# zcomet load ohmyzsh plugins/keychain
|
# zstyle :omz:plugins:keychain agents gpg,ssh
|
||||||
|
# zinit snippet OMZP::keychain
|
||||||
|
# fi
|
||||||
```
|
```
|
||||||
|
|
||||||
Отредактировать файлы настроек для агента GPG и SSH, как это описано в разделах выше.
|
Отредактировать файлы настроек для агента GPG и SSH, как это описано в разделах выше.
|
||||||
@ -117,19 +164,43 @@ use-ssh-agent
|
|||||||
## Инициализация
|
## Инициализация
|
||||||
|
|
||||||
После редактирования файлов настройки запустить `zsh`. Автоматически будет загружен
|
После редактирования файлов настройки запустить `zsh`. Автоматически будет загружен
|
||||||
менеджер [zcomet](https://github.com/agkozak/zcomet) и необходимые плагины.
|
менеджер [zinit](https://github.com/zdharma-continuum/zinit) и необходимые плагины.
|
||||||
|
|
||||||
|
|
||||||
## Обновление
|
## Обновление
|
||||||
|
|
||||||
Обновление `zcomet`:
|
Обновление `zinit` и плагинов:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
zcomet self-update
|
zu
|
||||||
````
|
````
|
||||||
|
|
||||||
Обновление плагинов:
|
## Устранение проблем
|
||||||
|
|
||||||
|
Для решения некоторых проблем необходимо загрузить файл с дополнительными
|
||||||
|
командами в терминале:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
zcomet update
|
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
|
||||||
```
|
```
|
||||||
|
32
fixes.zsh
Normal file
32
fixes.zsh
Normal 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
20
install.sh
Normal 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
|
||||||
|
|
@ -1,16 +0,0 @@
|
|||||||
|
|
||||||
[terminal:xterm-kitty]
|
|
||||||
f11=\\e[1\;2P
|
|
||||||
f12=\\e[1\;2Q
|
|
||||||
f13=\\e[1\;2R
|
|
||||||
f14=\\e[1\;2S
|
|
||||||
f15=\\e[15\;2~
|
|
||||||
f16=\\e[17\;2~
|
|
||||||
f17=\\e[18\;2~
|
|
||||||
f18=\\e[19\;2~
|
|
||||||
f19=\\e[20\;2~
|
|
||||||
f20=\\e[21\;2~
|
|
||||||
complete=\\e^i
|
|
||||||
backtab=\\e[Z
|
|
||||||
backspace=
|
|
||||||
|
|
Binary file not shown.
Reference in New Issue
Block a user