feat(zsh): modularize Zsh configuration with environment variables, aliases, functions, and plugins
- Create a new Zsh configuration structure under ~/.config/zsh - Add main .zshrc file to load configurations and plugins - Implement environment variables in env.zsh - Define aliases for common commands in aliases.zsh - Set up completion settings in completion.zsh - Add custom functions for navigation, file handling, and process management in functions.zsh - Configure keybindings in keybindings.zsh - Set shell options in options.zsh - Load plugins using Zinit in plugins.zsh - Configure prompt settings in prompt.zsh - Create a .zshenv file to set ZDOTDIR for Zsh configuration directory
This commit is contained in:
+34
@@ -0,0 +1,34 @@
|
|||||||
|
# Shell history and dumps
|
||||||
|
*/.zshdump
|
||||||
|
*/.zcompdump
|
||||||
|
*/.zsh_history
|
||||||
|
*/.bash_history
|
||||||
|
*/.history
|
||||||
|
.zsh_history
|
||||||
|
.zhistory
|
||||||
|
.zcompdump
|
||||||
|
|
||||||
|
# Config files
|
||||||
|
*/.env
|
||||||
|
*/.env.local
|
||||||
|
|
||||||
|
# Editor config
|
||||||
|
*/.vscode/
|
||||||
|
*/.idea/
|
||||||
|
|
||||||
|
# OS files
|
||||||
|
*/.DS_Store
|
||||||
|
*/Thumbs.db
|
||||||
|
*/.zcompdump
|
||||||
|
|
||||||
|
# SSH Keys
|
||||||
|
*/.ssh/id_*
|
||||||
|
*/.ssh/known_hosts*
|
||||||
|
|
||||||
|
# Lock files
|
||||||
|
*/.lock
|
||||||
|
*/.pid
|
||||||
|
*/.pid.lock
|
||||||
|
*/.sock
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
^/README\.md
|
||||||
|
^/\.git
|
||||||
|
^/\.gitignore
|
||||||
|
^/\archive
|
||||||
|
privoxy_config
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# Dotfiles
|
||||||
|
|
||||||
|
Мой репозиторий конфигурационных файлов.
|
||||||
|
|
||||||
|
## Установка
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone <repository-url> ~/.dotfiles
|
||||||
|
cd ~/.dotfiles
|
||||||
|
stow -t ~ */
|
||||||
|
```
|
||||||
|
|
||||||
|
Дополнение:
|
||||||
|
yandex.ru, devel.mephi.ru, mephi.ru, *.ada-dev.ru, 192.168.1.0/24, ada-dev.ru, disk.yandex.ru, sogaz.ru, gosuslugi.ru, vk.com, wifi.mephi.ru, market.yandex.ru, tbank.ru, practicum.yandex.ru, practicum.yandex, reddit.com
|
||||||
@@ -0,0 +1,151 @@
|
|||||||
|
live_config_reload = true
|
||||||
|
|
||||||
|
[shell]
|
||||||
|
program = "/usr/bin/zsh"
|
||||||
|
args = ["-l", "-c", "tmux new-session -A -s main"]
|
||||||
|
|
||||||
|
[window]
|
||||||
|
decorations = "None" # без рамок и заголовка
|
||||||
|
# startup_mode = "Maximized" # просто растянутое окно
|
||||||
|
opacity = 0.70
|
||||||
|
padding = { x = 10, y = 5 }
|
||||||
|
|
||||||
|
[font]
|
||||||
|
size = 14.0
|
||||||
|
|
||||||
|
[font.normal]
|
||||||
|
family = "FiraCode Nerd Font Mono"
|
||||||
|
style = "Regular"
|
||||||
|
|
||||||
|
[font.bold]
|
||||||
|
family = "FiraCode Nerd Font Mono"
|
||||||
|
style = "Bold"
|
||||||
|
|
||||||
|
[font.italic]
|
||||||
|
family = "FiraCode Nerd Font Mono"
|
||||||
|
style = "Italic"
|
||||||
|
|
||||||
|
[scrolling]
|
||||||
|
history = 10000
|
||||||
|
multiplier = 5
|
||||||
|
|
||||||
|
[selection]
|
||||||
|
save_to_clipboard = true
|
||||||
|
semantic_escape_chars = "@-./_~?&=%+#"
|
||||||
|
|
||||||
|
[mouse]
|
||||||
|
hide_when_typing = false
|
||||||
|
|
||||||
|
[cursor]
|
||||||
|
# kitty: beam + blinking
|
||||||
|
blink_interval = 500
|
||||||
|
thickness = 0.15
|
||||||
|
|
||||||
|
[cursor.style]
|
||||||
|
shape = "Beam"
|
||||||
|
blinking = "On"
|
||||||
|
|
||||||
|
[bell]
|
||||||
|
# Disable visual bell by setting duration to 0; keep a valid easing to satisfy parser
|
||||||
|
animation = "EaseOutExpo"
|
||||||
|
duration = 0
|
||||||
|
|
||||||
|
# Nord color scheme
|
||||||
|
# https://www.nordtheme.com/
|
||||||
|
[colors.primary]
|
||||||
|
background = "#2E3440"
|
||||||
|
foreground = "#D8DEE9"
|
||||||
|
|
||||||
|
[colors.cursor]
|
||||||
|
text = "#2E3440"
|
||||||
|
cursor = "#D8DEE9"
|
||||||
|
|
||||||
|
[colors.selection]
|
||||||
|
text = "#D8DEE9"
|
||||||
|
background = "#434C5E"
|
||||||
|
|
||||||
|
[colors.normal]
|
||||||
|
black = "#3B4252"
|
||||||
|
red = "#BF616A"
|
||||||
|
green = "#A3BE8C"
|
||||||
|
yellow = "#EBCB8B"
|
||||||
|
blue = "#81A1C1"
|
||||||
|
magenta = "#B48EAD"
|
||||||
|
cyan = "#88C0D0"
|
||||||
|
white = "#E5E9F0"
|
||||||
|
|
||||||
|
[colors.bright]
|
||||||
|
black = "#4C566A"
|
||||||
|
red = "#BF616A"
|
||||||
|
green = "#A3BE8C"
|
||||||
|
yellow = "#EBCB8B"
|
||||||
|
blue = "#81A1C1"
|
||||||
|
magenta = "#B48EAD"
|
||||||
|
cyan = "#8FBCBB"
|
||||||
|
white = "#ECEFF4"
|
||||||
|
|
||||||
|
# Key bindings translated where possible
|
||||||
|
[[keyboard.bindings]]
|
||||||
|
key = "C"
|
||||||
|
mods = "Control|Shift"
|
||||||
|
action = "Copy"
|
||||||
|
|
||||||
|
[[keyboard.bindings]]
|
||||||
|
key = "V"
|
||||||
|
mods = "Control|Shift"
|
||||||
|
action = "Paste"
|
||||||
|
|
||||||
|
[[keyboard.bindings]]
|
||||||
|
key = "Enter"
|
||||||
|
mods = "Control|Shift"
|
||||||
|
action = "SpawnNewInstance"
|
||||||
|
|
||||||
|
[[keyboard.bindings]]
|
||||||
|
key = "F11"
|
||||||
|
mods = "Control|Shift"
|
||||||
|
action = "ToggleFullscreen"
|
||||||
|
|
||||||
|
[[keyboard.bindings]]
|
||||||
|
key = "Equals"
|
||||||
|
mods = "Control|Shift"
|
||||||
|
action = "IncreaseFontSize"
|
||||||
|
|
||||||
|
[[keyboard.bindings]]
|
||||||
|
key = "Minus"
|
||||||
|
mods = "Control|Shift"
|
||||||
|
action = "DecreaseFontSize"
|
||||||
|
|
||||||
|
[[keyboard.bindings]]
|
||||||
|
key = "Key0"
|
||||||
|
mods = "Control|Shift"
|
||||||
|
action = "ResetFontSize"
|
||||||
|
|
||||||
|
[[keyboard.bindings]]
|
||||||
|
key = "Up"
|
||||||
|
mods = "Control|Shift"
|
||||||
|
action = "ScrollLineUp"
|
||||||
|
|
||||||
|
[[keyboard.bindings]]
|
||||||
|
key = "Down"
|
||||||
|
mods = "Control|Shift"
|
||||||
|
action = "ScrollLineDown"
|
||||||
|
|
||||||
|
[[keyboard.bindings]]
|
||||||
|
key = "PageUp"
|
||||||
|
mods = "Control|Shift"
|
||||||
|
action = "ScrollPageUp"
|
||||||
|
|
||||||
|
[[keyboard.bindings]]
|
||||||
|
key = "PageDown"
|
||||||
|
mods = "Control|Shift"
|
||||||
|
action = "ScrollPageDown"
|
||||||
|
|
||||||
|
[[keyboard.bindings]]
|
||||||
|
key = "Home"
|
||||||
|
mods = "Control|Shift"
|
||||||
|
action = "ScrollToTop"
|
||||||
|
|
||||||
|
[[keyboard.bindings]]
|
||||||
|
key = "End"
|
||||||
|
mods = "Control|Shift"
|
||||||
|
action = "ScrollToBottom"
|
||||||
+230
@@ -0,0 +1,230 @@
|
|||||||
|
# ════════════════════════════════════════════════════════════
|
||||||
|
# Git Configuration
|
||||||
|
# ════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
[user]
|
||||||
|
# Укажите ваше имя и email
|
||||||
|
name = Dmitry
|
||||||
|
email = 124861781+ada-dmitry@users.noreply.github.com
|
||||||
|
|
||||||
|
[core]
|
||||||
|
# Редактор по умолчанию
|
||||||
|
editor = micro
|
||||||
|
|
||||||
|
# Игнорировать изменения прав доступа
|
||||||
|
filemode = false
|
||||||
|
|
||||||
|
# Автоматическое преобразование CRLF в LF
|
||||||
|
autocrlf = input
|
||||||
|
|
||||||
|
# Предупреждать о пробелах в конце строк
|
||||||
|
whitespace = trailing-space,space-before-tab
|
||||||
|
|
||||||
|
# Использовать pager для вывода (bat если установлен)
|
||||||
|
# -F: выходить если вывод помещается на один экран
|
||||||
|
# -R: показывать цвета
|
||||||
|
# -X: не очищать экран при выходе
|
||||||
|
# -S: не переносить длинные строки
|
||||||
|
pager = less -FRXS
|
||||||
|
excludesfile = /home/ada/.gitignore_global
|
||||||
|
|
||||||
|
[init]
|
||||||
|
# Имя основной ветки по умолчанию
|
||||||
|
defaultBranch = main
|
||||||
|
|
||||||
|
[color]
|
||||||
|
# Включить цветной вывод
|
||||||
|
ui = auto
|
||||||
|
branch = auto
|
||||||
|
diff = auto
|
||||||
|
status = auto
|
||||||
|
|
||||||
|
[color "branch"]
|
||||||
|
current = yellow bold
|
||||||
|
local = green
|
||||||
|
remote = cyan
|
||||||
|
|
||||||
|
[color "diff"]
|
||||||
|
meta = yellow
|
||||||
|
frag = magenta bold
|
||||||
|
old = red bold
|
||||||
|
new = green bold
|
||||||
|
whitespace = red reverse
|
||||||
|
|
||||||
|
[color "status"]
|
||||||
|
added = green bold
|
||||||
|
changed = yellow bold
|
||||||
|
untracked = red bold
|
||||||
|
|
||||||
|
# ═══ Алиасы ═════════════════════════════════════════════════
|
||||||
|
|
||||||
|
[alias]
|
||||||
|
# Базовые сокращения
|
||||||
|
st = status
|
||||||
|
co = checkout
|
||||||
|
br = branch
|
||||||
|
ci = commit
|
||||||
|
cm = commit -m
|
||||||
|
ca = commit --amend
|
||||||
|
|
||||||
|
# Добавление файлов
|
||||||
|
a = add
|
||||||
|
aa = add --all
|
||||||
|
ap = add --patch
|
||||||
|
|
||||||
|
# Логи
|
||||||
|
l = log --oneline --graph --decorate
|
||||||
|
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
|
||||||
|
ll = log --pretty=format:'%C(yellow)%h%Cred%d %Creset%s%Cblue [%cn]' --decorate --numstat
|
||||||
|
ls = log --pretty=format:'%C(yellow)%h %Cred%ad %Cblue%an%Creset%d %s' --date=short
|
||||||
|
lol = log --graph --decorate --pretty=oneline --abbrev-commit
|
||||||
|
lola = log --graph --decorate --pretty=oneline --abbrev-commit --all
|
||||||
|
|
||||||
|
# История файла
|
||||||
|
filelog = log -u
|
||||||
|
fl = log -u
|
||||||
|
|
||||||
|
# Diff
|
||||||
|
d = diff
|
||||||
|
ds = diff --staged
|
||||||
|
dc = diff --cached
|
||||||
|
|
||||||
|
# Показать последний коммит
|
||||||
|
last = log -1 HEAD --stat
|
||||||
|
|
||||||
|
# Отменить последний коммит (сохранив изменения)
|
||||||
|
undo = reset --soft HEAD^
|
||||||
|
|
||||||
|
# Показать изменения в файле
|
||||||
|
blame = blame -w -M -C
|
||||||
|
|
||||||
|
# Быстрое переключение веток
|
||||||
|
switch = checkout
|
||||||
|
sw = checkout
|
||||||
|
|
||||||
|
# Создать и переключиться на новую ветку
|
||||||
|
cob = checkout -b
|
||||||
|
|
||||||
|
# Удалить ветку
|
||||||
|
brd = branch -d
|
||||||
|
brD = branch -D
|
||||||
|
|
||||||
|
# Обновить текущую ветку
|
||||||
|
up = pull --rebase --autostash
|
||||||
|
|
||||||
|
# Отправить текущую ветку
|
||||||
|
push-current = push -u origin HEAD
|
||||||
|
pc = push -u origin HEAD
|
||||||
|
|
||||||
|
# Stash
|
||||||
|
sl = stash list
|
||||||
|
sa = stash apply
|
||||||
|
ss = stash save
|
||||||
|
sp = stash pop
|
||||||
|
|
||||||
|
# Показать файлы в коммите
|
||||||
|
show-files = show --pretty="" --name-only
|
||||||
|
|
||||||
|
# Статистика коммитов
|
||||||
|
contributors = shortlog -sn
|
||||||
|
|
||||||
|
# Удалить удаленные ветки из локального репозитория
|
||||||
|
prune-all = fetch --all --prune
|
||||||
|
|
||||||
|
# Показать ветки с последними коммитами
|
||||||
|
branches = branch -vv
|
||||||
|
|
||||||
|
# Показать удаленные репозитории
|
||||||
|
remotes = remote -v
|
||||||
|
|
||||||
|
# Найти коммит по сообщению
|
||||||
|
find = log --all --oneline --grep
|
||||||
|
|
||||||
|
# Игнорировать изменения в файле
|
||||||
|
ignore = update-index --assume-unchanged
|
||||||
|
unignore = update-index --no-assume-unchanged
|
||||||
|
ignored = !git ls-files -v | grep "^[[:lower:]]"
|
||||||
|
|
||||||
|
# Создать архив текущей ветки
|
||||||
|
archive-branch = !git archive --format=tar --prefix=$(git symbolic-ref --short HEAD)/ HEAD | gzip > $(git symbolic-ref --short HEAD).tar.gz
|
||||||
|
|
||||||
|
# Показать размер репозитория
|
||||||
|
repo-size = count-objects -vH
|
||||||
|
|
||||||
|
[push]
|
||||||
|
# Отправлять только текущую ветку
|
||||||
|
default = current
|
||||||
|
|
||||||
|
# Автоматически создавать удаленную ветку
|
||||||
|
autoSetupRemote = true
|
||||||
|
|
||||||
|
[pull]
|
||||||
|
# Использовать rebase вместо merge при pull
|
||||||
|
rebase = true
|
||||||
|
|
||||||
|
[fetch]
|
||||||
|
# Автоматически удалять несуществующие удаленные ветки
|
||||||
|
prune = true
|
||||||
|
|
||||||
|
[rebase]
|
||||||
|
# Автоматически применять stash перед rebase
|
||||||
|
autoStash = true
|
||||||
|
|
||||||
|
[merge]
|
||||||
|
# Показывать конфликты в стиле diff3
|
||||||
|
conflictStyle = diff3
|
||||||
|
|
||||||
|
# Инструмент для разрешения конфликтов
|
||||||
|
tool = vimdiff
|
||||||
|
|
||||||
|
[diff]
|
||||||
|
# Алгоритм diff для лучшего качества
|
||||||
|
algorithm = histogram
|
||||||
|
|
||||||
|
# Показывать перемещения файлов
|
||||||
|
renames = copies
|
||||||
|
|
||||||
|
# Инструмент для просмотра diff
|
||||||
|
tool = vimdiff
|
||||||
|
|
||||||
|
[status]
|
||||||
|
# Показывать подмодули в статусе
|
||||||
|
submoduleSummary = true
|
||||||
|
|
||||||
|
# Показывать непроиндексированные файлы
|
||||||
|
showUntrackedFiles = all
|
||||||
|
|
||||||
|
[log]
|
||||||
|
# Показывать даты в относительном формате
|
||||||
|
date = relative
|
||||||
|
|
||||||
|
[help]
|
||||||
|
# Автоматически исправлять опечатки в командах (после 0.1 сек)
|
||||||
|
autocorrect = 10
|
||||||
|
|
||||||
|
[credential]
|
||||||
|
# Кэшировать пароли на 1 час
|
||||||
|
helper = cache --timeout=3600
|
||||||
|
|
||||||
|
# ═══ URL shortcuts ══════════════════════════════════════════
|
||||||
|
|
||||||
|
[url "git@github.com:"]
|
||||||
|
insteadOf = gh:
|
||||||
|
|
||||||
|
[url "https://github.com/"]
|
||||||
|
insteadOf = github:
|
||||||
|
|
||||||
|
[url "https://gitlab.com/"]
|
||||||
|
insteadOf = gitlab:
|
||||||
|
|
||||||
|
# ═══ Дополнительные настройки ═══════════════════════════════
|
||||||
|
|
||||||
|
[filter "lfs"]
|
||||||
|
# Git LFS (Large File Storage)
|
||||||
|
clean = git-lfs clean -- %f
|
||||||
|
smudge = git-lfs smudge -- %f
|
||||||
|
process = git-lfs filter-process
|
||||||
|
required = true
|
||||||
|
|
||||||
|
# ═══ Ваши дополнительные настройки ═════════════════════════
|
||||||
|
# Добавьте свои настройки ниже
|
||||||
@@ -0,0 +1,190 @@
|
|||||||
|
# ════════════════════════════════════════════════════════════
|
||||||
|
# Global Git Ignore
|
||||||
|
# Файлы, которые будут игнорироваться во всех репозиториях
|
||||||
|
# ════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
# ═══ OS Generated ═══════════════════════════════════════════
|
||||||
|
|
||||||
|
# macOS
|
||||||
|
.DS_Store
|
||||||
|
.AppleDouble
|
||||||
|
.LSOverride
|
||||||
|
._*
|
||||||
|
|
||||||
|
# Linux
|
||||||
|
*~
|
||||||
|
.directory
|
||||||
|
.Trash-*
|
||||||
|
|
||||||
|
# Windows
|
||||||
|
Thumbs.db
|
||||||
|
ehthumbs.db
|
||||||
|
Desktop.ini
|
||||||
|
$RECYCLE.BIN/
|
||||||
|
|
||||||
|
# ═══ IDEs & Editors ═════════════════════════════════════════
|
||||||
|
|
||||||
|
# VS Code
|
||||||
|
.vscode/
|
||||||
|
*.code-workspace
|
||||||
|
.history/
|
||||||
|
|
||||||
|
# JetBrains IDEs
|
||||||
|
.idea/
|
||||||
|
*.iml
|
||||||
|
*.ipr
|
||||||
|
*.iws
|
||||||
|
.idea_modules/
|
||||||
|
|
||||||
|
# Vim
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
*~
|
||||||
|
.*.sw?
|
||||||
|
Session.vim
|
||||||
|
|
||||||
|
# Emacs
|
||||||
|
*~
|
||||||
|
\#*\#
|
||||||
|
.\#*
|
||||||
|
.projectile
|
||||||
|
|
||||||
|
# Sublime Text
|
||||||
|
*.sublime-project
|
||||||
|
*.sublime-workspace
|
||||||
|
|
||||||
|
# ═══ Languages ══════════════════════════════════════════════
|
||||||
|
|
||||||
|
# Python
|
||||||
|
__pycache__/
|
||||||
|
*.py[cod]
|
||||||
|
*$py.class
|
||||||
|
*.so
|
||||||
|
.Python
|
||||||
|
env/
|
||||||
|
venv/
|
||||||
|
ENV/
|
||||||
|
.venv/
|
||||||
|
pip-log.txt
|
||||||
|
pip-delete-this-directory.txt
|
||||||
|
.pytest_cache/
|
||||||
|
.coverage
|
||||||
|
htmlcov/
|
||||||
|
*.egg-info/
|
||||||
|
dist/
|
||||||
|
build/
|
||||||
|
|
||||||
|
# Node.js
|
||||||
|
node_modules/
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
.npm
|
||||||
|
.eslintcache
|
||||||
|
.node_repl_history
|
||||||
|
|
||||||
|
# Rust
|
||||||
|
target/
|
||||||
|
Cargo.lock
|
||||||
|
**/*.rs.bk
|
||||||
|
|
||||||
|
# Go
|
||||||
|
*.exe
|
||||||
|
*.test
|
||||||
|
*.prof
|
||||||
|
vendor/
|
||||||
|
|
||||||
|
# Ruby
|
||||||
|
*.gem
|
||||||
|
*.rbc
|
||||||
|
.bundle/
|
||||||
|
.ruby-version
|
||||||
|
.ruby-gemset
|
||||||
|
|
||||||
|
# Java
|
||||||
|
*.class
|
||||||
|
*.jar
|
||||||
|
*.war
|
||||||
|
*.ear
|
||||||
|
.gradle/
|
||||||
|
build/
|
||||||
|
|
||||||
|
# ═══ Logs & Databases ═══════════════════════════════════════
|
||||||
|
|
||||||
|
# Logs
|
||||||
|
*.log
|
||||||
|
logs/
|
||||||
|
*.pid
|
||||||
|
*.seed
|
||||||
|
|
||||||
|
# Databases
|
||||||
|
*.sql
|
||||||
|
*.sqlite
|
||||||
|
*.sqlite3
|
||||||
|
*.db
|
||||||
|
|
||||||
|
# ═══ Environment & Secrets ══════════════════════════════════
|
||||||
|
|
||||||
|
.env
|
||||||
|
.env.local
|
||||||
|
.env.*.local
|
||||||
|
*.pem
|
||||||
|
*.key
|
||||||
|
*.cert
|
||||||
|
.envrc
|
||||||
|
.tool-versions
|
||||||
|
|
||||||
|
# ═══ Build & Dependencies ═══════════════════════════════════
|
||||||
|
|
||||||
|
# Compiled files
|
||||||
|
*.o
|
||||||
|
*.a
|
||||||
|
*.out
|
||||||
|
*.ko
|
||||||
|
*.obj
|
||||||
|
*.elf
|
||||||
|
*.dll
|
||||||
|
*.dylib
|
||||||
|
|
||||||
|
# Packages
|
||||||
|
*.7z
|
||||||
|
*.dmg
|
||||||
|
*.gz
|
||||||
|
*.iso
|
||||||
|
*.jar
|
||||||
|
*.rar
|
||||||
|
*.tar
|
||||||
|
*.zip
|
||||||
|
|
||||||
|
# ═══ Temporary Files ════════════════════════════════════════
|
||||||
|
|
||||||
|
# Temporary
|
||||||
|
tmp/
|
||||||
|
temp/
|
||||||
|
*.tmp
|
||||||
|
*.bak
|
||||||
|
*.backup
|
||||||
|
*.cache
|
||||||
|
|
||||||
|
# ═══ Project Specific ═══════════════════════════════════════
|
||||||
|
|
||||||
|
# Coverage reports
|
||||||
|
coverage/
|
||||||
|
.nyc_output/
|
||||||
|
|
||||||
|
# Documentation builds
|
||||||
|
docs/_build/
|
||||||
|
site/
|
||||||
|
|
||||||
|
# Testing
|
||||||
|
.tox/
|
||||||
|
|
||||||
|
# ═══ Other ══════════════════════════════════════════════════
|
||||||
|
|
||||||
|
# CTags
|
||||||
|
tags
|
||||||
|
TAGS
|
||||||
|
|
||||||
|
# Local configuration
|
||||||
|
.local/
|
||||||
|
local.properties
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
# Privoxy Configuration
|
||||||
|
# Minimal config with only active settings
|
||||||
|
|
||||||
|
# Configuration directories
|
||||||
|
confdir /etc/privoxy
|
||||||
|
logdir /var/log/privoxy
|
||||||
|
|
||||||
|
# Actions and filters
|
||||||
|
actionsfile match-all.action
|
||||||
|
actionsfile default.action
|
||||||
|
actionsfile user.action
|
||||||
|
|
||||||
|
filterfile default.filter
|
||||||
|
filterfile user.filter
|
||||||
|
|
||||||
|
# Logging
|
||||||
|
logfile logfile
|
||||||
|
|
||||||
|
# Network settings
|
||||||
|
listen-address 127.0.0.1:8118
|
||||||
|
|
||||||
|
# forward-socks5 / ada-proxy:Fk2NNUAJ#x2@o2@89.167.32.245:8443 .
|
||||||
|
|
||||||
|
# forward-socks5 / 192.168.1.10:1080 .
|
||||||
|
forward-socks5 / 127.0.0.1:1080 .
|
||||||
|
|
||||||
|
# Security settings
|
||||||
|
toggle 1
|
||||||
|
enable-remote-toggle 0
|
||||||
|
enable-remote-http-toggle 0
|
||||||
|
enable-edit-actions 0
|
||||||
|
enforce-blocks 0
|
||||||
|
buffer-limit 4096
|
||||||
|
enable-proxy-authentication-forwarding 0
|
||||||
|
|
||||||
|
# Connection settings
|
||||||
|
forwarded-connect-retries 0
|
||||||
|
accept-intercepted-requests 0
|
||||||
|
allow-cgi-request-crunching 0
|
||||||
|
split-large-forms 0
|
||||||
|
keep-alive-timeout 5
|
||||||
|
tolerate-pipelining 1
|
||||||
|
socket-timeout 300
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# ════════════════════════════════════════════════════════════
|
||||||
|
# SSH Configuration (includes)
|
||||||
|
# ════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
# Все настройки вынесены по секциям в config.d/*.conf
|
||||||
|
# Порядок загрузки задаётся префиксом (00-, 10-, 20- ...)
|
||||||
|
|
||||||
|
|
||||||
|
Include config.d/*.conf
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
# 00 - Global options
|
||||||
|
|
||||||
|
Host *
|
||||||
|
# Переиспользование соединений (быстрее)
|
||||||
|
# ControlMaster auto
|
||||||
|
# ControlPath ~/.ssh/sockets/%r@%h:%p
|
||||||
|
# ControlPersist 10m
|
||||||
|
|
||||||
|
# Держать соединение живым
|
||||||
|
ServerAliveInterval 60
|
||||||
|
ServerAliveCountMax 3
|
||||||
|
|
||||||
|
# Сжатие данных
|
||||||
|
Compression yes
|
||||||
|
|
||||||
|
# Отключить GSSAPI (ускоряет подключение)
|
||||||
|
GSSAPIAuthentication no
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
# 10 - Local network (direct IP)
|
||||||
|
|
||||||
|
# ПК
|
||||||
|
Host ada-pc
|
||||||
|
HostName 192.168.1.100
|
||||||
|
User ada
|
||||||
|
IdentityFile ~/.ssh/id_ed25519
|
||||||
|
|
||||||
|
Host ada-x1
|
||||||
|
HostName 192.168.1.101
|
||||||
|
User ada
|
||||||
|
IdentityFile ~/.ssh/id_ed25519
|
||||||
|
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# 20 - SelfHost
|
||||||
|
Host vps vps-ada
|
||||||
|
HostName 157.22.231.198
|
||||||
|
Port 22
|
||||||
|
User root
|
||||||
|
IdentityFile ~/.ssh/id_ed25519_homelab
|
||||||
|
|
||||||
|
# Gitea
|
||||||
|
Host git.ada-dev.ru
|
||||||
|
HostName 192.168.1.10
|
||||||
|
User git
|
||||||
|
Port 2222
|
||||||
|
IdentityFile ~/.ssh/id_ed25519_homelab
|
||||||
|
ProxyJump vps
|
||||||
|
|
||||||
|
# ZimaOS
|
||||||
|
Host home zima
|
||||||
|
HostName 192.168.1.10
|
||||||
|
User ada
|
||||||
|
IdentityFile ~/.ssh/id_ed25519_homelab
|
||||||
|
SetEnv TERM=xterm-256color
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
# 40 - Corporate (PAO IL)
|
||||||
|
|
||||||
|
Host ada-alt
|
||||||
|
HostName 127.0.0.1
|
||||||
|
User ada-alt
|
||||||
|
Port 3322
|
||||||
|
IdentityFile ~/.ssh/id_ed25519
|
||||||
|
StrictHostKeyChecking no
|
||||||
|
UserKnownHostsFile /dev/null
|
||||||
|
|
||||||
|
|
||||||
|
Host pam
|
||||||
|
HostName 10.1.194.230
|
||||||
|
User antipenkoda@MSK.LAN
|
||||||
|
Port 2244
|
||||||
|
ProxyJump ada-alt
|
||||||
|
StrictHostKeyChecking no
|
||||||
|
UserKnownHostsFile /dev/null
|
||||||
|
|
||||||
|
|
||||||
|
Host master-ans
|
||||||
|
HostName 10.1.194.160
|
||||||
|
User ada
|
||||||
|
IdentityFile /home/ada/.ssh/id_ed25519_ada
|
||||||
|
ProxyJump pam
|
||||||
|
LocalForward 9000 localhost:22
|
||||||
|
StrictHostKeyChecking no
|
||||||
|
UserKnownHostsFile /dev/null
|
||||||
|
|
||||||
|
Host master-ans-direct
|
||||||
|
HostName localhost
|
||||||
|
Port 9000
|
||||||
|
User ada
|
||||||
|
SetEnv TERM=xterm-256color
|
||||||
|
|
||||||
|
Host gitea
|
||||||
|
HostName 10.1.194.243
|
||||||
|
User gitea
|
||||||
|
IdentityFile ~/.ssh/id_ed25519_ada
|
||||||
|
ProxyJump pam
|
||||||
|
|
||||||
|
|
||||||
|
Host devel.mephi.ru
|
||||||
|
HostName devel.mephi.ru
|
||||||
|
IdentityFile ~/.ssh/id_ed25519_ada
|
||||||
|
KexAlgorithms +curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256
|
||||||
|
|
||||||
|
Host github.com
|
||||||
|
HostName github.com
|
||||||
|
User git
|
||||||
|
IdentityFile ~/.ssh/id_ed25519
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
Host ru-vps
|
||||||
|
HostName 157.22.231.198
|
||||||
|
User ada
|
||||||
|
IdentityFile ~/.ssh/id_ed25519
|
||||||
|
ServerAliveInterval 30
|
||||||
|
ServerAliveCountMax 3
|
||||||
|
|
||||||
|
Host nl-vps
|
||||||
|
HostName 170.168.25.171
|
||||||
|
User ada
|
||||||
|
IdentityFile ~/.ssh/id_ed25519
|
||||||
|
ProxyJump ru-vps
|
||||||
|
ServerAliveInterval 30
|
||||||
|
ServerAliveCountMax 3
|
||||||
|
|
||||||
|
Host fl-vps
|
||||||
|
HostName 89.167.32.245
|
||||||
|
Port 4322
|
||||||
|
User ada
|
||||||
|
IdentityFile ~/.ssh/id_ed25519_flvpn
|
||||||
|
ProxyJump ru-vps
|
||||||
|
ServerAliveInterval 30
|
||||||
|
ServerAliveCountMax 3
|
||||||
+1886
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,663 @@
|
|||||||
|
# : << 'EOF'
|
||||||
|
# Oh my tmux!
|
||||||
|
# 💛🩷💙🖤❤️🤍
|
||||||
|
# https://github.com/gpakosz/.tmux
|
||||||
|
# (‑●‑●)> dual licensed under the WTFPL v2 license and the MIT license,
|
||||||
|
# without any warranty.
|
||||||
|
# Copyright 2012— Gregory Pakosz (@gpakosz).
|
||||||
|
|
||||||
|
|
||||||
|
# -- bindings ------------------------------------------------------------------
|
||||||
|
|
||||||
|
# preserve tmux stock bindings,
|
||||||
|
# while adding bindings that don't conflict with these stock bindings
|
||||||
|
# /!\ this disables some of Oh my tmux! bindings described in README.md
|
||||||
|
# - true
|
||||||
|
# - false (default)
|
||||||
|
tmux_conf_preserve_stock_bindings=false
|
||||||
|
|
||||||
|
|
||||||
|
# -- session creation ----------------------------------------------------------
|
||||||
|
|
||||||
|
# prompt for session name when creating a new session, possible values are:
|
||||||
|
# - true
|
||||||
|
# - false (default)
|
||||||
|
# - disabled (do not modify new-session bindings)
|
||||||
|
tmux_conf_new_session_prompt=false
|
||||||
|
|
||||||
|
# new session retains current path, possible values are:
|
||||||
|
# - true
|
||||||
|
# - false (default)
|
||||||
|
# - disabled (do not modify new-session bindings)
|
||||||
|
tmux_conf_new_session_retain_current_path=false
|
||||||
|
|
||||||
|
|
||||||
|
# -- windows & pane creation ---------------------------------------------------
|
||||||
|
|
||||||
|
# new window retains current path, possible values are:
|
||||||
|
# - true
|
||||||
|
# - false (default)
|
||||||
|
# - disabled (do not modify new-window bindings)
|
||||||
|
tmux_conf_new_window_retain_current_path=false
|
||||||
|
|
||||||
|
# new window tries to reconnect ssh sessions, possible values are:
|
||||||
|
# - true
|
||||||
|
# - false (default)
|
||||||
|
# - disabled (do not modify new-window bindings)
|
||||||
|
tmux_conf_new_window_reconnect_ssh=false
|
||||||
|
|
||||||
|
# new pane retains current path, possible values are:
|
||||||
|
# - true (default)
|
||||||
|
# - false
|
||||||
|
# - disabled (do not modify split-window bindings)
|
||||||
|
tmux_conf_new_pane_retain_current_path=true
|
||||||
|
|
||||||
|
# new pane tries to reconnect ssh sessions, possible values are:
|
||||||
|
# - true
|
||||||
|
# - false (default)
|
||||||
|
# - disabled (do not modify split-window bindings)
|
||||||
|
tmux_conf_new_pane_reconnect_ssh=false
|
||||||
|
|
||||||
|
|
||||||
|
# -- display -------------------------------------------------------------------
|
||||||
|
|
||||||
|
# RGB 24-bit colour support, possible values are:
|
||||||
|
# - true
|
||||||
|
# - false
|
||||||
|
# - auto (default)
|
||||||
|
#
|
||||||
|
# automatic detection relies on the COLORTERM environment variable being defined
|
||||||
|
# to 'truecolor' or '24bit' or '$ tput colors' answering '16777216'
|
||||||
|
# see https://github.com/termstandard/colors
|
||||||
|
tmux_conf_24b_colour=auto
|
||||||
|
|
||||||
|
|
||||||
|
# -- theming -------------------------------------------------------------------
|
||||||
|
|
||||||
|
# enable or disable theming:
|
||||||
|
# - enabled (default)
|
||||||
|
# - disabled
|
||||||
|
# when disabled, all tmux_conf_theme_xxx variables are ignored except:
|
||||||
|
# - tmux_conf_theme_pairing
|
||||||
|
# - tmux_conf_theme_prefix
|
||||||
|
# - tmux_conf_theme_mouse
|
||||||
|
# - tmux_conf_theme_root
|
||||||
|
# - tmux_conf_theme_synchronized
|
||||||
|
tmux_conf_theme=enabled
|
||||||
|
|
||||||
|
# Catppuccin Frappe theme colors - cool blues
|
||||||
|
# Cool cyan and blue tones
|
||||||
|
tmux_conf_theme_colour_1="#232634" # crust - darkest
|
||||||
|
tmux_conf_theme_colour_2="#51576d" # surface1 - lighter gray
|
||||||
|
tmux_conf_theme_colour_3="#626880" # surface2 - medium gray
|
||||||
|
tmux_conf_theme_colour_4="#99d1db" # sky - bright cyan-blue (active)
|
||||||
|
tmux_conf_theme_colour_5="#8caaee" # blue - bright blue
|
||||||
|
tmux_conf_theme_colour_6="#232634" # crust - darkest
|
||||||
|
tmux_conf_theme_colour_7="#c6d0f5" # text - light text
|
||||||
|
tmux_conf_theme_colour_8="#232634" # crust - darkest
|
||||||
|
tmux_conf_theme_colour_9="#85c1dc" # sapphire - bright sapphire-blue
|
||||||
|
tmux_conf_theme_colour_10="#99d1db" # sky - bright cyan
|
||||||
|
tmux_conf_theme_colour_11="#81c8be" # teal - cool teal green
|
||||||
|
tmux_conf_theme_colour_12="#babbf1" # lavender - cool lavender
|
||||||
|
tmux_conf_theme_colour_13="#c6d0f5" # text - light text
|
||||||
|
tmux_conf_theme_colour_14="#232634" # crust - darkest
|
||||||
|
tmux_conf_theme_colour_15="#414559" # surface0 - dark background
|
||||||
|
tmux_conf_theme_colour_16="#e78284" # red - bright red
|
||||||
|
tmux_conf_theme_colour_17="#c6d0f5" # text - light text
|
||||||
|
|
||||||
|
# window style
|
||||||
|
tmux_conf_theme_window_fg="default"
|
||||||
|
tmux_conf_theme_window_bg="default"
|
||||||
|
|
||||||
|
# highlight focused pane, possible values are:
|
||||||
|
# - true
|
||||||
|
# - false (default)
|
||||||
|
tmux_conf_theme_highlight_focused_pane=false
|
||||||
|
|
||||||
|
# focused pane colours:
|
||||||
|
tmux_conf_theme_focused_pane_bg="$tmux_conf_theme_colour_2"
|
||||||
|
|
||||||
|
# pane border style, possible values are:
|
||||||
|
# - thin (default)
|
||||||
|
# - fat
|
||||||
|
tmux_conf_theme_pane_border_style=thin
|
||||||
|
|
||||||
|
# pane borders colours:
|
||||||
|
tmux_conf_theme_pane_border="$tmux_conf_theme_colour_2"
|
||||||
|
tmux_conf_theme_pane_active_border="$tmux_conf_theme_colour_4"
|
||||||
|
%if #{>=:#{version},3.2}
|
||||||
|
tmux_conf_theme_pane_active_border="#{?pane_in_mode,$tmux_conf_theme_colour_9,#{?synchronize-panes,$tmux_conf_theme_colour_16,$tmux_conf_theme_colour_4}}"
|
||||||
|
%endif
|
||||||
|
|
||||||
|
# pane indicator colours (when you hit <prefix> + q)
|
||||||
|
tmux_conf_theme_pane_indicator="$tmux_conf_theme_colour_4"
|
||||||
|
tmux_conf_theme_pane_active_indicator="$tmux_conf_theme_colour_4"
|
||||||
|
|
||||||
|
# status line style
|
||||||
|
tmux_conf_theme_message_fg="$tmux_conf_theme_colour_1"
|
||||||
|
tmux_conf_theme_message_bg="$tmux_conf_theme_colour_5"
|
||||||
|
tmux_conf_theme_message_attr="bold"
|
||||||
|
|
||||||
|
# status line command style (<prefix> : Escape)
|
||||||
|
tmux_conf_theme_message_command_fg="$tmux_conf_theme_colour_5"
|
||||||
|
tmux_conf_theme_message_command_bg="$tmux_conf_theme_colour_1"
|
||||||
|
tmux_conf_theme_message_command_attr="bold"
|
||||||
|
|
||||||
|
# window modes style
|
||||||
|
tmux_conf_theme_mode_fg="$tmux_conf_theme_colour_1"
|
||||||
|
tmux_conf_theme_mode_bg="$tmux_conf_theme_colour_5"
|
||||||
|
tmux_conf_theme_mode_attr="bold"
|
||||||
|
|
||||||
|
# status line style
|
||||||
|
tmux_conf_theme_status_fg="$tmux_conf_theme_colour_3"
|
||||||
|
tmux_conf_theme_status_bg="$tmux_conf_theme_colour_1"
|
||||||
|
tmux_conf_theme_status_attr="none"
|
||||||
|
|
||||||
|
# terminal title
|
||||||
|
# - built-in variables are:
|
||||||
|
# - #{circled_window_index}
|
||||||
|
# - #{circled_session_name}
|
||||||
|
# - #{hostname}
|
||||||
|
# - #{hostname_ssh}
|
||||||
|
# - #{hostname_full}
|
||||||
|
# - #{hostname_full_ssh}
|
||||||
|
# - #{username}
|
||||||
|
# - #{username_ssh}
|
||||||
|
tmux_conf_theme_terminal_title="#h ❐ #S ● #I #W"
|
||||||
|
|
||||||
|
# window status style
|
||||||
|
# - built-in variables are:
|
||||||
|
# - #{circled_window_index}
|
||||||
|
# - #{circled_session_name}
|
||||||
|
# - #{hostname}
|
||||||
|
# - #{hostname_ssh}
|
||||||
|
# - #{hostname_full}
|
||||||
|
# - #{hostname_full_ssh}
|
||||||
|
# - #{username}
|
||||||
|
# - #{username_ssh}
|
||||||
|
tmux_conf_theme_window_status_fg="$tmux_conf_theme_colour_3"
|
||||||
|
tmux_conf_theme_window_status_bg="$tmux_conf_theme_colour_1"
|
||||||
|
tmux_conf_theme_window_status_attr="none"
|
||||||
|
tmux_conf_theme_window_status_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
|
||||||
|
#tmux_conf_theme_window_status_format="#{circled_window_index} #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
|
||||||
|
#tmux_conf_theme_window_status_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}"
|
||||||
|
|
||||||
|
# window current status style
|
||||||
|
# - built-in variables are:
|
||||||
|
# - #{circled_window_index}
|
||||||
|
# - #{circled_session_name}
|
||||||
|
# - #{hostname}
|
||||||
|
# - #{hostname_ssh}
|
||||||
|
# - #{hostname_full}
|
||||||
|
# - #{hostname_full_ssh}
|
||||||
|
# - #{username}
|
||||||
|
# - #{username_ssh}
|
||||||
|
tmux_conf_theme_window_status_current_fg="$tmux_conf_theme_colour_1"
|
||||||
|
tmux_conf_theme_window_status_current_bg="$tmux_conf_theme_colour_4"
|
||||||
|
tmux_conf_theme_window_status_current_attr="bold"
|
||||||
|
tmux_conf_theme_window_status_current_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
|
||||||
|
#tmux_conf_theme_window_status_current_format="#{circled_window_index} #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,!,}#{?window_zoomed_flag,Z,}"
|
||||||
|
#tmux_conf_theme_window_status_current_format="#I #W#{?#{||:#{window_bell_flag},#{window_zoomed_flag}}, ,}#{?window_bell_flag,🔔,}#{?window_zoomed_flag,🔍,}"
|
||||||
|
|
||||||
|
# window activity status style
|
||||||
|
tmux_conf_theme_window_status_activity_fg="default"
|
||||||
|
tmux_conf_theme_window_status_activity_bg="default"
|
||||||
|
tmux_conf_theme_window_status_activity_attr="underscore"
|
||||||
|
|
||||||
|
# window bell status style
|
||||||
|
tmux_conf_theme_window_status_bell_fg="$tmux_conf_theme_colour_5"
|
||||||
|
tmux_conf_theme_window_status_bell_bg="default"
|
||||||
|
tmux_conf_theme_window_status_bell_attr="blink,bold"
|
||||||
|
|
||||||
|
# window last status style
|
||||||
|
tmux_conf_theme_window_status_last_fg="$tmux_conf_theme_colour_4"
|
||||||
|
tmux_conf_theme_window_status_last_bg="$tmux_conf_theme_colour_2"
|
||||||
|
tmux_conf_theme_window_status_last_attr="none"
|
||||||
|
|
||||||
|
# status left/right sections separators
|
||||||
|
tmux_conf_theme_left_separator_main=""
|
||||||
|
tmux_conf_theme_left_separator_sub="|"
|
||||||
|
tmux_conf_theme_right_separator_main=""
|
||||||
|
tmux_conf_theme_right_separator_sub="|"
|
||||||
|
#tmux_conf_theme_left_separator_main='\uE0B0' # /!\ you don't need to install Powerline
|
||||||
|
#tmux_conf_theme_left_separator_sub='\uE0B1' # you only need fonts patched with
|
||||||
|
#tmux_conf_theme_right_separator_main='\uE0B2' # Powerline symbols or the standalone
|
||||||
|
#tmux_conf_theme_right_separator_sub='\uE0B3' # PowerlineSymbols.otf font, see README.md
|
||||||
|
|
||||||
|
# status left/right content:
|
||||||
|
# - separate main sections with "|"
|
||||||
|
# - separate subsections with ","
|
||||||
|
# - built-in variables are:
|
||||||
|
# - #{battery_bar}
|
||||||
|
# - #{battery_hbar}
|
||||||
|
# - #{battery_percentage}
|
||||||
|
# - #{battery_status}
|
||||||
|
# - #{battery_vbar}
|
||||||
|
# - #{circled_session_name}
|
||||||
|
# - #{hostname_ssh}
|
||||||
|
# - #{hostname}
|
||||||
|
# - #{hostname_full}
|
||||||
|
# - #{hostname_full_ssh}
|
||||||
|
# - #{loadavg}
|
||||||
|
# - #{mouse}
|
||||||
|
# - #{pairing}
|
||||||
|
# - #{prefix}
|
||||||
|
# - #{root}
|
||||||
|
# - #{synchronized}
|
||||||
|
# - #{uptime_y}
|
||||||
|
# - #{uptime_d} (modulo 365 when #{uptime_y} is used)
|
||||||
|
# - #{uptime_h}
|
||||||
|
# - #{uptime_m}
|
||||||
|
# - #{uptime_s}
|
||||||
|
# - #{username}
|
||||||
|
# - #{username_ssh}
|
||||||
|
tmux_conf_theme_status_left=" ❐ #S | ↑#{?uptime_y, #{uptime_y}y,}#{?uptime_d, #{uptime_d}d,}#{?uptime_h, #{uptime_h}h,}#{?uptime_m, #{uptime_m}m,} "
|
||||||
|
#tmux_conf_theme_status_left=" ❐ #S | ↑#{?uptime_y, #{uptime_y}y,}#{?uptime_d, #{uptime_d}d,}#{?uptime_h, #{uptime_h}h,}#{?uptime_m, #{uptime_m}m,} | #{pretty_pane_current_path} "
|
||||||
|
tmux_conf_theme_status_right=" #{prefix}#{mouse}#{pairing}#{synchronized}#{?battery_status,#{battery_status},}#{?battery_bar, #{battery_bar},}#{?battery_percentage, #{battery_percentage},} , %R , %d %b | #{username}#{root} | #{hostname} "
|
||||||
|
|
||||||
|
# status left style
|
||||||
|
tmux_conf_theme_status_left_fg="$tmux_conf_theme_colour_1,$tmux_conf_theme_colour_1,$tmux_conf_theme_colour_1"
|
||||||
|
tmux_conf_theme_status_left_bg="$tmux_conf_theme_colour_9,$tmux_conf_theme_colour_10,$tmux_conf_theme_colour_11"
|
||||||
|
tmux_conf_theme_status_left_attr="bold,none,none"
|
||||||
|
|
||||||
|
# status right style
|
||||||
|
tmux_conf_theme_status_right_fg="$tmux_conf_theme_colour_12,$tmux_conf_theme_colour_13,$tmux_conf_theme_colour_14"
|
||||||
|
tmux_conf_theme_status_right_bg="$tmux_conf_theme_colour_15,$tmux_conf_theme_colour_16,$tmux_conf_theme_colour_17"
|
||||||
|
tmux_conf_theme_status_right_attr="none,none,bold"
|
||||||
|
|
||||||
|
# pairing indicator
|
||||||
|
tmux_conf_theme_pairing="⚇" # U+2687
|
||||||
|
tmux_conf_theme_pairing_fg="none"
|
||||||
|
tmux_conf_theme_pairing_bg="none"
|
||||||
|
tmux_conf_theme_pairing_attr="none"
|
||||||
|
|
||||||
|
# prefix indicator
|
||||||
|
tmux_conf_theme_prefix="⌨" # U+2328
|
||||||
|
tmux_conf_theme_prefix_fg="none"
|
||||||
|
tmux_conf_theme_prefix_bg="none"
|
||||||
|
tmux_conf_theme_prefix_attr="none"
|
||||||
|
|
||||||
|
# mouse indicator
|
||||||
|
tmux_conf_theme_mouse="↗" # U+2197
|
||||||
|
tmux_conf_theme_mouse_fg="none"
|
||||||
|
tmux_conf_theme_mouse_bg="none"
|
||||||
|
tmux_conf_theme_mouse_attr="none"
|
||||||
|
|
||||||
|
# root indicator
|
||||||
|
tmux_conf_theme_root="!"
|
||||||
|
tmux_conf_theme_root_fg="none"
|
||||||
|
tmux_conf_theme_root_bg="none"
|
||||||
|
tmux_conf_theme_root_attr="bold,blink"
|
||||||
|
|
||||||
|
# synchronized indicator
|
||||||
|
tmux_conf_theme_synchronized="⚏" # U+268F
|
||||||
|
tmux_conf_theme_synchronized_fg="none"
|
||||||
|
tmux_conf_theme_synchronized_bg="none"
|
||||||
|
tmux_conf_theme_synchronized_attr="none"
|
||||||
|
|
||||||
|
# battery bar symbols
|
||||||
|
tmux_conf_battery_bar_symbol_full="◼"
|
||||||
|
tmux_conf_battery_bar_symbol_empty="◻"
|
||||||
|
#tmux_conf_battery_bar_symbol_full="♥"
|
||||||
|
#tmux_conf_battery_bar_symbol_empty="·"
|
||||||
|
|
||||||
|
# battery bar length (in number of symbols), possible values are:
|
||||||
|
# - auto
|
||||||
|
# - a number, e.g. 5
|
||||||
|
tmux_conf_battery_bar_length="auto"
|
||||||
|
|
||||||
|
# battery bar palette, possible values are:
|
||||||
|
# - gradient (default)
|
||||||
|
# - heat
|
||||||
|
# - "colour_full_fg,colour_empty_fg,colour_bg"
|
||||||
|
# - gradient(colour_fg_1,colour_fg_2,...,colour_fg_n)
|
||||||
|
tmux_conf_battery_bar_palette="gradient"
|
||||||
|
#tmux_conf_battery_bar_palette="#d70000,#e4e4e4,#000000" # red, white, black
|
||||||
|
#tmux_conf_battery_bar_palette="gradient(#00afff,#47a2ff,#7c91ff,#ac7afb,#d65be2,#e163df,#eb6cdd,#f475db,#ec9ff1,#eac3fe,#efe2ff,#ffffff)"
|
||||||
|
|
||||||
|
# battery hbar palette, possible values are:
|
||||||
|
# - gradient (default)
|
||||||
|
# - heat
|
||||||
|
# - "colour_low,colour_half,colour_full"
|
||||||
|
# - gradient(colour_fg_1,colour_fg_2,...,colour_fg_n)
|
||||||
|
tmux_conf_battery_hbar_palette="gradient"
|
||||||
|
#tmux_conf_battery_hbar_palette="#d70000,#ff5f00,#5fff00" # red, orange, green
|
||||||
|
#tmux_conf_battery_hbar_palette="gradient(#00afff,#47a2ff,#7c91ff,#ac7afb,#d65be2,#e163df,#eb6cdd,#f475db,#ec9ff1,#eac3fe,#efe2ff,#ffffff)"
|
||||||
|
|
||||||
|
# battery vbar palette, possible values are:
|
||||||
|
# - gradient (default)
|
||||||
|
# - heat
|
||||||
|
# - "colour_low,colour_half,colour_full"
|
||||||
|
# - gradient(colour_fg_1,colour_fg_2,...,colour_fg_n)
|
||||||
|
tmux_conf_battery_vbar_palette="gradient"
|
||||||
|
#tmux_conf_battery_vbar_palette="#d70000,#ff5f00,#5fff00" # red, orange, green
|
||||||
|
#tmux_conf_battery_vbar_palette="gradient(#00afff,#47a2ff,#7c91ff,#ac7afb,#d65be2,#e163df,#eb6cdd,#f475db,#ec9ff1,#eac3fe,#efe2ff,#ffffff)"
|
||||||
|
|
||||||
|
# symbols used to indicate whether battery is charging or discharging
|
||||||
|
tmux_conf_battery_status_charging="↑" # U+2191
|
||||||
|
tmux_conf_battery_status_discharging="↓" # U+2193
|
||||||
|
#tmux_conf_battery_status_charging="🔌" # U+1F50C
|
||||||
|
#tmux_conf_battery_status_discharging="🔋" # U+1F50B
|
||||||
|
|
||||||
|
# clock style (when you hit <prefix> + t)
|
||||||
|
# you may want to use %I:%M %p in place of %R in tmux_conf_theme_status_right
|
||||||
|
tmux_conf_theme_clock_colour="$tmux_conf_theme_colour_4"
|
||||||
|
tmux_conf_theme_clock_style="24"
|
||||||
|
|
||||||
|
|
||||||
|
# -- clipboard -----------------------------------------------------------------
|
||||||
|
|
||||||
|
# in copy mode, copying selection also copies to the OS clipboard
|
||||||
|
# - true
|
||||||
|
# - false (default)
|
||||||
|
# - disabled
|
||||||
|
# on Linux, this requires xsel, xclip or wl-copy
|
||||||
|
tmux_conf_copy_to_os_clipboard=false
|
||||||
|
|
||||||
|
|
||||||
|
# -- urlscan -------------------------------------------------------------------
|
||||||
|
|
||||||
|
# options passed to urlscan
|
||||||
|
tmux_conf_urlscan_options="--compact --dedupe"
|
||||||
|
|
||||||
|
|
||||||
|
# -- user customizations -------------------------------------------------------
|
||||||
|
|
||||||
|
# this is the place to override or undo settings
|
||||||
|
|
||||||
|
# increase history size
|
||||||
|
set -g history-limit 50000
|
||||||
|
|
||||||
|
# start with mouse mode enabled (для прокрутки тачпадом)
|
||||||
|
set -g mouse on
|
||||||
|
|
||||||
|
# force Vi mode
|
||||||
|
# really you should export VISUAL or EDITOR environment variable, see manual
|
||||||
|
#set -g status-keys vi
|
||||||
|
#set -g mode-keys vi
|
||||||
|
|
||||||
|
# replace C-b by C-a instead of using both prefixes
|
||||||
|
# set -gu prefix2
|
||||||
|
# unbind C-a
|
||||||
|
# unbind C-b
|
||||||
|
# set -g prefix C-a
|
||||||
|
# bind C-a send-prefix
|
||||||
|
|
||||||
|
# if you don't want Oh my tmux! to alter a binding or a setting, use #!important
|
||||||
|
# bind c new-window -c '#{pane_current_path}' #!important
|
||||||
|
|
||||||
|
# display a message after toggling mouse support
|
||||||
|
bind m run "cut -c3- '#{TMUX_CONF}' | sh -s _toggle_mouse" \; display 'mouse #{?#{mouse},on,off}'
|
||||||
|
|
||||||
|
# move status line to top
|
||||||
|
#set -g status-position top
|
||||||
|
|
||||||
|
# -- custom key bindings -------------------------------------------------------
|
||||||
|
|
||||||
|
# Alt+стрелки для переключения между окнами (вкладками)
|
||||||
|
bind -n M-Left previous-window
|
||||||
|
bind -n M-Right next-window
|
||||||
|
bind -n M-Up switch-client -p
|
||||||
|
bind -n M-Down switch-client -n
|
||||||
|
|
||||||
|
# Навигация между панелями - поддержка русской раскладки (р/о/л/д = h/j/k/l)
|
||||||
|
bind -r р select-pane -L # h -> р (влево)
|
||||||
|
bind -r о select-pane -D # j -> о (вниз)
|
||||||
|
bind -r л select-pane -U # k -> л (вверх)
|
||||||
|
bind -r д select-pane -R # l -> д (вправо)
|
||||||
|
|
||||||
|
# Изменение размера панелей - поддержка русской раскладки
|
||||||
|
bind -r Р resize-pane -L 2 # H -> Р
|
||||||
|
bind -r О resize-pane -D 2 # J -> О
|
||||||
|
bind -r Л resize-pane -U 2 # K -> Л
|
||||||
|
bind -r Д resize-pane -R 2 # L -> Д
|
||||||
|
|
||||||
|
# Навигация между окнами - русская раскладка
|
||||||
|
bind -r C-р previous-window # C-h -> C-р
|
||||||
|
bind -r C-д next-window # C-l -> C-д
|
||||||
|
|
||||||
|
# Создание нового окна - русская раскладка
|
||||||
|
bind с new-window # c -> с
|
||||||
|
|
||||||
|
# Поиск сессии - русская раскладка
|
||||||
|
bind C-а command-prompt -p find-session 'switch-client -t %%' # C-f -> C-а
|
||||||
|
|
||||||
|
# Ctrl+Alt+h или Ctrl+Alt+р для показа гайда по горячим клавишам (в новом окне с прокруткой)
|
||||||
|
bind -n C-M-h new-window -n "TMUX Шпаргалка" "cat << 'EOF' | less -R
|
||||||
|
╔═══════════════════════════════════════════════════════════════════════════╗
|
||||||
|
║ TMUX ГОРЯЧИЕ КЛАВИШИ (prefix = Ctrl+b или Ctrl+a) ║
|
||||||
|
╚═══════════════════════════════════════════════════════════════════════════╝
|
||||||
|
|
||||||
|
📋 ОСНОВНЫЕ КОМАНДЫ:
|
||||||
|
prefix + ? - Показать все горячие клавиши
|
||||||
|
prefix + : - Командная строка tmux
|
||||||
|
prefix + r (к) - Перезагрузить конфигурацию
|
||||||
|
prefix + e (у) - Редактировать ~/.tmux.conf.local
|
||||||
|
Ctrl+l - Очистить экран и историю
|
||||||
|
|
||||||
|
🪟 УПРАВЛЕНИЕ ОКНАМИ (вкладками):
|
||||||
|
prefix + c (с) - Создать новое окно
|
||||||
|
prefix + , - Переименовать текущее окно
|
||||||
|
prefix + & - Закрыть текущее окно
|
||||||
|
prefix + n (т) - Следующее окно
|
||||||
|
prefix + p (з) - Предыдущее окно
|
||||||
|
prefix + Ctrl+h (р) - Предыдущее окно
|
||||||
|
prefix + Ctrl+l (д) - Следующее окно
|
||||||
|
prefix + Tab - Последнее активное окно
|
||||||
|
prefix + 0-9 - Переключиться на окно по номеру
|
||||||
|
Alt + ←/→ - Переключение между окнами
|
||||||
|
Alt + ↑/↓ - Переключение между сессиями
|
||||||
|
|
||||||
|
🔲 УПРАВЛЕНИЕ ПАНЕЛЯМИ:
|
||||||
|
prefix + - - Разделить по горизонтали
|
||||||
|
prefix + _ - Разделить по вертикали
|
||||||
|
prefix + h/j/k/l (р/о/л/д) - Навигация между панелями (vim-style)
|
||||||
|
prefix + H/J/K/L (Р/О/Л/Д) - Изменить размер панели
|
||||||
|
prefix + < - Поменять панели местами (влево)
|
||||||
|
prefix + > - Поменять панели местами (вправо)
|
||||||
|
prefix + + - Развернуть панель на весь экран
|
||||||
|
prefix + x (ч) - Закрыть текущую панель
|
||||||
|
prefix + ! - Превратить панель в окно
|
||||||
|
prefix + z (я) - Zoom панели (toggle)
|
||||||
|
prefix + q (й) - Показать номера панелей
|
||||||
|
|
||||||
|
📋 КОПИРОВАНИЕ И ВСТАВКА:
|
||||||
|
prefix + Enter - Режим копирования
|
||||||
|
prefix + b (и) - Список буферов
|
||||||
|
prefix + p (з) - Вставить из буфера
|
||||||
|
prefix + P (З) - Выбрать буфер для вставки
|
||||||
|
|
||||||
|
В режиме копирования:
|
||||||
|
v (м) - Начать выделение
|
||||||
|
y (н) - Скопировать выделенное
|
||||||
|
Escape - Выйти из режима копирования
|
||||||
|
|
||||||
|
🔧 СЕССИИ:
|
||||||
|
prefix + Ctrl+c (с) - Создать новую сессию
|
||||||
|
prefix + Ctrl+f (а) - Найти сессию
|
||||||
|
prefix + d (в) - Отключиться от сессии
|
||||||
|
prefix + D (В) - Выбрать сессию для отключения
|
||||||
|
prefix + s (ы) - Список сессий
|
||||||
|
|
||||||
|
🖱️ ДРУГОЕ:
|
||||||
|
prefix + m (ь) - Включить/выключить мышь
|
||||||
|
prefix + t (е) - Показать часы
|
||||||
|
prefix + U (Г) - Открыть URL (urlscan/urlview)
|
||||||
|
prefix + F (А) - Facebook PathPicker (если установлен)
|
||||||
|
Ctrl+Alt+h (р) - Показать этот гайд
|
||||||
|
|
||||||
|
💡 Используйте стрелки ↑/↓ или j/k для прокрутки
|
||||||
|
💡 Нажмите q для выхода
|
||||||
|
💡 Русская раскладка поддерживается! (в скобках указаны русские буквы)
|
||||||
|
|
||||||
|
EOF
|
||||||
|
"
|
||||||
|
|
||||||
|
# Дубликат для русской раскладки Ctrl+Alt+р
|
||||||
|
bind -n C-M-р new-window -n "TMUX Шпаргалка" "cat << 'EOF' | less -R
|
||||||
|
╔═══════════════════════════════════════════════════════════════════════════╗
|
||||||
|
║ TMUX ГОРЯЧИЕ КЛАВИШИ (prefix = Ctrl+b или Ctrl+a) ║
|
||||||
|
╚═══════════════════════════════════════════════════════════════════════════╝
|
||||||
|
|
||||||
|
📋 ОСНОВНЫЕ КОМАНДЫ:
|
||||||
|
prefix + ? - Показать все горячие клавиши
|
||||||
|
prefix + : - Командная строка tmux
|
||||||
|
prefix + r (к) - Перезагрузить конфигурацию
|
||||||
|
prefix + e (у) - Редактировать ~/.tmux.conf.local
|
||||||
|
Ctrl+l - Очистить экран и историю
|
||||||
|
|
||||||
|
🪟 УПРАВЛЕНИЕ ОКНАМИ (вкладками):
|
||||||
|
prefix + c (с) - Создать новое окно
|
||||||
|
prefix + , - Переименовать текущее окно
|
||||||
|
prefix + & - Закрыть текущее окно
|
||||||
|
prefix + n (т) - Следующее окно
|
||||||
|
prefix + p (з) - Предыдущее окно
|
||||||
|
prefix + Ctrl+h (р) - Предыдущее окно
|
||||||
|
prefix + Ctrl+l (д) - Следующее окно
|
||||||
|
prefix + Tab - Последнее активное окно
|
||||||
|
prefix + 0-9 - Переключиться на окно по номеру
|
||||||
|
Alt + ←/→ - Переключение между окнами
|
||||||
|
Alt + ↑/↓ - Переключение между сессиями
|
||||||
|
|
||||||
|
🔲 УПРАВЛЕНИЕ ПАНЕЛЯМИ:
|
||||||
|
prefix + - - Разделить по горизонтали
|
||||||
|
prefix + _ - Разделить по вертикали
|
||||||
|
prefix + h/j/k/l (р/о/л/д) - Навигация между панелями (vim-style)
|
||||||
|
prefix + H/J/K/L (Р/О/Л/Д) - Изменить размер панели
|
||||||
|
prefix + < - Поменять панели местами (влево)
|
||||||
|
prefix + > - Поменять панели местами (вправо)
|
||||||
|
prefix + + - Развернуть панель на весь экран
|
||||||
|
prefix + x (ч) - Закрыть текущую панель
|
||||||
|
prefix + ! - Превратить панель в окно
|
||||||
|
prefix + z (я) - Zoom панели (toggle)
|
||||||
|
prefix + q (й) - Показать номера панелей
|
||||||
|
|
||||||
|
📋 КОПИРОВАНИЕ И ВСТАВКА:
|
||||||
|
prefix + Enter - Режим копирования
|
||||||
|
prefix + b (и) - Список буферов
|
||||||
|
prefix + p (з) - Вставить из буфера
|
||||||
|
prefix + P (З) - Выбрать буфер для вставки
|
||||||
|
|
||||||
|
В режиме копирования:
|
||||||
|
v (м) - Начать выделение
|
||||||
|
y (н) - Скопировать выделенное
|
||||||
|
Escape - Выйти из режима копирования
|
||||||
|
|
||||||
|
🔧 СЕССИИ:
|
||||||
|
prefix + Ctrl+c (с) - Создать новую сессию
|
||||||
|
prefix + Ctrl+f (а) - Найти сессию
|
||||||
|
prefix + d (в) - Отключиться от сессии
|
||||||
|
prefix + D (В) - Выбрать сессию для отключения
|
||||||
|
prefix + s (ы) - Список сессий
|
||||||
|
|
||||||
|
🖱️ ДРУГОЕ:
|
||||||
|
prefix + m (ь) - Включить/выключить мышь
|
||||||
|
prefix + t (е) - Показать часы
|
||||||
|
prefix + U (Г) - Открыть URL (urlscan/urlview)
|
||||||
|
prefix + F (А) - Facebook PathPicker (если установлен)
|
||||||
|
Ctrl+Alt+h (р) - Показать этот гайд
|
||||||
|
|
||||||
|
💡 Используйте стрелки ↑/↓ или j/k для прокрутки
|
||||||
|
💡 Нажмите q для выхода
|
||||||
|
💡 Русская раскладка поддерживается! (в скобках указаны русские буквы)
|
||||||
|
|
||||||
|
EOF
|
||||||
|
"
|
||||||
|
|
||||||
|
|
||||||
|
# -- tpm -----------------------------------------------------------------------
|
||||||
|
|
||||||
|
# while I don't use tpm myself, many people requested official support so here
|
||||||
|
# is a seamless integration that automatically installs plugins in parallel
|
||||||
|
|
||||||
|
# whenever a plugin introduces a variable to be used in 'status-left' or
|
||||||
|
# 'status-right', you can use it in 'tmux_conf_theme_status_left' and
|
||||||
|
# 'tmux_conf_theme_status_right' variables.
|
||||||
|
|
||||||
|
# by default, launching tmux will update tpm and all plugins
|
||||||
|
# - true (default)
|
||||||
|
# - false
|
||||||
|
tmux_conf_update_plugins_on_launch=true
|
||||||
|
|
||||||
|
# by default, reloading the configuration will update tpm and all plugins
|
||||||
|
# - true (default)
|
||||||
|
# - false
|
||||||
|
tmux_conf_update_plugins_on_reload=true
|
||||||
|
|
||||||
|
# by default, reloading the configuration will uninstall tpm and plugins when no
|
||||||
|
# plugins are enabled
|
||||||
|
# - true (default)
|
||||||
|
# - false
|
||||||
|
tmux_conf_uninstall_plugins_on_reload=true
|
||||||
|
|
||||||
|
# /!\ the tpm bindings differ slightly from upstream:
|
||||||
|
# - installing plugins: <prefix> + I
|
||||||
|
# - uninstalling plugins: <prefix> + Alt + u
|
||||||
|
# - updating plugins: <prefix> + u
|
||||||
|
|
||||||
|
# /!\ do not add set -g @plugin 'tmux-plugins/tpm'
|
||||||
|
# /!\ do not add run '~/.tmux/plugins/tpm/tpm'
|
||||||
|
|
||||||
|
# /!\ the 'set -g @tpm_plugins' syntax is not supported
|
||||||
|
# to enable a plugin, use the 'set -g @plugin' syntax:
|
||||||
|
# visit https://github.com/tmux-plugins for available plugins
|
||||||
|
#set -g @plugin 'tmux-plugins/tmux-copycat'
|
||||||
|
#set -g @plugin 'tmux-plugins/tmux-cpu'
|
||||||
|
#set -g @plugin 'tmux-plugins/tmux-resurrect'
|
||||||
|
#set -g @plugin 'tmux-plugins/tmux-continuum'
|
||||||
|
#set -g @continuum-restore 'on'
|
||||||
|
|
||||||
|
|
||||||
|
# -- custom variables ----------------------------------------------------------
|
||||||
|
|
||||||
|
# to define a custom #{foo} variable, define a POSIX shell function between the
|
||||||
|
# '# EOF' and the '# "$@"' lines. Please note that the opening brace { character
|
||||||
|
# must be on the same line as the function name otherwise the parse won't detect
|
||||||
|
# it.
|
||||||
|
#
|
||||||
|
# then, use #{foo} in e.g. the 'tmux_conf_theme_status_left' or the
|
||||||
|
# 'tmux_conf_theme_status_right' variables.
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# # /!\ do not remove the following line
|
||||||
|
# EOF
|
||||||
|
#
|
||||||
|
# # /!\ do not "uncomment" the functions: the leading "# " characters are needed
|
||||||
|
#
|
||||||
|
# # usage: #{weather}
|
||||||
|
# weather() { # see https://github.com/chubin/wttr.in#one-line-output
|
||||||
|
# curl -f -s -m 2 'wttr.in?format=3' || printf '\n' # /!\ make sure curl is installed
|
||||||
|
# sleep 900 # sleep for 15 minutes, throttle network requests whatever the value of status-interval
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# # usage: #{online}
|
||||||
|
# online() {
|
||||||
|
# ping -c 1 1.1.1.1 >/dev/null 2>&1 && printf '✔' || printf '✘'
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# # usage: #{wan_ip_v4}
|
||||||
|
# wan_ip_v4() {
|
||||||
|
# curl -f -s -m 2 -4 ifconfig.me
|
||||||
|
# sleep 300 # sleep for 5 minutes, throttle network requests whatever the value of status-interval
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# # usage: #{wan_ip_v6}
|
||||||
|
# wan_ip_v6() {
|
||||||
|
# curl -f -s -m 2 -6 ifconfig.me
|
||||||
|
# sleep 300 # sleep for 5 minutes, throttle network requests whatever the value of status-interval
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# # usage: #{github_stars}, #{github_stars tmux/tmux}, ...
|
||||||
|
# github_stars() {
|
||||||
|
# repository=${1##*https://github.com/}
|
||||||
|
# repository=${repository%% *}
|
||||||
|
# repository=${repository%%.git}
|
||||||
|
# url="https://api.github.com/repos/${repository:-gpakosz/.tmux}"
|
||||||
|
# curl -s "$url" | perl -MJSON::PP=decode_json -CO -0777 -E '$response = decode_json(readline *STDIN); say ($response->{stargazers_count})'
|
||||||
|
# sleep 300 # sleep for 5 minutes, throttle network requests whatever the value of status-interval
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# "$@"
|
||||||
|
# # /!\ do not remove the previous line
|
||||||
|
# # do not write below this line
|
||||||
+132
@@ -0,0 +1,132 @@
|
|||||||
|
" Ada's Vim config — lightweight and close to Neovim setup
|
||||||
|
" Encoding and basics
|
||||||
|
scriptencoding utf-8
|
||||||
|
set nocompatible
|
||||||
|
|
||||||
|
" Leader
|
||||||
|
let mapleader = " "
|
||||||
|
|
||||||
|
" UI
|
||||||
|
set number
|
||||||
|
set relativenumber
|
||||||
|
set cursorline
|
||||||
|
set signcolumn=yes
|
||||||
|
set termguicolors
|
||||||
|
|
||||||
|
" Indentation
|
||||||
|
set expandtab
|
||||||
|
set shiftwidth=2
|
||||||
|
set tabstop=2
|
||||||
|
set smartindent
|
||||||
|
|
||||||
|
" Search
|
||||||
|
set ignorecase
|
||||||
|
set smartcase
|
||||||
|
set incsearch
|
||||||
|
|
||||||
|
" Files
|
||||||
|
set noswapfile
|
||||||
|
set undofile
|
||||||
|
|
||||||
|
" Performance
|
||||||
|
set updatetime=200
|
||||||
|
set timeoutlen=400
|
||||||
|
|
||||||
|
" Splits
|
||||||
|
set splitbelow
|
||||||
|
set splitright
|
||||||
|
|
||||||
|
" Clipboard (prefer system clipboard if available)
|
||||||
|
if has('unnamedplus')
|
||||||
|
set clipboard=unnamedplus
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Keymaps
|
||||||
|
nnoremap <silent> j gj
|
||||||
|
nnoremap <silent> k gk
|
||||||
|
nnoremap <silent> <leader>w :w<CR>
|
||||||
|
nnoremap <silent> <leader>q :q<CR>
|
||||||
|
nnoremap <silent> <leader>h :nohlsearch<CR>
|
||||||
|
|
||||||
|
" Windows
|
||||||
|
nnoremap <silent> <leader>sv <C-w>v
|
||||||
|
nnoremap <silent> <leader>sh <C-w>s
|
||||||
|
nnoremap <silent> <leader>se <C-w>=
|
||||||
|
nnoremap <silent> <leader>sx :close<CR>
|
||||||
|
|
||||||
|
" Buffers
|
||||||
|
nnoremap <silent> <S-l> :bnext<CR>
|
||||||
|
nnoremap <silent> <S-h> :bprevious<CR>
|
||||||
|
|
||||||
|
" Quickfix
|
||||||
|
nnoremap <silent> ]q :cnext<CR>
|
||||||
|
nnoremap <silent> [q :cprev<CR>
|
||||||
|
|
||||||
|
" Autocommands
|
||||||
|
augroup AdaCore
|
||||||
|
autocmd!
|
||||||
|
" Resize splits equally on terminal resize
|
||||||
|
autocmd VimResized * tabdo wincmd =
|
||||||
|
" Disable auto comment on new line
|
||||||
|
autocmd FileType * setlocal formatoptions-=o formatoptions-=r
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
" ------------------------------
|
||||||
|
" Plugin manager: vim-plug (auto-bootstrap)
|
||||||
|
" ------------------------------
|
||||||
|
if empty(glob('~/.vim/autoload/plug.vim')) && !exists('$VIM_SKIP_PLUG_BOOTSTRAP')
|
||||||
|
silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
|
||||||
|
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
|
||||||
|
endif
|
||||||
|
|
||||||
|
call plug#begin('~/.vim/plugged')
|
||||||
|
|
||||||
|
" Theme (Nord for Vim)
|
||||||
|
Plug 'arcticicestudio/nord-vim'
|
||||||
|
|
||||||
|
" Fuzzy finder (fzf)
|
||||||
|
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
|
||||||
|
Plug 'junegunn/fzf.vim'
|
||||||
|
|
||||||
|
" File tree
|
||||||
|
Plug 'preservim/nerdtree'
|
||||||
|
|
||||||
|
" Editing helpers
|
||||||
|
Plug 'tpope/vim-surround'
|
||||||
|
Plug 'tpope/vim-commentary'
|
||||||
|
|
||||||
|
" Git signs
|
||||||
|
Plug 'airblade/vim-gitgutter'
|
||||||
|
|
||||||
|
" Statusline
|
||||||
|
Plug 'itchyny/lightline.vim'
|
||||||
|
|
||||||
|
" Optional: LSP-like features via coc.nvim (uncomment if needed)
|
||||||
|
" Plug 'neoclide/coc.nvim', {'branch': 'release'}
|
||||||
|
|
||||||
|
call plug#end()
|
||||||
|
|
||||||
|
" Colorscheme
|
||||||
|
try
|
||||||
|
colorscheme nord
|
||||||
|
catch
|
||||||
|
colorscheme default
|
||||||
|
endtry
|
||||||
|
|
||||||
|
" Lightline theme to match colors
|
||||||
|
let g:lightline = { 'colorscheme': 'nord' }
|
||||||
|
|
||||||
|
" NERDTree toggle
|
||||||
|
nnoremap <silent> <leader>e :NERDTreeToggle<CR>
|
||||||
|
|
||||||
|
" FZF mappings
|
||||||
|
nnoremap <silent> <leader>ff :Files<CR>
|
||||||
|
nnoremap <silent> <leader>fg :Rg<CR>
|
||||||
|
nnoremap <silent> <leader>fb :Buffers<CR>
|
||||||
|
nnoremap <silent> <leader>fh :Helptags<CR>
|
||||||
|
|
||||||
|
" Better terminal colors for fzf in Vim
|
||||||
|
let g:fzf_layout = { 'down': '~40%' }
|
||||||
|
|
||||||
|
" If coc.nvim is enabled, you may want additional mappings/settings.
|
||||||
|
" See vim/vimrc comments or vim/README.md for tips.
|
||||||
@@ -0,0 +1,123 @@
|
|||||||
|
// Zed settings
|
||||||
|
//
|
||||||
|
// For information on how to configure Zed, see the Zed
|
||||||
|
// documentation: https://zed.dev/docs/configuring-zed
|
||||||
|
//
|
||||||
|
// To see all of Zed's default settings without changing your
|
||||||
|
// custom settings, run `zed: open default settings` from the
|
||||||
|
// command palette (cmd-shift-p / ctrl-shift-p)
|
||||||
|
{
|
||||||
|
"edit_predictions": {
|
||||||
|
"provider": "copilot"
|
||||||
|
},
|
||||||
|
"outline_panel": {
|
||||||
|
"auto_fold_dirs": true,
|
||||||
|
},
|
||||||
|
"use_system_window_tabs": true,
|
||||||
|
"centered_layout": {
|
||||||
|
"left_padding": 0.2,
|
||||||
|
},
|
||||||
|
"redact_private_values": false,
|
||||||
|
"cursor_shape": "bar",
|
||||||
|
"autosave": {
|
||||||
|
"after_delay": {
|
||||||
|
"milliseconds": 1000,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"preview_tabs": {
|
||||||
|
"enabled": true,
|
||||||
|
"enable_preview_from_multibuffer": true,
|
||||||
|
"enable_preview_from_file_finder": false,
|
||||||
|
},
|
||||||
|
"pane_split_direction_vertical": "right",
|
||||||
|
"zoomed_padding": true,
|
||||||
|
"active_pane_modifiers": {
|
||||||
|
"inactive_opacity": 1.0,
|
||||||
|
"border_size": 0.0,
|
||||||
|
},
|
||||||
|
"status_bar": {
|
||||||
|
"active_language_button": true,
|
||||||
|
"cursor_position_button": true,
|
||||||
|
},
|
||||||
|
"terminal": {
|
||||||
|
"dock": "bottom",
|
||||||
|
"button": true,
|
||||||
|
},
|
||||||
|
"diagnostics": {
|
||||||
|
"button": true,
|
||||||
|
},
|
||||||
|
"search": {
|
||||||
|
"button": true,
|
||||||
|
},
|
||||||
|
"debugger": {
|
||||||
|
"button": true,
|
||||||
|
},
|
||||||
|
"tabs": {
|
||||||
|
"show_diagnostics": "errors",
|
||||||
|
"close_position": "right",
|
||||||
|
"file_icons": true,
|
||||||
|
"git_status": true,
|
||||||
|
},
|
||||||
|
"tab_bar": {
|
||||||
|
"show": true,
|
||||||
|
},
|
||||||
|
"title_bar": {
|
||||||
|
"show_menus": false,
|
||||||
|
"show_user_picture": false,
|
||||||
|
"show_onboarding_banner": true,
|
||||||
|
"show_project_items": true,
|
||||||
|
"show_branch_name": true,
|
||||||
|
"show_branch_icon": true,
|
||||||
|
},
|
||||||
|
"project_panel": {
|
||||||
|
"sort_mode": "directories_first",
|
||||||
|
"dock": "left",
|
||||||
|
"hide_root": true,
|
||||||
|
"button": true,
|
||||||
|
"indent_size": 15.0,
|
||||||
|
"git_status": true,
|
||||||
|
"folder_icons": true,
|
||||||
|
"file_icons": true,
|
||||||
|
"hide_gitignore": false,
|
||||||
|
},
|
||||||
|
"agent": {
|
||||||
|
"button": true,
|
||||||
|
"always_allow_tool_actions": true,
|
||||||
|
"inline_assistant_model": {
|
||||||
|
"provider": "copilot_chat",
|
||||||
|
"model": "grok-code-fast-1",
|
||||||
|
},
|
||||||
|
"default_profile": "ask",
|
||||||
|
"default_model": {
|
||||||
|
"provider": "copilot_chat",
|
||||||
|
"model": "gpt-5.1-codex-max",
|
||||||
|
},
|
||||||
|
"model_parameters": [],
|
||||||
|
},
|
||||||
|
"collaboration_panel": {
|
||||||
|
"button": false,
|
||||||
|
"dock": "right",
|
||||||
|
},
|
||||||
|
"ui_font_family": "FiraCode Nerd Font Mono",
|
||||||
|
"telemetry": {
|
||||||
|
"diagnostics": false,
|
||||||
|
"metrics": false,
|
||||||
|
},
|
||||||
|
"buffer_font_weight": 400.0,
|
||||||
|
"ui_font_weight": 400.0,
|
||||||
|
"buffer_font_family": "FiraCode Nerd Font Mono",
|
||||||
|
"buffer_line_height": "comfortable",
|
||||||
|
"icon_theme": {
|
||||||
|
"mode": "system",
|
||||||
|
"light": "Material Icon Theme",
|
||||||
|
"dark": "Catppuccin Frappé",
|
||||||
|
},
|
||||||
|
"ui_font_size": 16.0,
|
||||||
|
"buffer_font_size": 15.0,
|
||||||
|
"proxy": "http://127.0.0.1:8118",
|
||||||
|
"theme": {
|
||||||
|
"mode": "system",
|
||||||
|
"light": "Nord Light",
|
||||||
|
"dark": "Catppuccin Frappé",
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,123 @@
|
|||||||
|
// Zed settings
|
||||||
|
//
|
||||||
|
// For information on how to configure Zed, see the Zed
|
||||||
|
// documentation: https://zed.dev/docs/configuring-zed
|
||||||
|
//
|
||||||
|
// To see all of Zed's default settings without changing your
|
||||||
|
// custom settings, run `zed: open default settings` from the
|
||||||
|
// command palette (cmd-shift-p / ctrl-shift-p)
|
||||||
|
{
|
||||||
|
"outline_panel": {
|
||||||
|
"auto_fold_dirs": true,
|
||||||
|
},
|
||||||
|
"use_system_window_tabs": true,
|
||||||
|
"centered_layout": {
|
||||||
|
"left_padding": 0.2,
|
||||||
|
},
|
||||||
|
"redact_private_values": false,
|
||||||
|
"cursor_shape": "bar",
|
||||||
|
"autosave": {
|
||||||
|
"after_delay": {
|
||||||
|
"milliseconds": 1000,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"preview_tabs": {
|
||||||
|
"enabled": true,
|
||||||
|
"enable_preview_from_multibuffer": true,
|
||||||
|
"enable_preview_from_file_finder": false,
|
||||||
|
},
|
||||||
|
"pane_split_direction_vertical": "right",
|
||||||
|
"zoomed_padding": true,
|
||||||
|
"active_pane_modifiers": {
|
||||||
|
"inactive_opacity": 1.0,
|
||||||
|
"border_size": 0.0,
|
||||||
|
},
|
||||||
|
"status_bar": {
|
||||||
|
"active_language_button": true,
|
||||||
|
"cursor_position_button": true,
|
||||||
|
},
|
||||||
|
"terminal": {
|
||||||
|
"dock": "bottom",
|
||||||
|
"button": true,
|
||||||
|
},
|
||||||
|
"diagnostics": {
|
||||||
|
"button": true,
|
||||||
|
},
|
||||||
|
"search": {
|
||||||
|
"button": true,
|
||||||
|
},
|
||||||
|
"debugger": {
|
||||||
|
"button": true,
|
||||||
|
},
|
||||||
|
"tabs": {
|
||||||
|
"show_diagnostics": "errors",
|
||||||
|
"close_position": "right",
|
||||||
|
"file_icons": true,
|
||||||
|
"git_status": true,
|
||||||
|
},
|
||||||
|
"tab_bar": {
|
||||||
|
"show": true,
|
||||||
|
},
|
||||||
|
"title_bar": {
|
||||||
|
"show_menus": false,
|
||||||
|
"show_user_picture": false,
|
||||||
|
"show_onboarding_banner": true,
|
||||||
|
"show_project_items": true,
|
||||||
|
"show_branch_name": true,
|
||||||
|
"show_branch_icon": true,
|
||||||
|
},
|
||||||
|
"project_panel": {
|
||||||
|
"sort_mode": "directories_first",
|
||||||
|
"dock": "left",
|
||||||
|
"hide_root": true,
|
||||||
|
"button": true,
|
||||||
|
"indent_size": 15.0,
|
||||||
|
"git_status": true,
|
||||||
|
"folder_icons": true,
|
||||||
|
"file_icons": true,
|
||||||
|
"hide_gitignore": false,
|
||||||
|
},
|
||||||
|
"agent": {
|
||||||
|
"button": true,
|
||||||
|
"always_allow_tool_actions": true,
|
||||||
|
"inline_assistant_model": {
|
||||||
|
"provider": "copilot_chat",
|
||||||
|
"model": "grok-code-fast-1",
|
||||||
|
},
|
||||||
|
"default_profile": "ask",
|
||||||
|
"default_model": {
|
||||||
|
"provider": "copilot_chat",
|
||||||
|
"model": "gpt-5.1-codex-max",
|
||||||
|
},
|
||||||
|
"model_parameters": [],
|
||||||
|
},
|
||||||
|
"collaboration_panel": {
|
||||||
|
"button": false,
|
||||||
|
"dock": "right",
|
||||||
|
},
|
||||||
|
"features": {
|
||||||
|
"edit_prediction_provider": "copilot",
|
||||||
|
},
|
||||||
|
"ui_font_family": "FiraCode Nerd Font Mono",
|
||||||
|
"telemetry": {
|
||||||
|
"diagnostics": false,
|
||||||
|
"metrics": false,
|
||||||
|
},
|
||||||
|
"buffer_font_weight": 400.0,
|
||||||
|
"ui_font_weight": 400.0,
|
||||||
|
"buffer_font_family": "FiraCode Nerd Font Mono",
|
||||||
|
"buffer_line_height": "comfortable",
|
||||||
|
"icon_theme": {
|
||||||
|
"mode": "system",
|
||||||
|
"light": "Material Icon Theme",
|
||||||
|
"dark": "Catppuccin Frappé",
|
||||||
|
},
|
||||||
|
"ui_font_size": 16.0,
|
||||||
|
"buffer_font_size": 15.0,
|
||||||
|
"proxy": "http://127.0.0.1:8118",
|
||||||
|
"theme": {
|
||||||
|
"mode": "system",
|
||||||
|
"light": "Nord Light",
|
||||||
|
"dark": "Catppuccin Frappé",
|
||||||
|
},
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,50 @@
|
|||||||
|
# ════════════════════════════════════════════════════════════
|
||||||
|
# Ada's Modular ZSH Configuration
|
||||||
|
# ════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
# ═══ Powerlevel10k Instant Prompt ══════════════════════════
|
||||||
|
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.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:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
|
||||||
|
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Путь к конфигурации zsh
|
||||||
|
export ZDOTDIR="${ZDOTDIR:-${HOME}/.config/zsh}"
|
||||||
|
ZSH_CONFIG_DIR="${ZDOTDIR}/config"
|
||||||
|
|
||||||
|
# ═══ Zinit (Plugin Manager) ════════════════════════════════
|
||||||
|
# Автоматическая установка zinit при первом запуске
|
||||||
|
ZINIT_HOME="${XDG_DATA_HOME:-${HOME}/.local/share}/zinit/zinit.git"
|
||||||
|
if [[ ! -d "$ZINIT_HOME" ]]; then
|
||||||
|
print -P "%F{blue}▓▒░ Установка zinit...%f"
|
||||||
|
mkdir -p "$(dirname $ZINIT_HOME)"
|
||||||
|
git clone https://github.com/zdharma-continuum/zinit.git "$ZINIT_HOME"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Загрузка zinit
|
||||||
|
source "${ZINIT_HOME}/zinit.zsh"
|
||||||
|
|
||||||
|
# ═══ Загрузка модулей ══════════════════════════════════════
|
||||||
|
# Порядок загрузки важен!
|
||||||
|
source "${ZSH_CONFIG_DIR}/env.zsh" # Переменные окружения
|
||||||
|
source "${ZSH_CONFIG_DIR}/options.zsh" # Настройки оболочки
|
||||||
|
source "${ZSH_CONFIG_DIR}/plugins.zsh" # Плагины через zinit
|
||||||
|
source "${ZSH_CONFIG_DIR}/completion.zsh" # Автодополнение
|
||||||
|
source "${ZSH_CONFIG_DIR}/aliases.zsh" # Алиасы
|
||||||
|
source "${ZSH_CONFIG_DIR}/functions.zsh" # Пользовательские функции
|
||||||
|
source "${ZSH_CONFIG_DIR}/keybindings.zsh" # Горячие клавиши
|
||||||
|
source "${ZSH_CONFIG_DIR}/prompt.zsh" # Настройка промпта (starship)
|
||||||
|
|
||||||
|
# ═══ Локальные настройки (опционально) ═════════════════════
|
||||||
|
# Для машинно-специфичных настроек
|
||||||
|
[[ -f "${ZSH_CONFIG_DIR}/local.zsh" ]] && source "${ZSH_CONFIG_DIR}/local.zsh"
|
||||||
|
|
||||||
|
# To customize prompt, run `p10k configure` or edit ~/.config/zsh/.p10k.zsh.
|
||||||
|
[[ ! -f ~/.config/zsh/.p10k.zsh ]] || source ~/.config/zsh/.p10k.zsh
|
||||||
|
|
||||||
|
# To customize prompt, run `p10k configure` or edit /home/ada/.config/zsh/.p10k.zsh.
|
||||||
|
[[ ! -f /home/ada/.config/zsh/.p10k.zsh ]] || source /home/ada/.config/zsh/.p10k.zsh
|
||||||
|
|
||||||
|
. "$HOME/.local/share/../bin/env"
|
||||||
@@ -0,0 +1,177 @@
|
|||||||
|
# ════════════════════════════════════════════════════════════
|
||||||
|
# Aliases
|
||||||
|
# ════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
# ═══ Навигация ═════════════════════════════════════════════
|
||||||
|
alias ..='cd ..'
|
||||||
|
alias ...='cd ../..'
|
||||||
|
alias ....='cd ../../..'
|
||||||
|
alias .....='cd ../../../..'
|
||||||
|
|
||||||
|
# Быстрый переход в часто используемые директории
|
||||||
|
alias dl='cd ~/Downloads'
|
||||||
|
alias dt='cd ~/Desktop'
|
||||||
|
alias doc='cd ~/Documents'
|
||||||
|
alias dev='cd ~/dev'
|
||||||
|
|
||||||
|
# zoxide - умная навигация (если установлен)
|
||||||
|
if command -v zoxide &>/dev/null; then
|
||||||
|
alias cd='z' # заменить cd на z
|
||||||
|
alias cdi='zi' # интерактивный выбор через fzf
|
||||||
|
alias cdq='zoxide query'
|
||||||
|
alias cdr='zoxide remove'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ═══ Списки файлов ═════════════════════════════════════════
|
||||||
|
# Использовать eza если доступен, иначе ls с цветами
|
||||||
|
if command -v eza &>/dev/null; then
|
||||||
|
alias ls='eza --icons --group-directories-first'
|
||||||
|
alias ll='eza -l --icons --group-directories-first --git'
|
||||||
|
alias la='eza -la --icons --group-directories-first --git'
|
||||||
|
alias lt='eza --tree --level=2 --icons'
|
||||||
|
alias l='eza -lah --icons --group-directories-first --git'
|
||||||
|
else
|
||||||
|
alias ls='ls --color=auto --group-directories-first'
|
||||||
|
alias ll='ls -lh --color=auto --group-directories-first'
|
||||||
|
alias la='ls -lAh --color=auto --group-directories-first'
|
||||||
|
alias l='ls -lah --color=auto --group-directories-first'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ═══ Безопасность ══════════════════════════════════════════
|
||||||
|
alias rm='rm -i'
|
||||||
|
alias cp='cp -i'
|
||||||
|
alias mv='mv -i'
|
||||||
|
|
||||||
|
# ═══ Системные команды ═════════════════════════════════════
|
||||||
|
alias grep='grep --color=auto'
|
||||||
|
alias fgrep='fgrep --color=auto'
|
||||||
|
alias egrep='egrep --color=auto'
|
||||||
|
|
||||||
|
alias df='df -h'
|
||||||
|
alias du='du -h'
|
||||||
|
alias free='free -h'
|
||||||
|
|
||||||
|
# Быстрый доступ к редактору
|
||||||
|
alias v='${EDITOR}'
|
||||||
|
alias vim='nvim'
|
||||||
|
alias vi='nvim'
|
||||||
|
|
||||||
|
# ═══ Сеть ══════════════════════════════════════════════════
|
||||||
|
alias ping='ping -c 5'
|
||||||
|
alias ports='netstat -tulanp'
|
||||||
|
# myip определена как функция в functions.zsh (более полная версия)
|
||||||
|
alias localip="ip -4 addr show | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | grep -v 127.0.0.1"
|
||||||
|
|
||||||
|
# Proxy
|
||||||
|
alias proxy-on='export http_proxy="http://127.0.0.1:8118" https_proxy="http://127.0.0.1:8118" HTTP_PROXY="http://127.0.0.1:8118" HTTPS_PROXY="http://127.0.0.1:8118" && echo "Proxy enabled"'
|
||||||
|
alias proxy-off='unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY && echo "Proxy disabled"'
|
||||||
|
alias proxy-status='env | grep -i proxy'
|
||||||
|
|
||||||
|
|
||||||
|
# ═══ Git ═══════════════════════════════════════════════════
|
||||||
|
alias g='git'
|
||||||
|
alias gs='git status'
|
||||||
|
alias gst='git --no-pager status' # без пейджера
|
||||||
|
alias ga='git add'
|
||||||
|
alias gaa='git add .'
|
||||||
|
alias gc='git commit'
|
||||||
|
alias gcm='git commit -m'
|
||||||
|
alias gp='git push'
|
||||||
|
alias gpl='git pull'
|
||||||
|
alias gd='git diff'
|
||||||
|
alias gco='git checkout'
|
||||||
|
alias gb='git branch'
|
||||||
|
alias gl='git log --oneline --graph --decorate'
|
||||||
|
alias glog='git log --oneline --graph --decorate --all'
|
||||||
|
|
||||||
|
# ═══ Docker ════════════════════════════════════════════════
|
||||||
|
if command -v docker &>/dev/null; then
|
||||||
|
alias d='docker'
|
||||||
|
alias dc='docker-compose'
|
||||||
|
alias dps='docker ps'
|
||||||
|
alias dpsa='docker ps -a'
|
||||||
|
alias di='docker images'
|
||||||
|
alias dex='docker exec -it'
|
||||||
|
alias dlog='docker logs -f'
|
||||||
|
alias dstop='docker stop $(docker ps -aq)'
|
||||||
|
alias drm='docker rm $(docker ps -aq)'
|
||||||
|
alias drmi='docker rmi $(docker images -q)'
|
||||||
|
alias dclean='docker system prune -af --volumes'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ═══ Kubectl ═══════════════════════════════════════════════
|
||||||
|
if command -v kubectl &>/dev/null; then
|
||||||
|
alias k='kubectl'
|
||||||
|
alias kgp='kubectl get pods'
|
||||||
|
alias kgs='kubectl get services'
|
||||||
|
alias kgd='kubectl get deployments'
|
||||||
|
alias kdp='kubectl describe pod'
|
||||||
|
alias kds='kubectl describe service'
|
||||||
|
alias kdd='kubectl describe deployment'
|
||||||
|
alias kl='kubectl logs -f'
|
||||||
|
alias kex='kubectl exec -it'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ═══ Ruby (rbenv) ══════════════════════════════════════════
|
||||||
|
if command -v rbenv &>/dev/null; then
|
||||||
|
alias rb='ruby'
|
||||||
|
alias be='bundle exec'
|
||||||
|
alias bi='bundle install'
|
||||||
|
alias bu='bundle update'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ═══ Python ════════════════════════════════════════════════
|
||||||
|
alias py='python3'
|
||||||
|
alias pip='pip3'
|
||||||
|
alias venv='python3 -m venv'
|
||||||
|
alias activate='source venv/bin/activate'
|
||||||
|
|
||||||
|
# ═══ Node.js ═══════════════════════════════════════════════
|
||||||
|
alias ni='npm install'
|
||||||
|
alias nid='npm install --save-dev'
|
||||||
|
|
||||||
|
alias nig='npm install -g'
|
||||||
|
alias nr='npm run'
|
||||||
|
alias ns='npm start'
|
||||||
|
alias nt='npm test'
|
||||||
|
|
||||||
|
# ═══ Утилиты ═══════════════════════════════════════════════
|
||||||
|
alias zshrc='${EDITOR} ~/.config/zsh/.zshrc'
|
||||||
|
alias reload='source ~/.config/zsh/.zshrc'
|
||||||
|
alias path='echo $PATH | tr ":" "\n"'
|
||||||
|
alias h='history'
|
||||||
|
alias c='clear'
|
||||||
|
alias x='exit'
|
||||||
|
alias rsend='sudo rsync -avhP --stats'
|
||||||
|
alias wakemac='ssh vps "wakeonlan -i 192.168.1.255 FC:34:97:E1:08:E9"'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Быстрое обновление системы (для разных дистрибутивов)
|
||||||
|
if command -v apt &>/dev/null; then
|
||||||
|
alias update='sudo apt update && sudo apt upgrade -y'
|
||||||
|
elif command -v pacman &>/dev/null; then
|
||||||
|
alias update='sudo pacman -Syu'
|
||||||
|
elif command -v dnf &>/dev/null; then
|
||||||
|
alias update='sudo dnf upgrade -y'
|
||||||
|
elif command -v zypper &>/dev/null; then
|
||||||
|
alias update='sudo zypper refresh && sudo zypper update -y'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Универсальная установка пакетов (для разных дистрибутивов)
|
||||||
|
if command -v apt &>/dev/null; then
|
||||||
|
alias install='sudo apt install -y'
|
||||||
|
elif command -v pacman &>/dev/null; then
|
||||||
|
alias install='sudo pacman -S --noconfirm'
|
||||||
|
elif command -v dnf &>/dev/null; then
|
||||||
|
alias install='sudo dnf install -y'
|
||||||
|
elif command -v zypper &>/dev/null; then
|
||||||
|
alias install='sudo zypper install -y'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ═══ Прочее ════════════════════════════════════════════════
|
||||||
|
# weather определена как функция в functions.zsh (более полная версия)
|
||||||
|
alias cheat='curl cheat.sh'
|
||||||
|
alias timer='echo "Timer started. Stop with Ctrl-D." && date && time cat && date'
|
||||||
|
alias lidon='sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target'
|
||||||
|
alias lidoff='sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target'
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
# ════════════════════════════════════════════════════════════
|
||||||
|
# Completion Settings
|
||||||
|
# ════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
# ═══ Инициализация ═════════════════════════════════════════
|
||||||
|
autoload -Uz compinit
|
||||||
|
|
||||||
|
# Проверять новые автодополнения раз в день
|
||||||
|
if [[ -n ${ZDOTDIR}/.zcompdump(#qN.mh+24) ]]; then
|
||||||
|
compinit
|
||||||
|
touch ${ZDOTDIR}/.zcompdump
|
||||||
|
else
|
||||||
|
compinit -C
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ═══ Кэш дополнений ════════════════════════════════════════
|
||||||
|
zstyle ':completion:*' use-cache on
|
||||||
|
zstyle ':completion:*' cache-path "${XDG_CACHE_HOME}/zsh/zcompcache"
|
||||||
|
|
||||||
|
# Создать директорию для кэша если не существует
|
||||||
|
[[ ! -d "${XDG_CACHE_HOME}/zsh" ]] && mkdir -p "${XDG_CACHE_HOME}/zsh"
|
||||||
|
|
||||||
|
# ═══ Меню выбора ═══════════════════════════════════════════
|
||||||
|
zstyle ':completion:*' menu select
|
||||||
|
zstyle ':completion:*' group-name ''
|
||||||
|
zstyle ':completion:*' verbose yes
|
||||||
|
|
||||||
|
# ═══ Форматирование ════════════════════════════════════════
|
||||||
|
zstyle ':completion:*:descriptions' format '%F{blue}-- %d --%f'
|
||||||
|
zstyle ':completion:*:messages' format '%F{purple}-- %d --%f'
|
||||||
|
zstyle ':completion:*:warnings' format '%F{red}-- no matches found --%f'
|
||||||
|
zstyle ':completion:*:corrections' format '%F{yellow}-- %d (errors: %e) --%f'
|
||||||
|
|
||||||
|
# ═══ Сопоставление ═════════════════════════════════════════
|
||||||
|
zstyle ':completion:*' matcher-list \
|
||||||
|
'm:{a-zA-Z}={A-Za-z}' \
|
||||||
|
'r:|[._-]=* r:|=*' \
|
||||||
|
'l:|=* r:|=*'
|
||||||
|
|
||||||
|
# ═══ Цвета ═════════════════════════════════════════════════
|
||||||
|
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
|
||||||
|
zstyle ':completion:*' list-colors ''
|
||||||
|
|
||||||
|
# ═══ Процессы ══════════════════════════════════════════════
|
||||||
|
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;34=0=01'
|
||||||
|
zstyle ':completion:*:*:*:*:processes' command "ps -u $USER -o pid,user,comm -w -w"
|
||||||
|
|
||||||
|
# Не предлагать уже использованные опции
|
||||||
|
zstyle ':completion:*:*:kill:*' ignore-line yes
|
||||||
|
|
||||||
|
# ═══ Команды ═══════════════════════════════════════════════
|
||||||
|
# Игнорировать внутренние функции (начинающиеся с _)
|
||||||
|
zstyle ':completion:*:functions' ignored-patterns '_*'
|
||||||
|
|
||||||
|
# ═══ Директории ════════════════════════════════════════════
|
||||||
|
zstyle ':completion:*' special-dirs true
|
||||||
|
zstyle ':completion:*' list-dirs-first true
|
||||||
|
|
||||||
|
# Игнорировать родительскую директорию
|
||||||
|
zstyle ':completion:*:cd:*' ignore-parents parent pwd
|
||||||
|
|
||||||
|
# ═══ Хосты ═════════════════════════════════════════════════
|
||||||
|
zstyle ':completion:*:ssh:*' hosts off
|
||||||
|
zstyle ':completion:*:scp:*' hosts off
|
||||||
|
|
||||||
|
# Читать хосты из ~/.ssh/config
|
||||||
|
if [[ -f ~/.ssh/config ]]; then
|
||||||
|
h=()
|
||||||
|
if [[ -r ~/.ssh/config ]]; then
|
||||||
|
h=(${${${(@M)${(f)"$(cat ~/.ssh/config)"}:#Host *}#Host }:#*[*?]*})
|
||||||
|
fi
|
||||||
|
zstyle ':completion:*:ssh:*' hosts $h
|
||||||
|
zstyle ':completion:*:scp:*' hosts $h
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ═══ Man страницы ══════════════════════════════════════════
|
||||||
|
zstyle ':completion:*:manuals' separate-sections true
|
||||||
|
zstyle ':completion:*:manuals.(^1*)' insert-sections true
|
||||||
|
|
||||||
|
# ═══ Автодополнение для sudo ═══════════════════════════════
|
||||||
|
zstyle ':completion:*:sudo:*' command-path \
|
||||||
|
/usr/local/sbin \
|
||||||
|
/usr/local/bin \
|
||||||
|
/usr/sbin \
|
||||||
|
/usr/bin \
|
||||||
|
/sbin \
|
||||||
|
/bin
|
||||||
|
|
||||||
|
# ═══ Массивы ═══════════════════════════════════════════════
|
||||||
|
zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters
|
||||||
|
|
||||||
|
# ═══ Расширения ════════════════════════════════════════════
|
||||||
|
zstyle ':completion:*' squeeze-slashes true
|
||||||
|
zstyle ':completion:*' expand yes
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
# ════════════════════════════════════════════════════════════
|
||||||
|
# Environment Variables
|
||||||
|
# ════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
# ═══ Основные пути ═════════════════════════════════════════
|
||||||
|
export EDITOR="${EDITOR:-nano}"
|
||||||
|
export VISUAL="${VISUAL:-code --wait}"
|
||||||
|
export PAGER="less"
|
||||||
|
|
||||||
|
# ═══ XDG Base Directories ══════════════════════════════════
|
||||||
|
export XDG_CONFIG_HOME="${HOME}/.config"
|
||||||
|
export XDG_DATA_HOME="${HOME}/.local/share"
|
||||||
|
export XDG_CACHE_HOME="${HOME}/.cache"
|
||||||
|
export XDG_STATE_HOME="${HOME}/.local/state"
|
||||||
|
export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/ssh-agent.socket"
|
||||||
|
|
||||||
|
# ═══ История команд ════════════════════════════════════════
|
||||||
|
export HISTFILE="${XDG_STATE_HOME}/zsh/history"
|
||||||
|
export HISTSIZE=50000
|
||||||
|
export SAVEHIST=50000
|
||||||
|
|
||||||
|
# Создать директорию для истории если не существует
|
||||||
|
[[ ! -d "$(dirname $HISTFILE)" ]] && mkdir -p "$(dirname $HISTFILE)"
|
||||||
|
|
||||||
|
# Добавить Zed в PATH
|
||||||
|
export PATH="${HOME}/.local/bin/zed:${PATH}"
|
||||||
|
export PATH="${HOME}/.config/Code/User/globalStorage/ms-vscode-remote.remote-containers/cli-bin:${PATH}"
|
||||||
|
|
||||||
|
# ═══ Less ══════════════════════════════════════════════════
|
||||||
|
export LESS='-R -M -i -j10'
|
||||||
|
export LESSHISTFILE="${XDG_CACHE_HOME}/less/history"
|
||||||
|
|
||||||
|
# ═══ Ruby (rbenv) ══════════════════════════════════════════
|
||||||
|
if [[ -d "${HOME}/.rbenv" ]]; then
|
||||||
|
export PATH="${HOME}/.rbenv/bin:${PATH}"
|
||||||
|
command -v rbenv &>/dev/null && eval "$(rbenv init - zsh)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ═══ asdf ══ ═════════════════════════════════════════════
|
||||||
|
if [[ -f "$HOME/.asdf/asdf.sh" ]]; then
|
||||||
|
. "$HOME/.asdf/asdf.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ═══ Node.js ═══════════════════════════════════════════════
|
||||||
|
# Если используете nvm
|
||||||
|
export NVM_DIR="${XDG_CONFIG_HOME}/nvm"
|
||||||
|
[[ -s "$NVM_DIR/nvm.sh" ]] && source "$NVM_DIR/nvm.sh" --no-use # Ленивая загрузка
|
||||||
|
|
||||||
|
# ═══ Python ════════════════════════════════════════════════
|
||||||
|
# Отключить создание .pyc файлов
|
||||||
|
export PYTHONDONTWRITEBYTECODE=1
|
||||||
|
# export PYENV_ROOT="$HOME/.pyenv"
|
||||||
|
# export PATH="$PYENV_ROOT/bin:$PATH"
|
||||||
|
|
||||||
|
# ═══ Go ════════════════════════════════════════════════════
|
||||||
|
export GOPATH="${HOME}/go"
|
||||||
|
export PATH="${GOPATH}/bin:${PATH}"
|
||||||
|
|
||||||
|
# ═══ Rust ══════════════════════════════════════════════════
|
||||||
|
export CARGO_HOME="${HOME}/.cargo"
|
||||||
|
export PATH="${CARGO_HOME}/bin:${PATH}"
|
||||||
|
|
||||||
|
# ═══ Локальные бинарники ═══════════════════════════════════
|
||||||
|
export PATH="${HOME}/.local/bin:${PATH}"
|
||||||
|
|
||||||
|
# ═══ Цвета ═════════════════════════════════════════════════
|
||||||
|
export CLICOLOR=1
|
||||||
|
export LS_COLORS='di=34:ln=35:so=32:pi=33:ex=31:bd=34;46:cd=34;43:su=30;41:sg=30;46:tw=30;42:ow=30;43'
|
||||||
|
|
||||||
|
# ═══ FZF ═══════════════════════════════════════════════════
|
||||||
|
export FZF_DEFAULT_OPTS="
|
||||||
|
--height 40%
|
||||||
|
--layout=reverse
|
||||||
|
--border
|
||||||
|
--inline-info
|
||||||
|
--color=bg+:#313244,bg:#1e1e2e,spinner:#f5e0dc,hl:#f38ba8
|
||||||
|
--color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc
|
||||||
|
--color=marker:#f5e0dc,fg+:#cdd6f4,prompt:#cba6f7,hl+:#f38ba8
|
||||||
|
"
|
||||||
|
|
||||||
|
# Использовать fd вместо find если доступен
|
||||||
|
if command -v fd &>/dev/null; then
|
||||||
|
export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git'
|
||||||
|
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if command -v zoxide &>/dev/null; then
|
||||||
|
eval "$(zoxide init zsh)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if command -v direnv >/dev/null 2>&1; then
|
||||||
|
eval "$(direnv hook zsh)"
|
||||||
|
fi
|
||||||
@@ -0,0 +1,266 @@
|
|||||||
|
# ════════════════════════════════════════════════════════════
|
||||||
|
# Custom Functions
|
||||||
|
# ════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
# ═══ Навигация ═════════════════════════════════════════════
|
||||||
|
|
||||||
|
# mkcd - создать директорию и перейти в неё
|
||||||
|
mkcd() {
|
||||||
|
mkdir -p "$1" && cd "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# up - подняться на N уровней вверх
|
||||||
|
up() {
|
||||||
|
local d=""
|
||||||
|
local limit="${1:-1}"
|
||||||
|
for ((i=1; i<=limit; i++)); do
|
||||||
|
d="../$d"
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ -z "$d" ]]; then
|
||||||
|
d=..
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd "$d" || return
|
||||||
|
}
|
||||||
|
|
||||||
|
# ═══ Поиск ═════════════════════════════════════════════════
|
||||||
|
|
||||||
|
# ff - быстрый поиск файлов
|
||||||
|
ff() {
|
||||||
|
if command -v fd &>/dev/null; then
|
||||||
|
fd "$@"
|
||||||
|
else
|
||||||
|
find . -iname "*$1*"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# fh - поиск в истории команд с fzf
|
||||||
|
fh() {
|
||||||
|
if command -v fzf &>/dev/null; then
|
||||||
|
print -z $(history -n 1 | fzf --tac --no-sort)
|
||||||
|
else
|
||||||
|
history | grep "$1"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# ═══ Файлы и директории ════════════════════════════════════
|
||||||
|
|
||||||
|
# extract - универсальная распаковка (если плагин не загружен)
|
||||||
|
if ! command -v extract &>/dev/null; then
|
||||||
|
extract() {
|
||||||
|
if [[ -f $1 ]]; then
|
||||||
|
case $1 in
|
||||||
|
*.tar.bz2) tar xjf "$1" ;;
|
||||||
|
*.tar.gz) tar xzf "$1" ;;
|
||||||
|
*.tar.xz) tar xJf "$1" ;;
|
||||||
|
*.bz2) bunzip2 "$1" ;;
|
||||||
|
*.rar) unrar x "$1" ;;
|
||||||
|
*.gz) gunzip "$1" ;;
|
||||||
|
*.tar) tar xf "$1" ;;
|
||||||
|
*.tbz2) tar xjf "$1" ;;
|
||||||
|
*.tgz) tar xzf "$1" ;;
|
||||||
|
*.zip) unzip "$1" ;;
|
||||||
|
*.Z) uncompress "$1" ;;
|
||||||
|
*.7z) 7z x "$1" ;;
|
||||||
|
*) echo "'$1' cannot be extracted via extract()" ;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
echo "'$1' is not a valid file"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# backup - создать резервную копию файла
|
||||||
|
backup() {
|
||||||
|
if [[ -f $1 ]]; then
|
||||||
|
cp "$1"{,.backup-$(date +%Y%m%d-%H%M%S)}
|
||||||
|
echo "Backup created: $1.backup-$(date +%Y%m%d-%H%M%S)"
|
||||||
|
else
|
||||||
|
echo "File not found: $1"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# ═══ Размер файлов ═════════════════════════════════════════
|
||||||
|
|
||||||
|
# dirsize - показать размер директории
|
||||||
|
dirsize() {
|
||||||
|
du -sh "${1:-.}" 2>/dev/null || echo "Directory not found"
|
||||||
|
}
|
||||||
|
|
||||||
|
# largest - показать N самых больших файлов в директории
|
||||||
|
largest() {
|
||||||
|
local num=${1:-10}
|
||||||
|
du -ah "${2:-.}" | sort -rh | head -n "$num"
|
||||||
|
}
|
||||||
|
|
||||||
|
# ═══ Процессы ══════════════════════════════════════════════
|
||||||
|
|
||||||
|
# psgrep - поиск процессов
|
||||||
|
psgrep() {
|
||||||
|
ps aux | grep -v grep | grep -i -e VSZ -e "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# kill процесс по имени
|
||||||
|
killp() {
|
||||||
|
local pid
|
||||||
|
pid=$(ps aux | grep -v grep | grep "$1" | awk '{print $2}')
|
||||||
|
if [[ -n $pid ]]; then
|
||||||
|
echo "Killing process: $1 (PID: $pid)"
|
||||||
|
kill -9 "$pid"
|
||||||
|
else
|
||||||
|
echo "Process not found: $1"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# ═══ Сеть ══════════════════════════════════════════════════
|
||||||
|
|
||||||
|
# myip - показать все IP адреса
|
||||||
|
myip() {
|
||||||
|
echo "External IP: $(curl -s ifconfig.me)"
|
||||||
|
echo "Local IPs:"
|
||||||
|
ip -4 addr show | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | grep -v 127.0.0.1
|
||||||
|
}
|
||||||
|
|
||||||
|
# ports - показать открытые порты
|
||||||
|
openports() {
|
||||||
|
sudo netstat -tulanp | grep LISTEN
|
||||||
|
}
|
||||||
|
|
||||||
|
# ═══ Git ═══════════════════════════════════════════════════
|
||||||
|
|
||||||
|
# gitignore - скачать .gitignore для языка
|
||||||
|
gitignore() {
|
||||||
|
if [[ -z $1 ]]; then
|
||||||
|
echo "Usage: gitignore <language>"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
curl -sL "https://www.toptal.com/developers/gitignore/api/$1" -o .gitignore
|
||||||
|
echo ".gitignore created for: $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# gclone - клонировать репозиторий и перейти в него
|
||||||
|
gclone() {
|
||||||
|
if [[ -z $1 ]]; then
|
||||||
|
echo "Usage: gclone <repository>"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local repo_name=$(basename "$1" .git)
|
||||||
|
git clone "$1" && cd "$repo_name" || return
|
||||||
|
}
|
||||||
|
|
||||||
|
# ═══ Разработка ════════════════════════════════════════════
|
||||||
|
|
||||||
|
# serve - быстрый HTTP сервер
|
||||||
|
serve() {
|
||||||
|
local port="${1:-8000}"
|
||||||
|
if command -v python3 &>/dev/null; then
|
||||||
|
echo "Starting server on http://localhost:$port"
|
||||||
|
python3 -m http.server "$port"
|
||||||
|
else
|
||||||
|
echo "Python3 not found"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# json - форматировать JSON
|
||||||
|
json() {
|
||||||
|
if [[ -f $1 ]]; then
|
||||||
|
python3 -m json.tool "$1"
|
||||||
|
else
|
||||||
|
echo "$1" | python3 -m json.tool
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# ═══ Утилиты ═══════════════════════════════════════════════
|
||||||
|
|
||||||
|
# weather - погода для города
|
||||||
|
weather() {
|
||||||
|
local city="${1:-Moscow}"
|
||||||
|
curl -s "wttr.in/$city?format=3"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Функция для монтирования облаков
|
||||||
|
mount-clouds() {
|
||||||
|
mkdir -p ~/YaDisk ~/GDrive
|
||||||
|
echo "Монтирую диски..."
|
||||||
|
|
||||||
|
# Яндекс.Диск
|
||||||
|
rclone mount yadisk: ~/YaDisk \
|
||||||
|
--vfs-cache-mode writes \
|
||||||
|
--vfs-cache-max-size 10G \
|
||||||
|
--vfs-cache-max-age 2h \
|
||||||
|
--allow-non-empty \
|
||||||
|
--daemon
|
||||||
|
|
||||||
|
# Google Drive
|
||||||
|
rclone mount gdrive: ~/GDrive \
|
||||||
|
--vfs-cache-mode writes \
|
||||||
|
--vfs-cache-max-size 10G \
|
||||||
|
--vfs-cache-max-age 2h \
|
||||||
|
--allow-non-empty \
|
||||||
|
--daemon
|
||||||
|
|
||||||
|
echo "Готово! Проверяю монтирование:"
|
||||||
|
ls ~/YaDisk >/dev/null 2>&1 && echo "✅ YaDisk смонтирован" || echo "⚠️ Ошибка монтирования YaDisk"
|
||||||
|
ls ~/GDrive >/dev/null 2>&1 && echo "✅ GDrive смонтирован" || echo "⚠️ Ошибка монтирования GDrive"
|
||||||
|
}
|
||||||
|
# Функция для размонтирования
|
||||||
|
unmount-clouds() {
|
||||||
|
echo "Отключаю диски..."
|
||||||
|
|
||||||
|
fusermount -uz ~/YaDisk 2>/dev/null && echo "✅ YaDisk отключен" || echo "⚠️ YaDisk не был примонтирован"
|
||||||
|
fusermount -uz ~/GDrive 2>/dev/null && echo "✅ GDrive отключен" || echo "⚠️ GDrive не был примонтирован"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SSH_PROXY_PID_FILE="/tmp/ssh_proxy.pid"
|
||||||
|
# Адрес Privoxy, который слушает HTTP и перенаправляет в SOCKS5
|
||||||
|
# 1. Запуск
|
||||||
|
sshp-start() {
|
||||||
|
if [ -f "$SSH_PROXY_PID_FILE" ] && kill -0 $(cat "$SSH_PROXY_PID_FILE") 2>/dev/null; then
|
||||||
|
echo "Ошибка: Прокси уже запущен (PID: $(cat $SSH_PROXY_PID_FILE))"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Запуск SSH в фоновом режиме
|
||||||
|
ssh -fN -D 127.0.0.1:1080 fl-vps
|
||||||
|
|
||||||
|
# Сохранение PID последнего запущенного процесса
|
||||||
|
pgrep -f "ssh -fN -D 127.0.0.1:1080 fl-vps" > "$SSH_PROXY_PID_FILE"
|
||||||
|
echo "SSH прокси (SOCKS5) запущен на 127.0.0.1:1080."
|
||||||
|
}
|
||||||
|
|
||||||
|
# 2. Остановка
|
||||||
|
sshp-stop() {
|
||||||
|
if [ -f "$SSH_PROXY_PID_FILE" ]; then
|
||||||
|
PID=$(cat "$SSH_PROXY_PID_FILE")
|
||||||
|
if kill "$PID" 2>/dev/null; then
|
||||||
|
rm -f "$SSH_PROXY_PID_FILE"
|
||||||
|
echo "SSH прокси (PID $PID) остановлен."
|
||||||
|
else
|
||||||
|
echo "Процесс $PID не найден. Очистка PID-файла..."
|
||||||
|
rm -f "$SSH_PROXY_PID_FILE"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Ошибка: Прокси не запущен."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 3. Статус
|
||||||
|
sshp-status() {
|
||||||
|
if [ -f "$SSH_PROXY_PID_FILE" ] && kill -0 $(cat "$SSH_PROXY_PID_FILE") 2>/dev/null; then
|
||||||
|
PID=$(cat "$SSH_PROXY_PID_FILE")
|
||||||
|
echo "Статус: РАБОТАЕТ (PID: $PID)"
|
||||||
|
# Проверка прослушивания порта
|
||||||
|
lsof -i -nP | grep "$PID" | grep LISTEN
|
||||||
|
else
|
||||||
|
echo "Статус: ОСТАНОВЛЕН"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
sshp-restart() {
|
||||||
|
sshp-stop
|
||||||
|
sleep 1
|
||||||
|
sshp-start
|
||||||
|
}
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
# ════════════════════════════════════════════════════════════
|
||||||
|
# Keybindings
|
||||||
|
# ════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
# ═══ Режим редактирования ══════════════════════════════════
|
||||||
|
# Использовать emacs режим (можно переключить на vi)
|
||||||
|
bindkey -e
|
||||||
|
|
||||||
|
# Для vi режима раскомментируйте:
|
||||||
|
# bindkey -v
|
||||||
|
|
||||||
|
# ═══ Навигация по строке ═══════════════════════════════════
|
||||||
|
bindkey '^A' beginning-of-line # Ctrl+A - начало строки
|
||||||
|
bindkey '^E' end-of-line # Ctrl+E - конец строки
|
||||||
|
bindkey '^[[H' beginning-of-line # Home - начало строки
|
||||||
|
bindkey '^[[F' end-of-line # End - конец строки
|
||||||
|
|
||||||
|
# ═══ Редактирование ════════════════════════════════════════
|
||||||
|
bindkey '^K' kill-line # Ctrl+K - удалить до конца
|
||||||
|
bindkey '^U' backward-kill-line # Ctrl+U - удалить до начала
|
||||||
|
bindkey '^W' backward-kill-word # Ctrl+W - удалить слово назад
|
||||||
|
bindkey '^Y' yank # Ctrl+Y - вставить
|
||||||
|
|
||||||
|
# ═══ Навигация по словам ═══════════════════════════════════
|
||||||
|
bindkey '^[[1;5C' forward-word # Ctrl+Right - вперёд на слово
|
||||||
|
bindkey '^[[1;5D' backward-word # Ctrl+Left - назад на слово
|
||||||
|
bindkey '^[^[[C' forward-word # Alt+Right - вперёд на слово
|
||||||
|
bindkey '^[^[[D' backward-word # Alt+Left - назад на слово
|
||||||
|
|
||||||
|
# ═══ История команд ════════════════════════════════════════
|
||||||
|
|
||||||
|
bindkey '^P' up-history # Ctrl+P - просто вверх
|
||||||
|
bindkey '^N' down-history # Ctrl+N - просто вниз
|
||||||
|
|
||||||
|
# Оставляем Alt+Стрелки для чего-то другого или удаляем,
|
||||||
|
# если они дублируют функционал.
|
||||||
|
|
||||||
|
# ═══ Автодополнение ════════════════════════════════════════
|
||||||
|
bindkey '^I' complete-word # Tab - автодополнение
|
||||||
|
bindkey '^[[Z' reverse-menu-complete # Shift+Tab - назад по меню
|
||||||
|
|
||||||
|
# Принять автопредложение (если загружен autosuggestions)
|
||||||
|
if (( $+widgets[autosuggest-accept] )); then
|
||||||
|
bindkey '^F' autosuggest-accept # Ctrl+F - принять предложение
|
||||||
|
bindkey '^[[C' forward-char # Right - вперёд на символ (не принимая)
|
||||||
|
bindkey '^ ' autosuggest-accept # Ctrl+Space - принять предложение
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ═══ FZF ═══════════════════════════════════════════════════
|
||||||
|
# FZF key-bindings загружаются в plugins.zsh
|
||||||
|
# Здесь можно переопределить привязки если нужно
|
||||||
|
if command -v fzf &>/dev/null; then
|
||||||
|
# Привязки уже установлены в plugins.zsh через key-bindings.zsh
|
||||||
|
# Можно добавить дополнительные кастомные привязки здесь
|
||||||
|
:
|
||||||
|
fi
|
||||||
|
# ═══ Полезные команды ══════════════════════════════════════
|
||||||
|
bindkey '^L' clear-screen # Ctrl+L - очистить экран
|
||||||
|
bindkey '^X^E' edit-command-line # Ctrl+X Ctrl+E - редактировать в $EDITOR
|
||||||
|
|
||||||
|
# Загрузить edit-command-line если нужно
|
||||||
|
autoload -Uz edit-command-line
|
||||||
|
zle -N edit-command-line
|
||||||
|
|
||||||
|
# ═══ Дополнительные привязки ═══════════════════════════════
|
||||||
|
bindkey '^D' delete-char-or-list # Ctrl+D - удалить символ или показать список
|
||||||
|
bindkey '^H' backward-delete-char # Ctrl+H - удалить символ назад
|
||||||
|
bindkey '^?' backward-delete-char # Backspace - удалить символ назад
|
||||||
|
|
||||||
|
# ═══ Копирование/вставка (xclip) ══════════════════════════
|
||||||
|
if command -v xclip &>/dev/null; then
|
||||||
|
# Скопировать текущую команду в буфер обмена
|
||||||
|
function _copy_command_to_clipboard() {
|
||||||
|
echo -n "$BUFFER" | xclip -selection clipboard
|
||||||
|
zle -M "Copied to clipboard"
|
||||||
|
}
|
||||||
|
zle -N _copy_command_to_clipboard
|
||||||
|
bindkey '^X^C' _copy_command_to_clipboard # Ctrl+X Ctrl+C
|
||||||
|
fi
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
# ════════════════════════════════════════════════════════════
|
||||||
|
# Shell Options
|
||||||
|
# ════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
# ═══ История ═══════════════════════════════════════════════
|
||||||
|
setopt EXTENDED_HISTORY # Записывать timestamp в историю
|
||||||
|
setopt HIST_EXPIRE_DUPS_FIRST # Удалять дубликаты в первую очередь
|
||||||
|
setopt HIST_IGNORE_DUPS # Не записывать дубликаты подряд
|
||||||
|
setopt HIST_IGNORE_ALL_DUPS # Удалить старую запись если новая - дубликат
|
||||||
|
setopt HIST_FIND_NO_DUPS # Не показывать дубликаты при поиске
|
||||||
|
setopt HIST_IGNORE_SPACE # Не записывать команды начинающиеся с пробела
|
||||||
|
setopt HIST_SAVE_NO_DUPS # Не сохранять дубликаты
|
||||||
|
setopt HIST_REDUCE_BLANKS # Убирать лишние пробелы
|
||||||
|
setopt HIST_VERIFY # Показывать команду перед выполнением из истории
|
||||||
|
setopt SHARE_HISTORY # Делиться историей между сессиями
|
||||||
|
|
||||||
|
# ═══ Навигация ═════════════════════════════════════════════
|
||||||
|
setopt AUTO_CD # cd в директорию просто набрав её имя
|
||||||
|
setopt AUTO_PUSHD # Автоматически делать pushd
|
||||||
|
setopt PUSHD_IGNORE_DUPS # Не добавлять дубликаты в стек директорий
|
||||||
|
setopt PUSHD_SILENT # Не печатать стек после pushd/popd
|
||||||
|
setopt PUSHD_TO_HOME # pushd без аргументов = pushd $HOME
|
||||||
|
|
||||||
|
# ═══ Дополнение ════════════════════════════════════════════
|
||||||
|
setopt ALWAYS_TO_END # Курсор в конец при автодополнении
|
||||||
|
setopt AUTO_MENU # Показывать меню при повторном tab
|
||||||
|
setopt AUTO_LIST # Автоматически показывать список вариантов
|
||||||
|
setopt COMPLETE_IN_WORD # Дополнять внутри слова
|
||||||
|
unsetopt MENU_COMPLETE # Не вставлять первый вариант автоматически
|
||||||
|
|
||||||
|
# ═══ Глобы и расширения ════════════════════════════════════
|
||||||
|
setopt EXTENDED_GLOB # Расширенный синтаксис глобов
|
||||||
|
setopt GLOB_DOTS # Включать скрытые файлы в глобы
|
||||||
|
setopt NOMATCH # Ошибка если паттерн не совпал
|
||||||
|
setopt NUMERIC_GLOB_SORT # Сортировать числовые имена файлов численно
|
||||||
|
|
||||||
|
# ═══ Работа с командами ════════════════════════════════════
|
||||||
|
setopt CORRECT # Исправлять опечатки в командах
|
||||||
|
setopt CORRECT_ALL # Исправлять опечатки в аргументах
|
||||||
|
setopt INTERACTIVE_COMMENTS # Разрешить комментарии в интерактивном режиме
|
||||||
|
setopt MULTIOS # Множественные перенаправления
|
||||||
|
setopt LONG_LIST_JOBS # Подробный вывод jobs
|
||||||
|
|
||||||
|
# ═══ Другое ════════════════════════════════════════════════
|
||||||
|
setopt NOTIFY # Сообщать о завершении фоновых задач немедленно
|
||||||
|
setopt NO_BEEP # Отключить звуковые сигналы
|
||||||
|
setopt NO_HUP # Не убивать фоновые задачи при выходе
|
||||||
|
setopt PROMPT_SUBST # Разрешить подстановки в промпте
|
||||||
@@ -0,0 +1,107 @@
|
|||||||
|
# ════════════════════════════════════════════════════════════
|
||||||
|
# Plugins (via Zinit)
|
||||||
|
# ════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
# ═══ Powerlevel10k Theme ═══════════════════════════════════
|
||||||
|
# Загружаем ПЕРВЫМ для instant prompt
|
||||||
|
zinit ice depth=1
|
||||||
|
zinit light romkatv/powerlevel10k
|
||||||
|
|
||||||
|
# ═══ Turbo Mode ════════════════════════════════════════════
|
||||||
|
# Плагины загружаются асинхронно для ускорения старта
|
||||||
|
|
||||||
|
# ═══ FZF key-bindings ══════════════════════════════════════
|
||||||
|
# Загружаем ПЕРВЫМ, чтобы виджеты были определены до syntax-highlighting
|
||||||
|
if command -v fzf &>/dev/null; then
|
||||||
|
# Попробовать разные пути установки fzf
|
||||||
|
if [[ -f /usr/share/fzf/key-bindings.zsh ]]; then
|
||||||
|
source /usr/share/fzf/key-bindings.zsh
|
||||||
|
elif [[ -f /usr/share/doc/fzf/examples/key-bindings.zsh ]]; then
|
||||||
|
source /usr/share/doc/fzf/examples/key-bindings.zsh
|
||||||
|
elif [[ -f ~/.fzf.zsh ]]; then
|
||||||
|
source ~/.fzf.zsh
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ═══ Автодополнение ════════════════════════════════════════
|
||||||
|
# zsh-completions - дополнительные автодополнения
|
||||||
|
zinit ice wait lucid blockf atpull'zinit creinstall -q .'
|
||||||
|
zinit light zsh-users/zsh-completions
|
||||||
|
|
||||||
|
# ═══ Автопредложения ═══════════════════════════════════════
|
||||||
|
# zsh-autosuggestions - предложения из истории
|
||||||
|
zinit ice wait lucid atload'_zsh_autosuggest_start'
|
||||||
|
zinit light zsh-users/zsh-autosuggestions
|
||||||
|
|
||||||
|
# Настройки autosuggestions
|
||||||
|
export ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=#585b70'
|
||||||
|
export ZSH_AUTOSUGGEST_STRATEGY=(history completion)
|
||||||
|
export ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=20
|
||||||
|
|
||||||
|
# ═══ История ═══════════════════════════════════════════════
|
||||||
|
zinit ice wait"0" lucid atload'
|
||||||
|
# Привязываем стрелки к плагину (теперь они не будут глючить)
|
||||||
|
bindkey "$terminfo[kcuu1]" history-substring-search-up
|
||||||
|
bindkey "$terminfo[kcud1]" history-substring-search-down
|
||||||
|
|
||||||
|
# Настройка цветов (по желанию)
|
||||||
|
HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND="fg=magenta,bold"
|
||||||
|
HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND="fg=red,bold"
|
||||||
|
'
|
||||||
|
zinit light zsh-users/zsh-history-substring-search
|
||||||
|
|
||||||
|
# ═══ FZF ═══════════════════════════════════════════════════
|
||||||
|
# fzf - интерактивный поиск
|
||||||
|
if command -v fzf &>/dev/null; then
|
||||||
|
# fzf-tab - fzf для автодополнения
|
||||||
|
zinit ice wait lucid
|
||||||
|
zinit light Aloxaf/fzf-tab
|
||||||
|
|
||||||
|
# Настройки fzf-tab
|
||||||
|
zstyle ':fzf-tab:*' fzf-command fzf
|
||||||
|
zstyle ':fzf-tab:*' fzf-pad 4
|
||||||
|
zstyle ':fzf-tab:complete:cd:*' fzf-preview 'eza -1 --color=always $realpath 2>/dev/null || ls -1 --color=always $realpath'
|
||||||
|
zstyle ':fzf-tab:complete:*:*' fzf-preview 'less ${(Q)realpath} 2>/dev/null || eza -1 --color=always ${(Q)realpath} 2>/dev/null || ls -1 --color=always ${(Q)realpath}'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ═══ Навигация ═════════════════════════════════════════════
|
||||||
|
# zoxide - умный cd с историей
|
||||||
|
if command -v zoxide &>/dev/null; then
|
||||||
|
eval "$(zoxide init zsh)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ═══ Git ═══════════════════════════════════════════════════
|
||||||
|
# Быстрые git алиасы и функции
|
||||||
|
zinit ice wait lucid
|
||||||
|
zinit snippet OMZ::plugins/git/git.plugin.zsh
|
||||||
|
|
||||||
|
# ═══ Дополнительные инструменты ════════════════════════════
|
||||||
|
# sudo - нажать ESC дважды чтобы добавить sudo
|
||||||
|
zinit ice wait lucid
|
||||||
|
zinit snippet OMZ::plugins/sudo/sudo.plugin.zsh
|
||||||
|
|
||||||
|
# extract - универсальная распаковка архивов
|
||||||
|
zinit ice wait lucid
|
||||||
|
zinit snippet OMZ::plugins/extract/extract.plugin.zsh
|
||||||
|
|
||||||
|
# colored-man-pages - цветные man страницы
|
||||||
|
zinit ice wait lucid
|
||||||
|
zinit snippet OMZ::plugins/colored-man-pages/colored-man-pages.plugin.zsh
|
||||||
|
|
||||||
|
# docker - автодополнение для docker
|
||||||
|
if command -v docker &>/dev/null; then
|
||||||
|
zinit ice wait lucid as'completion'
|
||||||
|
zinit snippet OMZP::docker
|
||||||
|
fi
|
||||||
|
|
||||||
|
# kubectl - автодополнение для kubectl
|
||||||
|
if command -v kubectl &>/dev/null; then
|
||||||
|
zinit ice wait lucid as'completion'
|
||||||
|
zinit snippet OMZ::plugins/kubectl/kubectl.plugin.zsh
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ═══ Подсветка синтаксиса (ПОСЛЕДНИЙ плагин) ═══════════════
|
||||||
|
# zsh-syntax-highlighting - ОБЯЗАТЕЛЬНО загружать последним
|
||||||
|
# Это гарантирует, что все виджеты уже определены
|
||||||
|
zinit ice wait lucid atinit'zpcompinit; zpcdreplay'
|
||||||
|
zinit light zsh-users/zsh-syntax-highlighting
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# ════════════════════════════════════════════════════════════
|
||||||
|
# Prompt Configuration (Powerlevel10k)
|
||||||
|
# ════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
# ═══ Powerlevel10k Instant Prompt ══════════════════════════
|
||||||
|
# Должен быть в самом начале ~/.zshrc для мгновенного промпта
|
||||||
|
# Перенесен сюда для модульности, но в идеале должен быть раньше
|
||||||
|
|
||||||
|
# Включить Powerlevel10k instant prompt. Должно быть близко к началу ~/.config/zsh/.zshrc.
|
||||||
|
# Инициализация кода, который может требовать ввод консоли или печать, должна идти выше этого блока.
|
||||||
|
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
|
||||||
|
|
||||||
|
# ═══ Powerlevel10k Theme ═══════════════════════════════════
|
||||||
|
# Загрузка через zinit (будет установлена автоматически)
|
||||||
|
# Примечание: этот блок должен быть в plugins.zsh, но оставлен здесь для ясности
|
||||||
|
# zinit ice depth=1
|
||||||
|
# zinit light romkatv/powerlevel10k
|
||||||
|
|
||||||
|
# ═══ P10k Configuration ════════════════════════════════════
|
||||||
|
# Загрузка конфигурации p10k
|
||||||
|
# Для настройки запустите: p10k configure
|
||||||
|
[[ -f ~/.config/zsh/.p10k.zsh ]] && source ~/.config/zsh/.p10k.zsh
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
export ZDOTDIR="${HOME}/.config/zsh"
|
||||||
Reference in New Issue
Block a user