Initial commit: bash, zsh, docker, git, subl

This commit is contained in:
2025-11-11 12:32:16 +08:00
commit 37169cda14
15 changed files with 4854 additions and 0 deletions

16
.editorconfig Normal file
View 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
View 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>

View 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
View 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
View 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
View File

@@ -0,0 +1,10 @@
.DS_Store
Desktop.ini
Thumbs.db
nbproject/
._*
*._*
*.log
*.bak
*.rdb

160
shell/.bash_aliases Normal file
View 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 sudoed
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
View 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
View 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
View 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

View File

@@ -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]
]
}
},
]

View File

@@ -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"
},
]

View File

@@ -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",
],
}

View File

@@ -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

File diff suppressed because it is too large Load Diff