Initial commit: bash, zsh, docker, git, subl
This commit is contained in:
16
.editorconfig
Normal file
16
.editorconfig
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
; this is pretty universal config, not only for this repo
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
charset = utf-8
|
||||||
|
end_of_line = lf
|
||||||
|
insert_final_newline = true
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 4
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
|
||||||
|
[*.md]
|
||||||
|
trim_trailing_whitespace = false
|
||||||
|
|
||||||
|
[*.{yml,yaml}]
|
||||||
|
indent_size = 2
|
||||||
24
README.md
Normal file
24
README.md
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# Axenov dotfiles
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# install stow
|
||||||
|
sudo apt install -y stow
|
||||||
|
|
||||||
|
# clone dotfiles
|
||||||
|
git clone https://git.axenov.dev/anthony/dotfiles.git ~/.dotfiles
|
||||||
|
cd ~/.dotfiles
|
||||||
|
|
||||||
|
# install git dotfiles (or any other ones) in $HOME
|
||||||
|
stow -v git
|
||||||
|
|
||||||
|
# remove them from $HOME
|
||||||
|
stow -v git -D
|
||||||
|
```
|
||||||
|
|
||||||
|
Target (`-t`) defaults to the parent of `pwd`, so if you clone this repo not in `$HOME` then you MUST explicitly provide `-t ~` or `-t $HOME` every time.
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
|
* <https://www.gnu.org/software/stow/manual/stow.html>
|
||||||
|
* <https://tamerlan.dev/how-i-manage-my-dotfiles-using-gnu-stow/>
|
||||||
|
* <https://gist.github.com/andreibosco/cb8506780d0942a712fc>
|
||||||
15
docker/etc/docker/daemon.json
Normal file
15
docker/etc/docker/daemon.json
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"registry-mirrors": [
|
||||||
|
"https://dockerhub.timeweb.cloud",
|
||||||
|
"https://dh-mirror.gitverse.ru",
|
||||||
|
"https://mirror.gcr.io",
|
||||||
|
"https://daocloud.io",
|
||||||
|
"https://c.163.com/",
|
||||||
|
"https://registry.docker-cn.com",
|
||||||
|
"https://huecker.io",
|
||||||
|
"https://public.ecr.aws",
|
||||||
|
"https://quay.io",
|
||||||
|
"https://registry.access.redhat.com",
|
||||||
|
"https://registry.redhat.io"
|
||||||
|
]
|
||||||
|
}
|
||||||
217
git/.git_aliases
Normal file
217
git/.git_aliases
Normal file
@@ -0,0 +1,217 @@
|
|||||||
|
[alias]
|
||||||
|
exec = "!exec" ; make aliases usable in aliases
|
||||||
|
;####################################################
|
||||||
|
; basic shortcuts
|
||||||
|
;####################################################
|
||||||
|
|
||||||
|
a = "add"
|
||||||
|
b = "branch"
|
||||||
|
br = "branch"
|
||||||
|
c = "commit"
|
||||||
|
cl = "clean"
|
||||||
|
co = "checkout"
|
||||||
|
cp = "cherry-pick"
|
||||||
|
d = "diff"
|
||||||
|
f = "fetch"
|
||||||
|
l = "log"
|
||||||
|
m = "merge"
|
||||||
|
p = "pull"
|
||||||
|
r = "reset"
|
||||||
|
rb = "rebase"
|
||||||
|
re = "remote"
|
||||||
|
rv = "revert"
|
||||||
|
s = "status"
|
||||||
|
st = "status"
|
||||||
|
sb = "show-branch"
|
||||||
|
sub = "submodule"
|
||||||
|
|
||||||
|
;####################################################
|
||||||
|
; config
|
||||||
|
;####################################################
|
||||||
|
|
||||||
|
aliases = "config --get-regexp '^alias.*'" ; show all aliases
|
||||||
|
whoami = "config --local --get-regexp '^user'" ; show local user settings (in current repo)
|
||||||
|
user = "config --local --get-regexp '^user'"
|
||||||
|
guser = "config --global --get-regexp '^user'" ; show global user settings
|
||||||
|
gwhoami = "guser"
|
||||||
|
|
||||||
|
;####################################################
|
||||||
|
; branching
|
||||||
|
;####################################################
|
||||||
|
|
||||||
|
bra = "branch -a"
|
||||||
|
branches = "branch -a"
|
||||||
|
bm = "branch --merged" ; branches whose tips are reachable from commit or HEAD
|
||||||
|
merged = "bm"
|
||||||
|
bnm = "branch --no-merged" ; branches whose tips are NOT reachable from commit or HEAD
|
||||||
|
brd = "branch -D" ; force delete unmerged branch
|
||||||
|
bv = "branch -v" ; show branch list with those last commits
|
||||||
|
bvv = "branch -vv" ; bv + remote branches tracked by them
|
||||||
|
|
||||||
|
cob = "checkout -b" ; create new branch with name given
|
||||||
|
|
||||||
|
ma = "merge --abort" ; abort merging
|
||||||
|
mc = "merge --continue" ; continue merging
|
||||||
|
mn = "merge --no-commit" ; merge without commit
|
||||||
|
|
||||||
|
current-branch = "branch --show-current"
|
||||||
|
default-branch = "config init.defaultBranch" ; get default branch name
|
||||||
|
upstream-branch = "!git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD)"
|
||||||
|
|
||||||
|
;####################################################
|
||||||
|
; staging
|
||||||
|
;####################################################
|
||||||
|
|
||||||
|
aa = "add --all" ; add all unstaged into index
|
||||||
|
|
||||||
|
dc = "diff --cached" ; show diff of staged files
|
||||||
|
dw = "diff --word-diff" ; show word diff in unstaged files
|
||||||
|
dwc = "diff --word-diff --cached" ; dc + dw
|
||||||
|
|
||||||
|
clf = "clean -df" ; remove new files in current and nested dirs
|
||||||
|
clff = "clean -dff" ; remove new files in current and nested dirs + repos
|
||||||
|
clx = "clean -dffx" ; remove new + ignored files in current and nested dirs + repos
|
||||||
|
cleanout = "!git clean -df && git checkout -- ."
|
||||||
|
|
||||||
|
discard = "checkout --" ; удаляет изменения в файле
|
||||||
|
unstage = "reset HEAD" ; staged file => unstaged
|
||||||
|
|
||||||
|
;####################################################
|
||||||
|
; committing
|
||||||
|
;####################################################
|
||||||
|
|
||||||
|
ca = "commit --all" ; stage all changes and make a commit (interative)
|
||||||
|
cm = "commit --message" ; make a commit with message given (non-interactive)
|
||||||
|
cam = "commit --all --message" ; ca + cm (non-interactive)
|
||||||
|
amendm = "commit --amend --all --message" ; amend + edit commit message (non-interactive)
|
||||||
|
amend = "commit --amend --all --no-edit" ; add new changes into last commit (non-interactive)
|
||||||
|
|
||||||
|
cpa = "cherry-pick --abort" ; abort cherry-picking
|
||||||
|
cpc = "cherry-pick --continue" ; continue cherry-picking
|
||||||
|
cpn = "cherry-pick --no-commit" ; cherry-pick without commit
|
||||||
|
cpnx = "cherry-pick --no-commit -x" ; cherry-pick without commit and add commit name to COMMIT_MSG
|
||||||
|
|
||||||
|
rh = "reset --hard" ; откат коммита с удалением всех изменений
|
||||||
|
rhh = "reset --hard HEAD" ; откат коммита с удалением всех изменений на последний коммит
|
||||||
|
rs = "reset --soft" ; откат коммита с сохранением всех изменений
|
||||||
|
rsh = "reset --soft HEAD" ; откат коммита с сохранением всех изменений
|
||||||
|
|
||||||
|
; make a temporary commit with current worktree state as is
|
||||||
|
wip = "!git add . && git commit --message 'WIP' --no-verify"
|
||||||
|
wipa = "!git add . && git commit --message 'WIP' --no-verify --amend"
|
||||||
|
|
||||||
|
; undo last commit preserving all changes
|
||||||
|
undo = "reset --soft HEAD~1"
|
||||||
|
uncommit = "reset --soft HEAD~1"
|
||||||
|
rvn = "revert --no-commit"
|
||||||
|
|
||||||
|
;####################################################
|
||||||
|
; rebasing
|
||||||
|
;####################################################
|
||||||
|
|
||||||
|
rba = "rebase --abort"
|
||||||
|
rbc = "rebase --continue"
|
||||||
|
rbi = "rebase --interactive"
|
||||||
|
rbs = "rebase --skip"
|
||||||
|
|
||||||
|
;####################################################
|
||||||
|
; manage remotes
|
||||||
|
;####################################################
|
||||||
|
|
||||||
|
remotes = "remote --verbose" ; show remote repos list
|
||||||
|
rev = "remote --verbose"
|
||||||
|
rea = "remote add"
|
||||||
|
rs = "remote show"
|
||||||
|
rso = "remote show origin" ; show state of local branches against origin ones
|
||||||
|
rp = "remote prune" ; remove stale local references to remote branches
|
||||||
|
rpd = "remote prune --dry-run" ; show stale local references to remote branches
|
||||||
|
rpo = "remote prune origin" ; remove stale local references to origin branches
|
||||||
|
rpo = "remote prune origin --dry-run" ; show stale local references to origin branches
|
||||||
|
|
||||||
|
;####################################################
|
||||||
|
; garbage
|
||||||
|
;####################################################
|
||||||
|
|
||||||
|
; remove unreachable objects
|
||||||
|
vacuum="!git reflog expire --expire-unreachable=now --all; git gc --prune=now"
|
||||||
|
|
||||||
|
; force remove current branch from local (brd) and remote repos
|
||||||
|
brod = "!git branch -D "$1"; git push origin :"$1";"
|
||||||
|
|
||||||
|
orphans = "fsck --full"
|
||||||
|
repacker = "repack -Adf --depth=300 --window=300 --window-memory=1g"
|
||||||
|
pruner = "!git prune --expire=now; git reflog expire --expire-unreachable=now --rewrite --all"
|
||||||
|
optimizer = "!git pruner; git repacker; git prune-packed"
|
||||||
|
; trim = "!DEFAULT=$(git default-branch); git branch --merged ${1-$DEFAULT} | grep -v " ${1-$DEFAULT}$" | xargs git branch -d; git remote prune origin;"
|
||||||
|
|
||||||
|
;####################################################
|
||||||
|
; logs
|
||||||
|
;####################################################
|
||||||
|
|
||||||
|
lo = "log --oneline"
|
||||||
|
lgda = "log --graph --decorate --all"
|
||||||
|
head = "log -1 HEAD" ; show the last commit in current branch
|
||||||
|
heads = "log --graph --decorate --simplify-by-decoration --oneline" ; show last commit of each branch as tree graph
|
||||||
|
log-small = "log --graph --decorate --all --pretty=format:'%C(bold red)%h%C(reset) %C(bold blue)%an%C(reset) %C(green)%cr%C(reset) [%aD]%d%n%B'"
|
||||||
|
log-my = "!git log --author $(git config user.email)" ; show only my own commits
|
||||||
|
; outbound = "log @{upstream}.."
|
||||||
|
inbound = "!git remote update --prune; git log ..@{upstream}"
|
||||||
|
|
||||||
|
;####################################################
|
||||||
|
; updating local repo
|
||||||
|
;####################################################
|
||||||
|
|
||||||
|
pf = "pull --force"
|
||||||
|
pullf = "pull --force"
|
||||||
|
pullt = "pull --tags"
|
||||||
|
pt = "pull --tags"
|
||||||
|
pullft = "pull --force --tags"
|
||||||
|
pft = "pull --force --tags"
|
||||||
|
prs = "pull --recurse-submodules" ; pull with submodules
|
||||||
|
|
||||||
|
fa = "fetch --all" ; fetch branches from all remotes
|
||||||
|
|
||||||
|
;####################################################
|
||||||
|
; updating remote repo
|
||||||
|
;####################################################
|
||||||
|
|
||||||
|
pushf = "push --force"
|
||||||
|
pusht = "push --tags"
|
||||||
|
pushft = "push --tags --force"
|
||||||
|
|
||||||
|
repush = "!git push origin :$1 && git push origin $1'" ; when 'push --force' is prohibited
|
||||||
|
|
||||||
|
;####################################################
|
||||||
|
; statistics
|
||||||
|
;####################################################
|
||||||
|
|
||||||
|
contributors = "shortlog --summary --numbered --no-merges" ; users participating in development
|
||||||
|
|
||||||
|
;####################################################
|
||||||
|
; complex tasks
|
||||||
|
;####################################################
|
||||||
|
|
||||||
|
archive = "!f() { top=$(rev-parse --show-toplevel); cd $top; tar cvzf $top.tar.gz $top ; }; f" ; make repo .tar.gz
|
||||||
|
gzip = "archive"
|
||||||
|
targz = "archive"
|
||||||
|
|
||||||
|
dev = "!git checkout dev && git pull" ; quick switch on 'dev' branch and update it
|
||||||
|
develop = "!git checkout develop && git pull" ; quick switch on 'develop' branch and update it
|
||||||
|
main = "!git checkout main && git pull" ; quick switch on main branch and update it
|
||||||
|
master = "!git checkout master && git pull" ; quick switch on master branch and update it
|
||||||
|
|
||||||
|
;####################################################
|
||||||
|
; other tasks
|
||||||
|
;####################################################
|
||||||
|
|
||||||
|
tags = "tag -n1 --list" ; shot tag names and commit message
|
||||||
|
stashes = "stash list" ; show stashed changes
|
||||||
|
init = "init -q" ; blm is racism, 'master' branch must be 'master' branch
|
||||||
|
start = "!git init --quiet --initial-branch maste; git commit --no-verify --allow-empty --message 'Initial commit'" ; quick start empty repo
|
||||||
|
cloner = "clone --recursive" ; clone with submodules
|
||||||
|
fuck = "!git checkout $(git config init.defaultBranch); git fetch origin --prune; git reset --hard origin/$(git config init.defaultBranch); git clean -dff"
|
||||||
|
|
||||||
|
; https://words.filippo.io/git-fixup-amending-an-older-commit/
|
||||||
|
cf = "!f() { TARGET=$(git rev-parse \"$1\"); git commit --fixup=$TARGET && GIT_EDITOR=true git rebase --interactive --autosquash $TARGET~; }; f"
|
||||||
|
|
||||||
|
; dehead = "!BR=$(git branch --show-current); if [ -n "$BR" ]; then echo $BR; else git describe --contains --all HEAD; fi;"
|
||||||
25
git/.gitconfig
Normal file
25
git/.gitconfig
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
[core]
|
||||||
|
editor = nano
|
||||||
|
autocrlf = input
|
||||||
|
[commit]
|
||||||
|
gpgSign = true
|
||||||
|
[tag]
|
||||||
|
gpgSign = true
|
||||||
|
[init]
|
||||||
|
defaultBranch = master
|
||||||
|
[push]
|
||||||
|
default = current
|
||||||
|
followTags = true
|
||||||
|
[pull]
|
||||||
|
default = current
|
||||||
|
rebase = false
|
||||||
|
[diff "bin"]
|
||||||
|
textconv = hexdump -v -C
|
||||||
|
[help]
|
||||||
|
autocorrect = 1
|
||||||
|
[remote "origin"]
|
||||||
|
prune = true
|
||||||
|
[include]
|
||||||
|
path = ~/.git_aliases
|
||||||
|
[include]
|
||||||
|
path = ~/.gitconfig.extra ; use this file to store other personal settings and aliases
|
||||||
10
git/.gitignore
vendored
Normal file
10
git/.gitignore
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
.DS_Store
|
||||||
|
Desktop.ini
|
||||||
|
Thumbs.db
|
||||||
|
nbproject/
|
||||||
|
._*
|
||||||
|
*._*
|
||||||
|
*.log
|
||||||
|
*.bak
|
||||||
|
*.rdb
|
||||||
|
|
||||||
160
shell/.bash_aliases
Normal file
160
shell/.bash_aliases
Normal file
@@ -0,0 +1,160 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# alias bashrc='source ~/.bashrc'
|
||||||
|
alias aliases='cat ~/.bash_aliases'
|
||||||
|
alias zshrc='source ~/.zshrc'
|
||||||
|
alias realias='source ~/.bash_aliases'
|
||||||
|
alias stow="stow -v"
|
||||||
|
alias reload='exec ${SHELL} -l'
|
||||||
|
alias sudo='sudo ' # enable aliases to be sudo’ed
|
||||||
|
alias g='git'
|
||||||
|
alias hosts="sudo nano /etc/hosts"
|
||||||
|
alias shrug="echo '¯\_(ツ)_/¯' | xclip -selection c"
|
||||||
|
|
||||||
|
alias ..='cd ..' # zsh builtin
|
||||||
|
alias ~='cd ~' # zsh builtin
|
||||||
|
alias -- -='cd -' # zsh builtin
|
||||||
|
|
||||||
|
alias chmod='chmod --preserve-root'
|
||||||
|
alias chown='chown --preserve-root'
|
||||||
|
|
||||||
|
alias free='free -h'
|
||||||
|
alias duh='du -ha --max-depth=1'
|
||||||
|
alias sduh='sudo du -ha --max-depth=1'
|
||||||
|
|
||||||
|
alias l='ls -pCFh --color=auto'
|
||||||
|
alias la='ls -pAFh --color=auto'
|
||||||
|
alias ll='ls -palFh --color=auto'
|
||||||
|
|
||||||
|
alias mkdir='mkdir -pv'
|
||||||
|
alias where='whereis' # zsh builtin
|
||||||
|
|
||||||
|
alias ps='ps auxf'
|
||||||
|
alias psg='ps aux | grep -v grep | grep -i -e VSZ -e'
|
||||||
|
|
||||||
|
alias is='type -a'
|
||||||
|
alias upgrade='sudo apt update && sudo apt upgrade -y && sudo snap refresh'
|
||||||
|
alias untargz='tar -czf'
|
||||||
|
alias mkcd="mkdir -p $1 && cd $1"
|
||||||
|
alias cl='cd $1 && ll'
|
||||||
|
alias myip='curl http://ipecho.net/plain; echo'
|
||||||
|
alias ports='netstat -tulpan'
|
||||||
|
|
||||||
|
alias ssh.pub='cat ~/.ssh/*.pub'
|
||||||
|
alias gpg.new="gpg --full-generate-key"
|
||||||
|
alias gpg.pub="gpg --armor --export $@"
|
||||||
|
alias gpg.list='gpg --list-keys --keyid-format SHORT'
|
||||||
|
|
||||||
|
alias lite-xl="LITE_SCALE=1 lite-xl"
|
||||||
|
alias wine='LANG=ru_RU.utf8 wine'
|
||||||
|
alias docker.prune='docker image prune -f; docker network prune -f; docker container prune -f'
|
||||||
|
|
||||||
|
# Add an "alert" alias for long running commands. Use like so:
|
||||||
|
# sleep 10; alert
|
||||||
|
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
|
||||||
|
|
||||||
|
# https://obsproject.com/forum/threads/how-to-start-virtual-camera-without-sudo-privileges.139783/
|
||||||
|
alias obscam="sudo modprobe v4l2loopback video_nr=2 card_label='OBS Virtual Camera'"
|
||||||
|
|
||||||
|
# Download music from Youtube or Youtube Music
|
||||||
|
# and save as top quality flac file without video
|
||||||
|
# Playlist and video/track URLs are supported
|
||||||
|
# Usage: $ ytm https://www.youtube.com/watch\?v=dQw4w9WgXcQ
|
||||||
|
# More info: https://github.com/ytdl-org/youtube-dl
|
||||||
|
ytm() {
|
||||||
|
youtube-dl \
|
||||||
|
--extract-audio \
|
||||||
|
--audio-format flac \
|
||||||
|
--audio-quality 0 \
|
||||||
|
--format bestaudio \
|
||||||
|
--write-info-json \
|
||||||
|
--output "${HOME}/Музыка/ytm/%(playlist_title)s/%(channel)s - %(title)s.%(ext)s" \
|
||||||
|
"$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
docker.ip() {
|
||||||
|
if [ "$1" ]; then
|
||||||
|
if [ "$1" = "-a" ]; then
|
||||||
|
docker ps -aq \
|
||||||
|
| xargs -n 1 docker inspect --format '{{.Name}}{{range .NetworkSettings.Networks}} {{.IPAddress}}{{end}}' \
|
||||||
|
| sed -e 's#^/##' \
|
||||||
|
| column -t
|
||||||
|
elif [ "$1" = "-c" ]; then
|
||||||
|
docker-compose ps -q \
|
||||||
|
| xargs -n 1 docker inspect --format '{{.Name}}{{range .NetworkSettings.Networks}} {{.IPAddress}}{{end}}' \
|
||||||
|
| sed -e 's#^/##' \
|
||||||
|
| column -t
|
||||||
|
else
|
||||||
|
docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$1"
|
||||||
|
docker port "$1"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
docker ps -q \
|
||||||
|
| xargs -n 1 docker inspect --format '{{.Name}}{{range .NetworkSettings.Networks}} {{.IPAddress}}{{end}}' \
|
||||||
|
| sed -e 's#^/##' \
|
||||||
|
| column -t
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#################################################################################
|
||||||
|
|
||||||
|
# $1 -- file/dir path
|
||||||
|
# $2 -- permissions (0644, 0755, etc)
|
||||||
|
# own() { #TODO refactor
|
||||||
|
# [ "$1" ] && PATH="${1/#\~/$HOME}" || {
|
||||||
|
# echo "Error (1): path not provided"
|
||||||
|
# }
|
||||||
|
# echo $PATH
|
||||||
|
|
||||||
|
# [ "$2" ] && PERM="$2" || {
|
||||||
|
# if [ -d $PATH ]; then
|
||||||
|
# PERM="0755"
|
||||||
|
# elif [ -f $PATH ]; then
|
||||||
|
# PERM="0644"
|
||||||
|
# else
|
||||||
|
# echo "Error (2): path not exists"
|
||||||
|
# fi;
|
||||||
|
# }
|
||||||
|
# echo $PERM
|
||||||
|
|
||||||
|
# sudo chmod $PERM -R --preserve-root $PATH
|
||||||
|
# sudo chown $USER. -R --preserve-root $PATH
|
||||||
|
# }
|
||||||
|
|
||||||
|
# function extract {
|
||||||
|
# if [ -z "$1" ]; then
|
||||||
|
# # display usage if no parameters given
|
||||||
|
# echo "Usage: extract <path/file_name>.<zip|rar|bz2|gz|tar|tbz2|tgz|Z|7z|xz|ex|tar.bz2|tar.gz|tar.xz>"
|
||||||
|
# echo " extract <path/file_name_1.ext> [path/file_name_2.ext] [path/file_name_3.ext]"
|
||||||
|
# return 1
|
||||||
|
# else
|
||||||
|
# for n in $@
|
||||||
|
# do
|
||||||
|
# if [ -f "$n" ] ; then
|
||||||
|
# case "${n%,}" in
|
||||||
|
# *.tar.bz2|*.tar.gz|*.tar.xz|*.tbz2|*.tgz|*.txz|*.tar)
|
||||||
|
# tar xvf "$n" ;;
|
||||||
|
# *.lzma) unlzma ./"$n" ;;
|
||||||
|
# *.bz2) bunzip2 ./"$n" ;;
|
||||||
|
# *.rar) unrar x -ad ./"$n" ;;
|
||||||
|
# *.gz) gunzip ./"$n" ;;
|
||||||
|
# *.zip) unzip ./"$n" ;;
|
||||||
|
# *.z) uncompress ./"$n" ;;
|
||||||
|
# *.7z|*.arj|*.cab|*.chm|*.deb|*.dmg|*.iso|*.lzh|*.msi|*.rpm|*.udf|*.wim|*.xar)
|
||||||
|
# 7z x ./"$n" ;;
|
||||||
|
# *.xz) unxz ./"$n" ;;
|
||||||
|
# *.exe) cabextract ./"$n" ;;
|
||||||
|
# *)
|
||||||
|
# echo "extract: '$n' - unknown archive method"
|
||||||
|
# return 1
|
||||||
|
# ;;
|
||||||
|
# esac
|
||||||
|
# else
|
||||||
|
# echo "'$n' - file does not exist"
|
||||||
|
# return 1
|
||||||
|
# fi
|
||||||
|
# done
|
||||||
|
# fi
|
||||||
|
# }
|
||||||
101
shell/.bashrc
Normal file
101
shell/.bashrc
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
# ~/.bashrc: executed by bash(1) for non-login shells.
|
||||||
|
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
|
||||||
|
# for examples
|
||||||
|
|
||||||
|
# If not running interactively, don't do anything
|
||||||
|
case $- in
|
||||||
|
*i*) ;;
|
||||||
|
*) return;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# don't put duplicate lines or lines starting with space in the history.
|
||||||
|
# See bash(1) for more options
|
||||||
|
HISTCONTROL=ignoreboth
|
||||||
|
|
||||||
|
# append to the history file, don't overwrite it
|
||||||
|
shopt -s histappend
|
||||||
|
|
||||||
|
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
|
||||||
|
HISTSIZE=1000
|
||||||
|
HISTFILESIZE=2000
|
||||||
|
|
||||||
|
# check the window size after each command and, if necessary,
|
||||||
|
# update the values of LINES and COLUMNS.
|
||||||
|
shopt -s checkwinsize
|
||||||
|
|
||||||
|
# If set, the pattern "**" used in a pathname expansion context will
|
||||||
|
# match all files and zero or more directories and subdirectories.
|
||||||
|
#shopt -s globstar
|
||||||
|
|
||||||
|
# make less more friendly for non-text input files, see lesspipe(1)
|
||||||
|
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
|
||||||
|
|
||||||
|
# set variable identifying the chroot you work in (used in the prompt below)
|
||||||
|
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
|
||||||
|
debian_chroot=$(cat /etc/debian_chroot)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# set a fancy prompt (non-color, unless we know we "want" color)
|
||||||
|
case "$TERM" in
|
||||||
|
xterm-color|*-256color) color_prompt=yes;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# uncomment for a colored prompt, if the terminal has the capability; turned
|
||||||
|
# off by default to not distract the user: the focus in a terminal window
|
||||||
|
# should be on the output of commands, not on the prompt
|
||||||
|
#force_color_prompt=yes
|
||||||
|
|
||||||
|
if [ -n "$force_color_prompt" ]; then
|
||||||
|
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
|
||||||
|
# We have color support; assume it's compliant with Ecma-48
|
||||||
|
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
|
||||||
|
# a case would tend to support setf rather than setaf.)
|
||||||
|
color_prompt=yes
|
||||||
|
else
|
||||||
|
color_prompt=
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$color_prompt" = yes ]; then
|
||||||
|
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
|
||||||
|
else
|
||||||
|
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
|
||||||
|
fi
|
||||||
|
unset color_prompt force_color_prompt
|
||||||
|
|
||||||
|
# If this is an xterm set the title to user@host:dir
|
||||||
|
case "$TERM" in
|
||||||
|
xterm*|rxvt*)
|
||||||
|
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1";;
|
||||||
|
*);;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# enable color support of ls and also add handy aliases
|
||||||
|
if [ -x /usr/bin/dircolors ]; then
|
||||||
|
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
|
||||||
|
alias ls='ls --color=auto'
|
||||||
|
#alias dir='dir --color=auto'
|
||||||
|
#alias vdir='vdir --color=auto'
|
||||||
|
|
||||||
|
alias grep='grep --color=auto'
|
||||||
|
alias fgrep='fgrep --color=auto'
|
||||||
|
alias egrep='egrep --color=auto'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# colored GCC warnings and errors
|
||||||
|
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
|
||||||
|
|
||||||
|
# enable programmable completion features (you don't need to enable
|
||||||
|
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
|
||||||
|
# sources /etc/bash.bashrc).
|
||||||
|
if ! shopt -oq posix; then
|
||||||
|
if [ -f /usr/share/bash-completion/bash_completion ]; then
|
||||||
|
source /usr/share/bash-completion/bash_completion
|
||||||
|
elif [ -f /etc/bash_completion ]; then
|
||||||
|
source /etc/bash_completion
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
[[ -f ~/.bash_aliases ]] && source ~/.bash_aliases
|
||||||
|
[[ -f ~/.bashrc.extra ]] && source ~/.bashrc.extra
|
||||||
|
[[ -f ~/.profile ]] && source ~/.profile
|
||||||
57
shell/.profile
Normal file
57
shell/.profile
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
# ~/.profile: executed by the command interpreter for login shells.
|
||||||
|
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
|
||||||
|
# exists.
|
||||||
|
# see /usr/share/doc/bash/examples/startup-files for examples.
|
||||||
|
# the files are located in the bash-doc package.
|
||||||
|
|
||||||
|
# set PATH so it includes user's private bin if it exists
|
||||||
|
if [ -d "$HOME/bin" ] ; then
|
||||||
|
PATH="$HOME/bin:$PATH"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# set PATH so it includes user's private bin if it exists
|
||||||
|
if [ -d "$HOME/.local/bin" ] ; then
|
||||||
|
PATH="$HOME/.local/bin:$PATH"
|
||||||
|
fi
|
||||||
|
|
||||||
|
### AAA ##########################################
|
||||||
|
|
||||||
|
[ -f ~/.bash_aliases ] && source ~/.bash_aliases
|
||||||
|
[ -f ~/.profile.extra ] && source ~/.profile.extra
|
||||||
|
|
||||||
|
export LITE_SCALE=1 # workaround https://github.com/lite-xl/lite-xl/issues/1173
|
||||||
|
|
||||||
|
export JAVA_HOME="/usr/bin/"
|
||||||
|
export PATH="/opt/nvim/bin:$PATH"
|
||||||
|
export PATH="$HOME/.local/bin/:$PATH"
|
||||||
|
export PATH="$HOME/.local/share/JetBrains/Toolbox/scripts:$PATH"
|
||||||
|
export PATH="$(composer config -g home)/vendor/bin:$PATH"
|
||||||
|
|
||||||
|
# phpbrew
|
||||||
|
# export PHPBREW_SET_PROMPT=1
|
||||||
|
# export PHPBREW_RC_ENABLE=1
|
||||||
|
# [ -f ~/.phpbrew/bashrc ] && source ~/.phpbrew/bashrc
|
||||||
|
|
||||||
|
# golang
|
||||||
|
export PATH="/usr/local/go/bin:$PATH"
|
||||||
|
export GOPATH="$HOME/.go"
|
||||||
|
|
||||||
|
# rust cargo
|
||||||
|
[ -f ~/.cargo/env ] && source ~/.cargo/env
|
||||||
|
|
||||||
|
# nvm
|
||||||
|
# export NVM_DIR="$HOME/.nvm"
|
||||||
|
# [ -s "$NVM_DIR/nvm.sh" ] && source "$NVM_DIR/nvm.sh" # This loads nvm
|
||||||
|
# [ -s "$NVM_DIR/bash_completion" ] && source "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
||||||
|
|
||||||
|
# neovim
|
||||||
|
export NVM_DIR="$HOME/.nvm"
|
||||||
|
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
||||||
|
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
||||||
|
|
||||||
|
# The next line updates PATH for Yandex Cloud CLI.
|
||||||
|
[ -f "$HOME/yandex-cloud/path.bash.inc" ] && source "$HOME/yandex-cloud/path.bash.inc"
|
||||||
|
|
||||||
|
# The next line enables shell command completion for yc.
|
||||||
|
[ -f "$HOME/yandex-cloud/completion.zsh.inc" ] && source "$HOME/yandex-cloud/completion.zsh.inc"
|
||||||
|
|
||||||
89
shell/.zshrc
Normal file
89
shell/.zshrc
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
# 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
|
||||||
|
|
||||||
|
# If you come from bash you might have to change your $PATH.
|
||||||
|
# export PATH=$HOME/bin:/usr/local/bin:$PATH
|
||||||
|
|
||||||
|
# Path to your oh-my-zsh installation.
|
||||||
|
export ZSH="$HOME/.oh-my-zsh"
|
||||||
|
|
||||||
|
# Set name of the theme to load --- if set to "random", it will
|
||||||
|
# load a random theme each time oh-my-zsh is loaded, in which case,
|
||||||
|
# to know which specific one was loaded, run: echo $RANDOM_THEME
|
||||||
|
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
|
||||||
|
ZSH_THEME="powerlevel10k/powerlevel10k"
|
||||||
|
|
||||||
|
# Set list of themes to pick from when loading at random
|
||||||
|
# Setting this variable when ZSH_THEME=random will cause zsh to load
|
||||||
|
# a theme from this variable instead of looking in $ZSH/themes/
|
||||||
|
# If set to an empty array, this variable will have no effect.
|
||||||
|
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )
|
||||||
|
|
||||||
|
# Uncomment the following line to use case-sensitive completion.
|
||||||
|
# CASE_SENSITIVE="true"
|
||||||
|
|
||||||
|
# Uncomment the following line to use hyphen-insensitive completion.
|
||||||
|
# Case-sensitive completion must be off. _ and - will be interchangeable.
|
||||||
|
# HYPHEN_INSENSITIVE="true"
|
||||||
|
|
||||||
|
# Uncomment one of the following lines to change the auto-update behavior
|
||||||
|
# zstyle ':omz:update' mode disabled # disable automatic updates
|
||||||
|
# zstyle ':omz:update' mode auto # update automatically without asking
|
||||||
|
# zstyle ':omz:update' mode reminder # just remind me to update when it's time
|
||||||
|
|
||||||
|
# Uncomment the following line to change how often to auto-update (in days).
|
||||||
|
# zstyle ':omz:update' frequency 13
|
||||||
|
|
||||||
|
# Uncomment the following line if pasting URLs and other text is messed up.
|
||||||
|
# DISABLE_MAGIC_FUNCTIONS="true"
|
||||||
|
|
||||||
|
# Uncomment the following line to disable colors in ls.
|
||||||
|
# DISABLE_LS_COLORS="true"
|
||||||
|
|
||||||
|
# Uncomment the following line to disable auto-setting terminal title.
|
||||||
|
# DISABLE_AUTO_TITLE="true"
|
||||||
|
|
||||||
|
# Uncomment the following line to enable command auto-correction.
|
||||||
|
# ENABLE_CORRECTION="true"
|
||||||
|
|
||||||
|
# Uncomment the following line to display red dots whilst waiting for completion.
|
||||||
|
# You can also set it to another string to have that shown instead of the default red dots.
|
||||||
|
# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f"
|
||||||
|
# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765)
|
||||||
|
# COMPLETION_WAITING_DOTS="true"
|
||||||
|
|
||||||
|
# Uncomment the following line if you want to disable marking untracked files
|
||||||
|
# under VCS as dirty. This makes repository status check for large repositories
|
||||||
|
# much, much faster.
|
||||||
|
# DISABLE_UNTRACKED_FILES_DIRTY="true"
|
||||||
|
|
||||||
|
# Uncomment the following line if you want to change the command execution time
|
||||||
|
# stamp shown in the history command output.
|
||||||
|
# You can set one of the optional three formats:
|
||||||
|
# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
|
||||||
|
# or set a custom format using the strftime function format specifications,
|
||||||
|
# see 'man strftime' for details.
|
||||||
|
# HIST_STAMPS="mm/dd/yyyy"
|
||||||
|
|
||||||
|
# Would you like to use another custom folder than $ZSH/custom?
|
||||||
|
# ZSH_CUSTOM=/path/to/new-custom-folder
|
||||||
|
|
||||||
|
# Which plugins would you like to load?
|
||||||
|
# Standard plugins can be found in $ZSH/plugins/
|
||||||
|
# Custom plugins may be added to $ZSH_CUSTOM/plugins/
|
||||||
|
# Example format: plugins=(rails git textmate ruby lighthouse)
|
||||||
|
# Add wisely, as too many plugins slow down shell startup.
|
||||||
|
plugins=(git docker docker-compose composer zsh-autosuggestions zsh-syntax-highlighting)
|
||||||
|
|
||||||
|
source $ZSH/oh-my-zsh.sh
|
||||||
|
|
||||||
|
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
|
||||||
|
[[ -f ~/.p10k.zsh ]] && source ~/.p10k.zsh
|
||||||
|
|
||||||
|
[[ -f ~/.bash_aliases ]] && source ~/.bash_aliases
|
||||||
|
[[ -f ~/.bashrc.extra ]] && source ~/.bashrc.extra
|
||||||
|
[[ -f ~/.profile ]] && source ~/.profile
|
||||||
@@ -0,0 +1,85 @@
|
|||||||
|
// https://docs.sublimetext.io/reference/commands.html
|
||||||
|
// https://docs.sublimetext.io/reference/key_bindings.html
|
||||||
|
[
|
||||||
|
// привычные комбинации из vscode
|
||||||
|
{ "keys": ["ctrl+k", "ctrl+o"], "command": "prompt_open_folder" },
|
||||||
|
{ "keys": ["ctrl+f2"], "command": "find_all_under"},
|
||||||
|
|
||||||
|
// переназначено на ctrl с alt, чтоб не конфликтоввать со сменой раскладки
|
||||||
|
{
|
||||||
|
"keys": ["ctrl+shift+1"],
|
||||||
|
"command": "set_layout",
|
||||||
|
"args":
|
||||||
|
{
|
||||||
|
"cols": [0.0, 1.0],
|
||||||
|
"rows": [0.0, 1.0],
|
||||||
|
"cells": [[0, 0, 1, 1]]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"keys": ["ctrl+shift+2"],
|
||||||
|
"command": "set_layout",
|
||||||
|
"args":
|
||||||
|
{
|
||||||
|
"cols": [0.0, 0.5, 1.0],
|
||||||
|
"rows": [0.0, 1.0],
|
||||||
|
"cells": [[0, 0, 1, 1], [1, 0, 2, 1]]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"keys": ["ctrl+shift+3"],
|
||||||
|
"command": "set_layout",
|
||||||
|
"args":
|
||||||
|
{
|
||||||
|
"cols": [0.0, 0.33, 0.66, 1.0],
|
||||||
|
"rows": [0.0, 1.0],
|
||||||
|
"cells": [[0, 0, 1, 1], [1, 0, 2, 1], [2, 0, 3, 1]]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"keys": ["ctrl+shift+4"],
|
||||||
|
"command": "set_layout",
|
||||||
|
"args":
|
||||||
|
{
|
||||||
|
"cols": [0.0, 0.25, 0.5, 0.75, 1.0],
|
||||||
|
"rows": [0.0, 1.0],
|
||||||
|
"cells": [[0, 0, 1, 1], [1, 0, 2, 1], [2, 0, 3, 1], [3, 0, 4, 1]]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"keys": ["ctrl+shift+8"],
|
||||||
|
"command": "set_layout",
|
||||||
|
"args":
|
||||||
|
{
|
||||||
|
"cols": [0.0, 1.0],
|
||||||
|
"rows": [0.0, 0.5, 1.0],
|
||||||
|
"cells": [[0, 0, 1, 1], [0, 1, 1, 2]]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"keys": ["ctrl+shift+9"],
|
||||||
|
"command": "set_layout",
|
||||||
|
"args":
|
||||||
|
{
|
||||||
|
"cols": [0.0, 1.0],
|
||||||
|
"rows": [0.0, 0.33, 0.66, 1.0],
|
||||||
|
"cells": [[0, 0, 1, 1], [0, 1, 1, 2], [0, 2, 1, 3]]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"keys": ["ctrl+shift+5"],
|
||||||
|
"command": "set_layout",
|
||||||
|
"args":
|
||||||
|
{
|
||||||
|
"cols": [0.0, 0.5, 1.0],
|
||||||
|
"rows": [0.0, 0.5, 1.0],
|
||||||
|
"cells":
|
||||||
|
[
|
||||||
|
[0, 0, 1, 1], [1, 0, 2, 1],
|
||||||
|
[0, 1, 1, 2], [1, 1, 2, 2]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
// https://docs.sublimetext.io/reference/commands.html
|
||||||
|
// https://docs.sublimetext.io/reference/mouse_bindings.html
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"button": "button2", "modifiers": ["ctrl"],
|
||||||
|
"command": "fold",
|
||||||
|
"press_command": "drag_select"
|
||||||
|
},
|
||||||
|
]
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"bootstrapped": true,
|
||||||
|
"in_process_packages":
|
||||||
|
[
|
||||||
|
"Package Control",
|
||||||
|
"phpfmt",
|
||||||
|
],
|
||||||
|
"installed_packages":
|
||||||
|
[
|
||||||
|
"Docker Based Build Systems",
|
||||||
|
"Dockerfile Syntax Highlighting",
|
||||||
|
"LogView",
|
||||||
|
"Markdown Extended",
|
||||||
|
"MarkdownLivePreview",
|
||||||
|
"MarkdownPreview",
|
||||||
|
"Materialize",
|
||||||
|
"Package Control",
|
||||||
|
"phpfmt",
|
||||||
|
],
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"ignored_packages":
|
||||||
|
[
|
||||||
|
"Package Control",
|
||||||
|
"phpfmt",
|
||||||
|
"Vintage",
|
||||||
|
],
|
||||||
|
"color_scheme": "Packages/Materialize/schemes/Material One Dark.tmTheme",
|
||||||
|
"theme": "Material One Dark.sublime-theme",
|
||||||
|
"index_files": false,
|
||||||
|
"font_face": "JetBrains Mono NL",
|
||||||
|
"font_options": [
|
||||||
|
"dlig",
|
||||||
|
"ss01",
|
||||||
|
"gray_antialias"
|
||||||
|
],
|
||||||
|
"fade_fold_buttons": false,
|
||||||
|
"rulers": [120],
|
||||||
|
"translate_tabs_to_spaces": true,
|
||||||
|
"highlight_line": true,
|
||||||
|
"control_character_style": "names",
|
||||||
|
"trim_trailing_white_space_on_save": "all",
|
||||||
|
"trim_only_modified_white_space": false,
|
||||||
|
"ensure_newline_at_eof_on_save": true,
|
||||||
|
"scroll_speed": 1.2,
|
||||||
|
"show_tab_close_buttons": false,
|
||||||
|
"folder_exclude_patterns": [".svn", ".hg", "CVS", ".Trash", ".Trash-*"],
|
||||||
|
}
|
||||||
3998
xcompose/.XCompose
Normal file
3998
xcompose/.XCompose
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user