URI:
       Initial (re)-commit - dotfiles - arsenal of config files, ready to be cloned in new (virtual) machines.
  HTML git clone git://git.drkhsh.at/dotfiles.git
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
   DIR README
       ---
   DIR commit f6f8dfa3027d0e02756599716c7eb96fbcd5e6dd
  HTML Author: drkhsh <me@drkhsh.at>
       Date:   Sat,  7 Jan 2023 01:06:13 +0100
       
       Initial (re)-commit
       
       Diffstat:
         A .gitmodules                         |       6 ++++++
         A bash/.bashrc                        |      49 +++++++++++++++++++++++++++++++
         A git/.gitconfig                      |      16 ++++++++++++++++
         A mksh/.mkshrc                        |      32 +++++++++++++++++++++++++++++++
         A vim/.vim/colors/cyberpunk-neon.vim  |     178 +++++++++++++++++++++++++++++++
         A vim/.vim/pack/themes/start/dracula  |       1 +
         A vim/.vim/pack/themes/start/gruvbox  |       1 +
         A vim/.vimrc                          |      63 +++++++++++++++++++++++++++++++
         A zsh/.zshrc                          |      99 +++++++++++++++++++++++++++++++
       
       9 files changed, 445 insertions(+), 0 deletions(-)
       ---
   DIR diff --git a/.gitmodules b/.gitmodules
       @@ -0,0 +1,6 @@
       +[submodule "gruvbox"]
       +        path = vim/.vim/pack/themes/start/gruvbox
       +        url = https://github.com/morhetz/gruvbox.git
       +[submodule "dracula"]
       +        path = vim/.vim/pack/themes/start/dracula
       +        url = https://github.com/dracula/vim.git
   DIR diff --git a/bash/.bashrc b/bash/.bashrc
       @@ -0,0 +1,49 @@
       +bind 'set bell-style none'
       +
       +# history
       +HISTSIZE=10000
       +HISTFILE=~/.bash_history
       +shopt -s histappend
       +PROMPT_COMMAND='history -a' # save hist immediately
       +export HISTCONTROL=ignorespace:ignoredups
       +
       +# exists helper
       +_exists() {
       +        hash $1 2> /dev/null
       +}
       +
       +# aliases
       +alias mkdir="mkdir -p"
       +alias df="df -h"
       +alias du="du -h"
       +alias ..='cd ..'
       +alias ...='cd ../..'
       +_exists vim && alias vi="vim"
       +_exists doas && alias sudo="doas"
       +alias stopwatch="time cat"
       +
       +# env vars
       +export MANWIDTH=80
       +export LESSHISTFILE=-
       +_exists vim && export EDITOR="vim"
       +_exists less && export PAGER="less"
       +_exists brave-bin && export BROWSER="brave-bin"
       +_exists brave-browser && export BROWSER="brave-browser"
       +_exists systemctl && export SYSTEMD_PAGER=
       +
       +# deeply nested folders
       +function up {
       +        if [[ "$#" < 1 ]] ; then
       +                cd ..
       +        else
       +                CDSTR=""
       +                for i in {1..$1} ; do
       +                        CDSTR="../$CDSTR"
       +                done
       +                cd $CDSTR
       +        fi
       +}
       +
       +# starship prompt
       +_exists starship && eval "$(starship init bash)"
       +
   DIR diff --git a/git/.gitconfig b/git/.gitconfig
       @@ -0,0 +1,16 @@
       +[user]
       +        email = me@drkhsh.at
       +        name = drkhsh
       +
       +[alias]
       +        a = add
       +        c = commit
       +        p = push
       +        s = status
       +        d = diff
       +        o = checkout
       +        f = fetch
       +        b = branch
       +        l = log
       +        m = merge
       +        r = rebase
   DIR diff --git a/mksh/.mkshrc b/mksh/.mkshrc
       @@ -0,0 +1,32 @@
       +# history
       +HISTFILE=~/.mksh_history
       +HISTSIZE=10000
       +
       +alias mkdir="mkdir -p"
       +alias df="df -h"
       +alias du="du -h"
       +alias ..='cd ..'
       +alias ...='cd ../..'
       +alias vi="vim"
       +alias stopwatch="time cat"
       +
       +# env vars
       +export MANWIDTH=80
       +export LESSHISTFILE=-
       +export EDITOR="vim"
       +export PAGER="less"
       +export SYSTEMD_PAGER=
       +
       +# deeply nested folders
       +function up {
       +        if [[ "$#" < 1 ]] ; then
       +                cd ..
       +        else
       +                CDSTR=""
       +                for i in {1..$1} ; do
       +                        CDSTR="../$CDSTR"
       +                done
       +        cd $CDSTR
       +    fi
       +}
       +
   DIR diff --git a/vim/.vim/colors/cyberpunk-neon.vim b/vim/.vim/colors/cyberpunk-neon.vim
       @@ -0,0 +1,178 @@
       +" cyberpunk-neon.vim -- Vim color scheme.
       +" Author:      Roberto Michán Sánchez (Roboron) (robertoms258@gmail.com)
       +" Webpage:     https://github.com/Roboron3042/Cyberpunk-Neon
       +" Description: A dark theme with a cyberpunk/outrun feeling
       +
       +hi clear
       +
       +if exists("syntax_on")
       +  syntax reset
       +endif
       +
       +let colors_name = "cyberpunk-neon"
       +
       +if ($TERM =~ '256' || &t_Co >= 256) || has("gui_running")
       +    hi ColorColumn ctermbg=9 ctermfg=233 cterm=NONE guibg=#ff0000 guifg=#000b1e gui=NONE
       +    hi CursorColumn ctermbg=NONE ctermfg=201 cterm=NONE guibg=NONE guifg=#ea00d9 gui=NONE
       +    hi SpellLocal ctermbg=44 ctermfg=233 cterm=NONE guibg=#0abdc6 guifg=#000b1e gui=NONE guisp=#ea00d9
       +    hi SpellRare ctermbg=13 ctermfg=201 cterm=NONE guibg=#711c91 guifg=#ea00d9 gui=NONE guisp=#0abdc6
       +    hi Visual ctermbg=13 ctermfg=44 cterm=bold guibg=#711c91 guifg=#0abdc6 gui=bold
       +    hi Comment ctermbg=NONE ctermfg=25 cterm=bold guibg=NONE guifg=#005faf gui=bold
       +    hi Constant ctermbg=NONE ctermfg=208 cterm=NONE guibg=NONE guifg=#f57800 gui=NONE
       +    hi Cursor ctermbg=NONE ctermfg=201 cterm=NONE guibg=NONE guifg=#ea00d9 gui=NONE
       +    hi CursorLine ctermbg=201 ctermfg=233 cterm=NONE guibg=#ea00d9 guifg=#000b1e gui=NONE
       +    hi CursorLineNr ctermbg=201 ctermfg=233 cterm=NONE guibg=#ea00d9 guifg=#000b1e gui=NONE
       +    hi DiffAdd ctermbg=NONE ctermfg=10 cterm=NONE guibg=NONE guifg=#00ff00 gui=NONE
       +    hi DiffAdded ctermbg=NONE ctermfg=10 cterm=NONE guibg=NONE guifg=#00ff00 gui=NONE
       +    hi DiffChange ctermbg=NONE ctermfg=255 cterm=NONE guibg=NONE guifg=#d7d7d5 gui=NONE
       +    hi DiffChanged ctermbg=NONE ctermfg=255 cterm=NONE guibg=NONE guifg=#d7d7d5 gui=NONE
       +    hi DiffDelete ctermbg=NONE ctermfg=9 cterm=NONE guibg=NONE guifg=#ff0000 gui=NONE
       +    hi DiffRemoved ctermbg=NONE ctermfg=9 cterm=NONE guibg=NONE guifg=#ff0000 gui=NONE
       +    hi DiffText ctermbg=NONE ctermfg=44 cterm=NONE guibg=NONE guifg=#0abdc6 gui=NONE
       +    hi Directory ctermbg=NONE ctermfg=10 cterm=bold guibg=NONE guifg=#00ff00 gui=bold
       +    hi Error ctermbg=NONE ctermfg=9 cterm=NONE guibg=NONE guifg=#ff0000 gui=NONE
       +    hi ErrorMsg ctermbg=9 ctermfg=233 cterm=bold guibg=#ff0000 guifg=#000b1e gui=bold
       +    hi Exception ctermbg=NONE ctermfg=9 cterm=bold guibg=NONE guifg=#ff0000 gui=bold
       +    hi FoldColumn ctermbg=10 ctermfg=233 cterm=NONE guibg=#00ff00 guifg=#000b1e gui=NONE
       +    hi Folded ctermbg=10 ctermfg=233 cterm=NONE guibg=#00ff00 guifg=#000b1e gui=NONE
       +    hi Function ctermbg=NONE ctermfg=201 cterm=bold guibg=NONE guifg=#ea00d9 gui=bold
       +    hi Identifier ctermbg=NONE ctermfg=13 cterm=bold guibg=NONE guifg=#711c91 gui=bold
       +    hi IncSearch ctermbg=201 ctermfg=233 cterm=NONE guibg=#ea00d9 guifg=#000b1e gui=NONE
       +    hi Keyword ctermbg=NONE ctermfg=201 cterm=bold guibg=NONE guifg=#ea00d9 gui=bold
       +    hi LineNr ctermbg=NONE ctermfg=44 cterm=NONE guibg=NONE guifg=#0abdc6 gui=NONE
       +    hi MatchParen ctermbg=25 ctermfg=44 cterm=NONE guibg=#005faf guifg=#0abdc6 gui=NONE
       +    hi ModeMsg ctermbg=NONE ctermfg=44 cterm=bold guibg=NONE guifg=#0abdc6 gui=bold
       +    hi MoreMsg ctermbg=NONE ctermfg=44 cterm=bold guibg=NONE guifg=#0abdc6 gui=bold
       +    hi NonText ctermbg=NONE ctermfg=201 cterm=NONE guibg=NONE guifg=#ea00d9 gui=NONE
       +    hi Normal ctermbg=233 ctermfg=44 cterm=NONE guibg=#000b1e guifg=#0abdc6 gui=NONE
       +
       +    set background=dark
       +
       +    hi Operator ctermbg=NONE ctermfg=201 cterm=bold guibg=NONE guifg=#ea00d9 gui=bold
       +    hi Pmenu ctermbg=25 ctermfg=44 cterm=NONE guibg=#005faf guifg=#0abdc6 gui=NONE
       +    hi PmenuSbar ctermbg=25 ctermfg=NONE cterm=NONE guibg=#005faf guifg=NONE gui=NONE
       +    hi PmenuSel ctermbg=13 ctermfg=44 cterm=bold guibg=#711c91 guifg=#0abdc6 gui=bold
       +    hi PmenuThumb ctermbg=44 ctermfg=233 cterm=NONE guibg=#0abdc6 guifg=#000b1e gui=NONE
       +    hi PreProc ctermbg=NONE ctermfg=13 cterm=bold guibg=NONE guifg=#711c91 gui=bold
       +    hi Question ctermbg=NONE ctermfg=44 cterm=NONE guibg=NONE guifg=#0abdc6 gui=NONE
       +    hi Search ctermbg=201 ctermfg=233 cterm=bold guibg=#ea00d9 guifg=#000b1e gui=bold
       +    hi SignColumn ctermbg=10 ctermfg=233 cterm=NONE guibg=clear guifg=#000b1e gui=NONE
       +    hi Special ctermbg=NONE ctermfg=13 cterm=NONE guibg=NONE guifg=#711c91 gui=NONE
       +    hi SpecialKey ctermbg=NONE ctermfg=green cterm=NONE guibg=NONE guifg=green gui=NONE
       +    hi SpellBad ctermbg=9 ctermfg=233 cterm=NONE guibg=#ff0000 guifg=#000b1e gui=NONE
       +    hi SpellCap ctermbg=10 ctermfg=233 cterm=NONE guibg=#00ff00 guifg=#000b1e gui=NONE guisp=#000080
       +    hi Statement ctermbg=NONE ctermfg=10 cterm=bold guibg=NONE guifg=#00ff00 gui=bold
       +    hi StatusLine ctermbg=25 ctermfg=44 cterm=bold guibg=#005faf guifg=#0abdc6 gui=bold
       +    hi StatusLineNC ctermbg=13 ctermfg=201 cterm=NONE guibg=#711c91 guifg=#ea00d9 gui=NONE
       +    hi StatusLineTerm ctermbg=25 ctermfg=44 cterm=bold guibg=#005faf guifg=#0abdc6 gui=bold
       +    hi StatusLineTermNC ctermbg=13 ctermfg=201 cterm=NONE guibg=#711c91 guifg=#ea00d9 gui=NONE
       +    hi String ctermbg=NONE ctermfg=208 cterm=NONE guibg=NONE guifg=#f57800 gui=NONE
       +    hi TabLine ctermbg=25 ctermfg=44 cterm=bold guibg=#005faf guifg=#0abdc6 gui=bold
       +    hi TabLineFill ctermbg=25 ctermfg=44 cterm=bold guibg=#005faf guifg=#0abdc6 gui=bold
       +    hi TabLineSel ctermbg=13 ctermfg=44 cterm=bold guibg=#711c91 guifg=#0abdc6 gui=bold
       +    hi Title ctermbg=NONE ctermfg=208 cterm=NONE guibg=NONE guifg=#f57800 gui=NONE
       +    hi Todo ctermbg=201 ctermfg=233 cterm=NONE guibg=#ea00d9 guifg=#000b1e gui=NONE
       +    hi ToolbarLine ctermbg=4 ctermfg=44 cterm=NONE guibg=#000080 guifg=#0abdc6 gui=NONE
       +    hi ToolbarButton ctermbg=25 ctermfg=44 cterm=NONE guibg=#005faf guifg=#0abdc6 gui=NONE
       +    hi Type ctermbg=NONE ctermfg=201 cterm=bold guibg=NONE guifg=#ea00d9 gui=bold
       +    hi Underlined ctermbg=NONE ctermfg=44 cterm=underline guibg=NONE guifg=#0abdc6 gui=underline
       +    hi VertSplit ctermbg=25 ctermfg=NONE cterm=NONE guibg=#005faf guifg=NONE gui=NONE
       +    hi WarningMsg ctermbg=NONE ctermfg=9 cterm=NONE guibg=NONE guifg=#ff0000 gui=NONE
       +    hi WildMenu ctermbg=208 ctermfg=233 cterm=NONE guibg=#f57800 guifg=#000b1e gui=NONE
       +    hi htmlTagName ctermbg=NONE ctermfg=13 cterm=bold guibg=NONE guifg=#711c91 gui=bold
       +
       +elseif &t_Co == 8 || $TERM !~# '^linux' || &t_Co == 16
       +    set t_Co=16
       +
       +    hi ColorColumn ctermbg=red ctermfg=black cterm=NONE
       +    hi CursorColumn ctermbg=NONE ctermfg=magenta cterm=NONE
       +    hi SpellLocal ctermbg=cyan ctermfg=black cterm=NONE
       +    hi SpellRare ctermbg=darkmagenta ctermfg=magenta cterm=NONE
       +    hi Visual ctermbg=darkmagenta ctermfg=cyan cterm=bold
       +    hi Comment ctermbg=NONE ctermfg=blue cterm=bold
       +    hi Constant ctermbg=NONE ctermfg=darkyellow cterm=NONE
       +    hi Cursor ctermbg=NONE ctermfg=magenta cterm=NONE
       +    hi CursorLine ctermbg=magenta ctermfg=black cterm=NONE
       +    hi CursorLineNr ctermbg=magenta ctermfg=black cterm=NONE
       +    hi DiffAdd ctermbg=NONE ctermfg=green cterm=NONE
       +    hi DiffAdded ctermbg=NONE ctermfg=green cterm=NONE
       +    hi DiffChange ctermbg=NONE ctermfg=white cterm=NONE
       +    hi DiffChanged ctermbg=NONE ctermfg=white cterm=NONE
       +    hi DiffDelete ctermbg=NONE ctermfg=red cterm=NONE
       +    hi DiffRemoved ctermbg=NONE ctermfg=red cterm=NONE
       +    hi DiffText ctermbg=NONE ctermfg=cyan cterm=NONE
       +    hi Directory ctermbg=NONE ctermfg=green cterm=bold
       +    hi Error ctermbg=NONE ctermfg=red cterm=NONE
       +    hi ErrorMsg ctermbg=red ctermfg=black cterm=bold
       +    hi Exception ctermbg=NONE ctermfg=red cterm=bold
       +    hi FoldColumn ctermbg=green ctermfg=black cterm=NONE
       +    hi Folded ctermbg=green ctermfg=black cterm=NONE
       +    hi Function ctermbg=NONE ctermfg=magenta cterm=bold
       +    hi Identifier ctermbg=NONE ctermfg=darkmagenta cterm=bold
       +    hi IncSearch ctermbg=magenta ctermfg=black cterm=NONE
       +    hi Keyword ctermbg=NONE ctermfg=magenta cterm=bold
       +    hi LineNr ctermbg=NONE ctermfg=cyan cterm=NONE
       +    hi MatchParen ctermbg=blue ctermfg=cyan cterm=NONE
       +    hi ModeMsg ctermbg=NONE ctermfg=cyan cterm=bold
       +    hi MoreMsg ctermbg=NONE ctermfg=cyan cterm=bold
       +    hi NonText ctermbg=NONE ctermfg=magenta cterm=NONE
       +    hi Normal ctermbg=black ctermfg=cyan cterm=NONE
       +
       +    set background=dark
       +
       +    hi Operator ctermbg=NONE ctermfg=magenta cterm=bold
       +    hi Pmenu ctermbg=blue ctermfg=cyan cterm=NONE
       +    hi PmenuSbar ctermbg=blue ctermfg=NONE cterm=NONE
       +    hi PmenuSel ctermbg=darkmagenta ctermfg=cyan cterm=bold
       +    hi PmenuThumb ctermbg=cyan ctermfg=black cterm=NONE
       +    hi PreProc ctermbg=NONE ctermfg=darkmagenta cterm=bold
       +    hi Question ctermbg=NONE ctermfg=cyan cterm=NONE
       +    hi Search ctermbg=magenta ctermfg=black cterm=bold
       +    hi SignColumn ctermbg=green ctermfg=black cterm=NONE
       +    hi Special ctermbg=NONE ctermfg=darkmagenta cterm=NONE
       +    hi SpecialKey ctermbg=NONE ctermfg=green cterm=NONE
       +    hi SpellBad ctermbg=red ctermfg=black cterm=NONE
       +    hi SpellCap ctermbg=green ctermfg=black cterm=NONE
       +    hi Statement ctermbg=NONE ctermfg=green cterm=bold
       +    hi StatusLine ctermbg=blue ctermfg=cyan cterm=bold
       +    hi StatusLineNC ctermbg=darkmagenta ctermfg=magenta cterm=NONE
       +    hi StatusLineTerm ctermbg=blue ctermfg=cyan cterm=bold
       +    hi StatusLineTermNC ctermbg=darkmagenta ctermfg=magenta cterm=NONE
       +    hi String ctermbg=NONE ctermfg=darkyellow cterm=NONE
       +    hi TabLine ctermbg=blue ctermfg=cyan cterm=bold
       +    hi TabLineFill ctermbg=blue ctermfg=cyan cterm=bold
       +    hi TabLineSel ctermbg=darkmagenta ctermfg=cyan cterm=bold
       +    hi Title ctermbg=NONE ctermfg=darkyellow cterm=NONE
       +    hi Todo ctermbg=magenta ctermfg=black cterm=NONE
       +    hi ToolbarLine ctermbg=darkblue ctermfg=cyan cterm=NONE
       +    hi ToolbarButton ctermbg=blue ctermfg=cyan cterm=NONE
       +    hi Type ctermbg=NONE ctermfg=magenta cterm=bold
       +    hi Underlined ctermbg=NONE ctermfg=cyan cterm=underline
       +    hi VertSplit ctermbg=blue ctermfg=NONE cterm=NONE
       +    hi WarningMsg ctermbg=NONE ctermfg=red cterm=NONE
       +    hi WildMenu ctermbg=darkyellow ctermfg=black cterm=NONE
       +    hi htmlTagName ctermbg=NONE ctermfg=darkmagenta cterm=bold
       +endif
       +
       +hi link Number Constant
       +
       +let g:terminal_ansi_colors = [
       +        \ '#000b1e',
       +        \ '#800000',
       +        \ '#008000',
       +        \ '#f57800',
       +        \ '#000080',
       +        \ '#711c91',
       +        \ '#008080',
       +        \ '#808080',
       +        \ '#808080',
       +        \ '#ff0000',
       +        \ '#00ff00',
       +        \ '#ffff00',
       +        \ '#005faf',
       +        \ '#ea00d9',
       +        \ '#0abdc6',
       +        \ '#d7d7d5',
       +        \ ]
       +
       +" Generated with RNB (https://github.com/romainl/vim-rnb)
   DIR diff --git a/vim/.vim/pack/themes/start/dracula b/vim/.vim/pack/themes/start/dracula
       @@ -0,0 +1 @@
       +Subproject commit eb577d47b0cfc9191bf04c414b4042d5f1a980f8
   DIR diff --git a/vim/.vim/pack/themes/start/gruvbox b/vim/.vim/pack/themes/start/gruvbox
       @@ -0,0 +1 @@
       +Subproject commit bf2885a95efdad7bd5e4794dd0213917770d79b7
   DIR diff --git a/vim/.vimrc b/vim/.vimrc
       @@ -0,0 +1,63 @@
       +set nocompatible " must be first
       +set lazyredraw
       +set encoding=utf8
       +set history=1000
       +set autoread
       +
       +filetype plugin indent on
       +syntax enable
       +
       +" theme
       +set background=dark
       +
       +packadd! dracula
       +colorscheme dracula
       +
       +"packadd! gruvbox
       +"colorscheme gruvbox
       +
       +"colorscheme cyberpunk-neon
       +"set termguicolors
       +
       +set number
       +set ruler
       +set wildmenu
       +set showmode
       +set showmatch
       +set mat=1 " blink 1/10s
       +set mouse=a " enable
       +
       +set ignorecase
       +set smartcase
       +set incsearch
       +set hlsearch
       +set magic
       +
       +set shiftwidth=4
       +set tabstop=4
       +set noexpandtab " no comment
       +set autoindent
       +set smarttab
       +set smartindent
       +set copyindent
       +set preserveindent
       +
       +" fixes x11 clipboard
       +set clipboard=unnamedplus
       +
       +set textwidth=80
       +set nowrap
       +set cursorline
       +
       +" color 80 columns limit
       +set colorcolumn=80
       +highlight ColorColumn ctermbg=18
       +
       +" backspace/cursor keys wrap to previous/next line
       +set backspace=indent,eol,start
       +set whichwrap+=<,>,[,],h,l
       +
       +" highlight extra whitespace
       +highlight ExtraWhitespace ctermbg=red guibg=red
       +match ExtraWhitespace /\s\+$/
       +
   DIR diff --git a/zsh/.zshrc b/zsh/.zshrc
       @@ -0,0 +1,99 @@
       +setopt nobeep
       +setopt interactive_comments
       +setopt correct
       +setopt chase_links
       +setopt chase_dots
       +
       +# history
       +HISTSIZE=10000
       +SAVEHIST=10000
       +HISTFILE=~/.zsh_history
       +setopt append_history
       +setopt share_history
       +setopt extended_history
       +setopt histignoredups
       +setopt histignorealldups
       +setopt histignorespace
       +setopt hist_reduce_blanks
       +setopt inc_append_history
       +setopt hist_verify
       +
       +# completion
       +autoload -U compinit
       +compinit
       +setopt auto_menu
       +unsetopt menu_complete
       +setopt completealiases
       +zstyle ':completion::complete:*' use-cache 1
       +zstyle ":completion:*" menu select
       +zstyle ":completion:*" rehash true # complete new commands
       +zstyle ':completion:*' group-name '' # group results
       +zstyle ':completion:*' squeeze-slashes true # expand // to /
       +zstyle ':completion:*:*:*:*:descriptions' format '%F{green}-- %d --%f'
       +zstyle ':completion:*:messages' format ' %F{purple} -- %d --%f'
       +zstyle ':completion:*:warnings' format ' %F{red}-- no matches found --%f'
       +zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
       +zstyle ":completion:*:processes" command "ps -au$USER"
       +zstyle ":completion:*:processes-names" command "ps c -u ${USER} -o command | uniq"
       +
       +# fix keys in st
       +bindkey "^[[P" delete-char
       +bindkey  "^[[H" beginning-of-line
       +bindkey "^[[4~"  end-of-line
       +
       +# bash-like search
       +bindkey '^R' history-incremental-pattern-search-backward
       +
       +# up / down arrow search
       +autoload -U up-line-or-beginning-search
       +autoload -U down-line-or-beginning-search
       +zle -N up-line-or-beginning-search
       +zle -N down-line-or-beginning-search
       +bindkey "^[[A" up-line-or-beginning-search
       +bindkey "^[[B" down-line-or-beginning-search
       +
       +# exists helper
       +_exists() { (( $+commands[$1] )) }
       +
       +# convenience
       +alias mkdir="mkdir -p"
       +alias df="df -h"
       +alias du="du -h"
       +alias ..='cd ..'
       +alias ...='cd ../..'
       +_exists vim && alias vi="vim"
       +_exists doas && alias sudo="doas"
       +alias stopwatch="time cat"
       +
       +# global aliases
       +alias -g ~c="| wc -l"
       +alias -g ~n="> /dev/null 2>&1"
       +alias -g ~s="| curl -F 'sprunge=<-' http://sprunge.us"
       +
       +# env vars
       +export MANWIDTH=80
       +export LESSHISTFILE=-
       +_exists vim && export EDITOR="vim"
       +_exists less && export PAGER="less"
       +_exists brave-bin && export BROWSER="brave-bin"
       +_exists brave-browser && export BROWSER="brave-browser"
       +_exists systemctl && export SYSTEMD_PAGER=
       +
       +# deeply nested folders
       +function up {
       +        if [[ "$#" < 1 ]] ; then
       +                cd ..
       +        else
       +                CDSTR=""
       +                for i in {1..$1} ; do
       +                        CDSTR="../$CDSTR"
       +                done
       +                cd $CDSTR
       +        fi
       +}
       +
       +# starship prompt
       +_exists starship && eval "$(starship init zsh)"
       +
       +# undefine exists helper
       +unfunction _exists