diff options
| -rw-r--r-- | .vimrc | 4 | ||||
| -rw-r--r-- | .zshrc | 697 |
2 files changed, 339 insertions, 362 deletions
@@ -78,10 +78,10 @@ " Folding {{{ filetype plugin indent on syntax on - autocmd FileType vim,text,sh setlocal foldmethod=marker + autocmd FileType vim,text,sh,zsh setlocal foldmethod=marker set foldlevel=99 " Open all folds by default - autocmd FileType vim,sh setlocal foldlevel=0 + autocmd FileType vim,sh,zsh setlocal foldlevel=0 set foldtext=MyFoldText() function MyFoldText() @@ -1,368 +1,345 @@ -# ------------------------------------------------------------------------------ -# You'll need to install oh-my-zsh and alien -# -# 1. oh-my-zsh -# -# sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" -# -# 2. alien -# -# git clone https://github.com/eendroroy/alien.git && cd alien && git submodule update --init --recursive -# ------------------------------------------------------------------------------ - -# If you come from bash you might have to change your $PATH. -# export PATH=$HOME/bin:/usr/local/bin:$PATH - -export ZSH="/home/kamen/.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="gruvbox" -SOLARIZED_THEME="dark" - -# 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 the following line to disable bi-weekly auto-update checks. -# DISABLE_AUTO_UPDATE="true" - -# Uncomment the following line to automatically update without prompting. -# DISABLE_UPDATE_PROMPT="true" - -# Uncomment the following line to change how often to auto-update (in days). -# export UPDATE_ZSH_DAYS=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. -# 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) - -source $ZSH/oh-my-zsh.sh - -# User configuration - -# export MANPATH="/usr/local/man:$MANPATH" - -# You may need to manually set your language environment -# export LANG=en_US.UTF-8 - -# Preferred editor for local and remote sessions -if [[ -n $SSH_CONNECTION ]]; then - export EDITOR='vim' -else - export EDITOR='vim' -fi - -# Compilation flags -# export ARCHFLAGS="-arch x86_64" - -# Set personal aliases, overriding those provided by oh-my-zsh libs, -# plugins, and themes. Aliases can be placed here, though oh-my-zsh -# users are encouraged to define aliases within the ZSH_CUSTOM folder. - - -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 - -# Disables Software Flow Control -stty -F/dev/tty -ixon -ixoff - -# ------------------------------------------------------------------------------ -# Alien theme config -# ------------------------------------------------------------------------------ - -source ~/alien/alien.zsh - -# colors - -export ALIEN_THEME="gruvbox" -export ALIEN_SECTION_BATTERY_FG=223 -export ALIEN_SECTION_PATH_FG=178 -export ALIEN_SECTION_USER_FG=223 -export ALIEN_SECTION_USER_BG=66 -export ALIEN_GIT_TRACKED_COLOR=196 -export ALIEN_GIT_UN_TRACKED_COLOR=214 - -# custom symbols - -export ALIEN_PROMPT_SYM=" " -export ALIEN_GIT_SYM= -export ALIEN_BRANCH_SYM= -export ALIEN_GIT_ADD_SYM=ﰂ -export ALIEN_GIT_DEL_SYM=ﯰ -export ALIEN_GIT_MOD_SYM=﯂ -export ALIEN_GIT_NEW_SYM=? - -# sections - -export ALIEN_SECTION_TIME_FORMAT=%H:%M:%S - -export ALIEN_SECTIONS_LEFT=( - left_cap - ssh - user - path - git_branch:async - git_status:async - left_end_cap - newline - prompt -) - -export ALIEN_SECTIONS_RIGHT=( - exit - time - battery - right_end_cap -) - -# custom sections - -alien_prompt_section_left_cap() { - __section=( - content " %B%b" - foreground $ALIEN_SECTION_USER_BG - ) -} - -alien_prompt_section_right_end_cap() { - __section=( - content "%B%b" - foreground $ALIEN_SECTION_BATTERY_BG - ) -} - -alien_prompt_section_git_branch() { - local __branch_info= - if [[ $(alien_is_git) == 1 ]]; then - __branch_info=$(alien_git_branch) - else - return 1 - fi - __section=( - content " ${__branch_info}" - foreground $ALIEN_SECTION_VCS_BRANCH_BG - background $ALIEN_SECTION_EXIT_BG - ) -} - -alien_prompt_section_git_status() { - local __stash_info= - local __lr_info= - local __dirty_info= - if [[ $(alien_is_git) == 1 ]]; then - __stash_info=$(alien_git_stash) - __lr_info=$(alien_git_lr) - __dirty_info=$(alien_git_dirty) - else - return 1 - fi - __section=( - content " ${__stash_info}${__lr_info}${__dirty_info}" - foreground 214 - background $ALIEN_SECTION_EXIT_BG - separator 1 - ) -} - -# default section overrides (for stuff that can only be changed by changing the source) - -alien_prompt_section_exit() { - __section=( - content "%(?. . %? )" - foreground "%(?.$ALIEN_SECTION_VCS_BRANCH_BG.$ALIEN_SECTION_EXIT_FG)" - background "%(?.$ALIEN_SECTION_EXIT_BG.$ALIEN_SECTION_EXIT_BG_ERROR)" - separator 1 - ) -} - -alien_prompt_section_prompt() { - __section=( - content "%B${ALIEN_PROMPT_SYM}%b " - foreground "%(?.$ALIEN_PROMPT_FG.$ALIEN_SECTION_EXIT_BG_ERROR)" - ) -} - -alien_battery_stat(){ - __os=$(uname) - if [[ ${__os} = "Linux" ]]; then - if command -v upower > /dev/null 2>&1 ; then - __bat_power=$(upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep state | awk '{print $2}') - __bat_power_ind="" - if [[ ${__bat_power} = "charging" ]]; then __bat_power_ind="" - elif [[ ${__bat_power} = "discharging" ]]; then __bat_power_ind="" - elif [[ ${__bat_power} = "fully-charged" ]]; then __bat_power_ind="" - fi - __bat_per=$(upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep percentage | awk '{print $2}' | sed "s|%||g") - if [[ -n ${__bat_per} ]]; then - echo -n "${__bat_power_ind} ${__bat_per}%%" - fi - fi - fi - unset __os __bat_power __bat_power_ind __bat_per -} - -alien_prompt_section_battery() { - local __to_return=" " - if [ -n "$(upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep state)" ]; then - __to_return=" $(alien_battery_stat) " - fi - __section=( - content $__to_return - foreground $ALIEN_SECTION_BATTERY_FG - background $ALIEN_SECTION_BATTERY_BG - separator 1 - ) -} - -# ------------------------------------------------------------------------------ -# Aliases -# ------------------------------------------------------------------------------ - -alias ydl="youtube-dl" -alias ydlba="youtube-dl --audio-format best -x" - -# dnf aliases - -alias sdi="sudo dnf install -y" -alias sdr="sudo dnf remove -y" -alias sda="sudo dnf autoremove -y" - # If you're using dotnet from the "packages-microsoft-com-prod" repo, make sure to - # add "exclude=dotnet* aspnetcore* netstandard*" inside the /etc/yum.repos.d/fedora.repo, /etc/yum.repos.d/fedora-updates.repo and potentially /etc/yum.repos.d/fedora33.repo -alias sdu="sudo dnf upgrade -y && sudo dnf autoremove -y && sudo youtube-dl --update && wget -O - https://raw.githubusercontent.com/laurent22/joplin/master/Joplin_install_and_update.sh | bash && needs-restarting -r" - -alias ds="dnf search" -alias dcs="dnf copr search" -alias dp="dnf provides" -alias di="dnf info" - -alias sdudiscord="wget -O discord.tar.gz \"https://discord.com/api/download?platform=linux&format=tar.gz\" && tar -xzf discord.tar.gz && sudo rm -rf /opt/Discord && sudo mv Discord /opt" - -alias sdce="sudo dnf copr enable -y" -alias sdcei='f() { sudo dnf copr enable -y $1 && sudo dnf install -y $2; unset -f f }; f' - -# apt aliases - -# alias sasy="sudo apt install -y" -# alias sary="sudo apt remove -y" -# alias saty="sudo apt autoremove -y" -# alias sagt="sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y && sudo youtube-dl --update && wget -O - https://raw.githubusercontent.com/laurent22/joplin/master/Joplin_install_and_update.sh | bash" - -if [[ -x "$(command -v exa)" ]]; then - alias ll="exa --icons --group-directories-first --git --time-style long-iso -labh" - alias lk="exa --icons --group-directories-first --git --time-style long-iso -labhTL" - alias l.="exa --icons --group-directories-first --git --time-style long-iso -labhTL 2" - alias l="exa --icons --group-directories-first --time-style long-iso -abh" -else - alias ll="la -alF" - alias la="ls -A" - alias l="ls -CF" -fi - -alias lg="lazygit" - -alias q="exit" -alias x="exit" - -alias v="vim" - -alias cdg="cd ~/Programming/GitHub-repos/ && mcd" -alias cdl="cd ~/Programming/GitLab-repos/ && mcd" -alias cds="cd ~/Programming/source/ && mcd" - -# ------------------------------------------------------------------------------ -# Binds and alias-like functions -# ------------------------------------------------------------------------------ - -if [[ -x "$(command -v vimx)" ]]; then - vim () { - if [ -f ".vim-session" ] && [ -z "$1" ]; then - vimx -S .vim-session +# Notes on Installing {{{ + # You'll need to install oh-my-zsh and alien + # + # 1. oh-my-zsh + # + # sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" + # + # 2. alien + # + # git clone https://github.com/eendroroy/alien.git && cd alien && git submodule update --init --recursive +# }}} + +# General {{{ + # Exports {{{ + export ZSH="/home/kamen/.oh-my-zsh" + + export PATH=$HOME/bin:/usr/local/bin:$PATH # Adds ~/bin and /usr/local/bin paths to PATH + export PATH="$PATH:$HOME/.npm-global/bin" # Adds ~/.npm-global/bin path to PATH + + # export LANG=en_US.UTF-8 # You may need to manually set your language environment + + if [[ -n $SSH_CONNECTION ]]; then # Preferred editor for local + export EDITOR='vim' + else # and remote + export EDITOR='vim' + fi + # }}} + + # Theme {{{ + ZSH_THEME="gruvbox" + SOLARIZED_THEME="dark" + # }}} + + # Completion {{{ + # CASE_SENSITIVE="true" # case-sensitive completion + # HYPHEN_INSENSITIVE="true" # hyphen-insensitive completion (case_sensitive must be false) + # }}} + + # Updates {{{ + # DISABLE_AUTO_UPDATE="true" # disable bi-weekly auto-update checks + # DISABLE_UPDATE_PROMPT="true" # update without prompting + # export UPDATE_ZSH_DAYS=13 # how often to auto-update (in days) + # DISABLE_MAGIC_FUNCTIONS="true" # uncomment if pasting URLs and other text is messed up + # ENABLE_CORRECTION="true" # command auto-correction + # COMPLETION_WAITING_DOTS="true" # display red dots while waiting for completion + # DISABLE_UNTRACKED_FILES_DIRTY="true" # disable marking untracked files under VCS as dirty; improves status check for large repos + ### }}} + + # Plugins {{{ + # Standard plugins: $ZSH/plugins/; Custom plugins: $ZSH_CUSTOM/plugins/ + plugins=(git) + + source $ZSH/oh-my-zsh.sh + + 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 + # }}} + + # Other {{{ + stty -F/dev/tty -ixon -ixoff # Disables Software Flow Control + # }}} +# }}} + +# Alien {{{ + source ~/alien/alien.zsh + + # Visuals {{{ + export ALIEN_THEME="gruvbox" + export ALIEN_SECTION_BATTERY_FG=223 + export ALIEN_SECTION_PATH_FG=178 + export ALIEN_SECTION_USER_FG=223 + export ALIEN_SECTION_USER_BG=66 + export ALIEN_GIT_TRACKED_COLOR=196 + export ALIEN_GIT_UN_TRACKED_COLOR=214 + + export ALIEN_PROMPT_SYM=" " + export ALIEN_GIT_SYM= + export ALIEN_BRANCH_SYM= + export ALIEN_GIT_ADD_SYM=ﰂ + export ALIEN_GIT_DEL_SYM=ﯰ + export ALIEN_GIT_MOD_SYM=﯂ + export ALIEN_GIT_NEW_SYM=? + # }}} + + # Sections configuration {{{ + export ALIEN_SECTION_TIME_FORMAT=%H:%M:%S + + export ALIEN_SECTIONS_LEFT=( + left_cap + ssh + user + path + git_branch:async + git_status:async + left_end_cap + newline + prompt + ) + + export ALIEN_SECTIONS_RIGHT=( + exit + time + battery + right_end_cap + ) + # }}} + + # Custom sections {{{ + alien_prompt_section_left_cap() { + __section=( + content " %B%b" + foreground $ALIEN_SECTION_USER_BG + ) + } + + alien_prompt_section_right_end_cap() { + __section=( + content "%B%b" + foreground $ALIEN_SECTION_BATTERY_BG + ) + } + + alien_prompt_section_git_branch() { + local __branch_info= + if [[ $(alien_is_git) == 1 ]]; then + __branch_info=$(alien_git_branch) + else + return 1 + fi + __section=( + content " ${__branch_info}" + foreground $ALIEN_SECTION_VCS_BRANCH_BG + background $ALIEN_SECTION_EXIT_BG + ) + } + + alien_prompt_section_git_status() { + local __stash_info= + local __lr_info= + local __dirty_info= + if [[ $(alien_is_git) == 1 ]]; then + __stash_info=$(alien_git_stash) + __lr_info=$(alien_git_lr) + __dirty_info=$(alien_git_dirty) + else + return 1 + fi + __section=( + content " ${__stash_info}${__lr_info}${__dirty_info}" + foreground 214 + background $ALIEN_SECTION_EXIT_BG + separator 1 + ) + } + # }}} + + # Section overrides {{{ + alien_prompt_section_exit() { + __section=( + content "%(?. . %? )" + foreground "%(?.$ALIEN_SECTION_VCS_BRANCH_BG.$ALIEN_SECTION_EXIT_FG)" + background "%(?.$ALIEN_SECTION_EXIT_BG.$ALIEN_SECTION_EXIT_BG_ERROR)" + separator 1 + ) + } + + alien_prompt_section_prompt() { + __section=( + content "%B${ALIEN_PROMPT_SYM}%b " + foreground "%(?.$ALIEN_PROMPT_FG.$ALIEN_SECTION_EXIT_BG_ERROR)" + ) + } + + alien_battery_stat(){ + __os=$(uname) + if [[ ${__os} = "Linux" ]]; then + if command -v upower > /dev/null 2>&1 ; then # If there are batteries in the machine + __bat_power=$(upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep state | awk '{print $2}') + __bat_power_ind="" + if [[ ${__bat_power} = "charging" ]]; then __bat_power_ind="" + elif [[ ${__bat_power} = "discharging" ]]; then __bat_power_ind="" + elif [[ ${__bat_power} = "fully-charged" ]]; then __bat_power_ind="" + fi + __bat_per=$(upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep percentage | awk '{print $2}' | sed "s|%||g") + if [[ -n ${__bat_per} ]]; then + echo -n "${__bat_power_ind} ${__bat_per}%%" + fi + fi + fi + unset __os __bat_power __bat_power_ind __bat_per + } + + alien_prompt_section_battery() { + local __to_return=" " + if [ -n "$(upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep state)" ]; then + __to_return=" $(alien_battery_stat) " + fi + __section=( + content $__to_return + foreground $ALIEN_SECTION_BATTERY_FG + background $ALIEN_SECTION_BATTERY_BG + separator 1 + ) + } + # }}} +# }}} + +# Aliases {{{ + # dnf {{{ + alias sdi="sudo dnf install -y" + alias sdr="sudo dnf remove -y" + alias sda="sudo dnf autoremove -y" + # If you're using dotnet from the "packages-microsoft-com-prod" repo, make sure to + # add "exclude=dotnet* aspnetcore* netstandard*" inside the /etc/yum.repos.d/fedora.repo, /etc/yum.repos.d/fedora-updates.repo and potentially /etc/yum.repos.d/fedora33.repo + alias sdu="sudo dnf upgrade -y && sudo dnf autoremove -y && sudo youtube-dl --update && wget -O - https://raw.githubusercontent.com/laurent22/joplin/master/Joplin_install_and_update.sh | bash && needs-restarting -r" + + alias ds="dnf search" + alias dcs="dnf copr search" + alias dp="dnf provides" + alias di="dnf info" + + alias sdce="sudo dnf copr enable -y" + alias sdcei='f() { sudo dnf copr enable -y $1 && sudo dnf install -y $2; unset -f f }; f' + # }}} + + # apt {{{ + # alias sasy="sudo apt install -y" + # alias sary="sudo apt remove -y" + # alias saty="sudo apt autoremove -y" + # alias sagt="sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y && sudo youtube-dl --update && wget -O - https://raw.githubusercontent.com/laurent22/joplin/master/Joplin_install_and_update.sh | bash" + # }}} + + # General commands {{{ + if [[ -x "$(command -v exa)" ]]; then + alias ll="exa --icons --group-directories-first --git --time-style long-iso -labh" + alias lk="exa --icons --group-directories-first --git --time-style long-iso -labhTL" + alias l.="exa --icons --group-directories-first --git --time-style long-iso -labhTL 2" + alias l="exa --icons --group-directories-first --time-style long-iso -abh" else - vimx $@ + alias ll="la -alF" + alias la="ls -A" + alias l="ls -CF" fi + + alias q="exit" + alias x="exit" + # }}} + + # Application specific {{{ + alias lg="lazygit" + alias v="vim" + + alias ydl="youtube-dl -o '%(title)s.%(ext)s'" + alias ydlba="youtube-dl -o '%(title)s.%(ext)s' --audio-format best -x" + + alias gr="grit" + alias gra="grit add --" + alias grc="grit check" + alias grls="grit tree" + + alias sdudiscord="wget -O discord.tar.gz \"https://discord.com/api/download?platform=linux&format=tar.gz\" && tar -xzf discord.tar.gz && sudo rm -rf /opt/Discord && sudo mv Discord /opt" + + alias cdg="cd ~/Programming/GitHub-repos/ && mcd" + alias cdl="cd ~/Programming/GitLab-repos/ && mcd" + alias cds="cd ~/Programming/source/ && mcd" + # }}} +# }}} + +# Binds {{{ + bindkey '^H' backward-kill-word +# }}} + +# Functions {{{ + if [[ -x "$(command -v vimx)" ]]; then + # Open vim with .vim-session file, if it exists and the vim command doesn't have any parameters + vim () { + if [ -f ".vim-session" ] && [ -z "$1" ]; then + vimx -S .vim-session + else + vimx $@ + fi + } + fi + + if [[ -x "$(command -v grit)" ]]; then + # Add to grit parent, where first value is parent number and everything else is node value + grap () { + parent="$1" + shift + grit add -p $parent -- $@ + } + fi + + # Execute multiple commands + mexec () { + for cmd in "${@[@]}"; do + if ! [ -z "$cmd" ]; then + $cmd + fi + done } -fi - - - -mexec () { - for cmd in "${@[@]}"; do - if ! [ -z "$cmd" ]; then - $cmd + + # CD multiple times into subdirectories + mcd () { + for dir in "${@[@]}"; do + if ! [ -z "$dir" ]; then + cd $dir + fi + done + } + + # Run in the background + bgr () { + nohup sh -c "$@" 2>&1 & + disown + } + + # Kill process and run in the background + res () { + pkill $@ + bgr $@ + } + + # Launch .desktop application (either full path or just name) + dela () { + name=$1 + if [[ ${name:0:1} != "/" ]]; then + name="/usr/share/applications/${name}" fi - done -} - -mcd () { - for dir in "${@[@]}"; do - if ! [ -z "$dir" ]; then - cd $dir + if [[ ! $name =~ .desktop$ ]]; then + name+=".desktop" fi - done -} - -bgr () { - nohup sh -c "$@" 2>&1 & - disown -} + comm=($(awk -F= '$1=="Exec"{$1=""; print}' "$name")) + bgr "$comm" + } +# }}} -res () { - pkill $@ - bgr $@ -} +# Execute on startup {{{ + (grit) +#}}} -dela () { - name=$1 - if [[ ${name:0:1} != "/" ]]; then - name="/usr/share/applications/${name}" - fi - if [[ ! $name =~ .desktop$ ]]; then - name+=".desktop" - fi - comm=($(awk -F= '$1=="Exec"{$1=""; print}' "$name")) - bgr "$comm" -} +# Added by scripts: -bindkey '^H' backward-kill-word +export PATH="/home/kamen/bin/Sencha/Cmd:$PATH" |
