aboutsummaryrefslogtreecommitdiff
path: root/.config
diff options
context:
space:
mode:
Diffstat (limited to '.config')
m---------.config/nvim0
-rw-r--r--.config/zsh/.zprofile5
-rw-r--r--.config/zsh/.zshenv155
-rw-r--r--.config/zsh/.zshrc341
4 files changed, 501 insertions, 0 deletions
diff --git a/.config/nvim b/.config/nvim
new file mode 160000
+Subproject e77a6ebb114af27a53503b475e3f91c01d9182c
diff --git a/.config/zsh/.zprofile b/.config/zsh/.zprofile
new file mode 100644
index 0000000..8ab0499
--- /dev/null
+++ b/.config/zsh/.zprofile
@@ -0,0 +1,5 @@
+if [[ "$(tty)" = "/dev/tty1" ]]; then
+ pgrep bspwm || startx "$XDG_CONFIG_HOME/X11/xinitrc"
+fi
+
+#eval "$(gh completion -s zsh)"
diff --git a/.config/zsh/.zshenv b/.config/zsh/.zshenv
new file mode 100644
index 0000000..abacc95
--- /dev/null
+++ b/.config/zsh/.zshenv
@@ -0,0 +1,155 @@
+
+#export XINITRC="$HOME/.config/X11/.xinitrc"
+#export INPUTRC="${XDG_CONFIG_HOME:-$HOME/.config}/X11/.inputrc"
+#export ZDOTDIR="${XDG_CONFIG_HOME:-$HOME/.config}/zsh"
+#export XAUTHORITY="$XDG_RUNTIME_DIR/.Xauthority" # This line will break some DMs.
+#export XINITRC="$XDG_CONFIG_HOME"/X11/xinitrc
+#export XAUTHORITY="$XDG_RUNTIME_DIR"/Xauthority
+
+# Path
+#export PATH="$PATH:${$(find ~/.local/bin ~/.local/share/npm/bin -type d -printf %p:)%%:}"
+export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local:$HOME/.local/bin:$HOME/.local/bin/scripts:$HOME/Scripts:$HOME/.local/bin/statusbar
+
+
+# Default Programs:
+export EDITOR="nvim"
+export VISUAL="nvim"
+export READER="zathura"
+export TERMINAL="alacritty"
+export COLORTERM="truecolor"
+export TERM="xterm-256color"
+export BROWSER="firefox"
+export OPENER="xdg-open"
+export PAGER="less"
+export WM="bspwm"
+export XDG_SESSION_TYPE=X11
+
+# XDG Paths:
+export XDG_CONFIG_HOME=${XDG_CONFIG_HOME:="$HOME/.config"}
+#export XDG_DATA_HOME=${XDG_DATA_HOME:="$HOME/.local/share"}
+export XDG_DATA_HOME="$HOME/.local/share"
+export XDG_CACHE_HOME=${XDG_CACHE_HOME:="$HOME/.cache"}
+export XINITRC="$HOME/.config/X11/.xinitrc"
+export INPUTRC="${XDG_CONFIG_HOME:-$HOME/.config}/X11/.inputrc"
+export ICEAUTHORITY="$XDG_CACHE_HOME"/.ICEauthority
+export ZDOTDIR="$XDG_CONFIG_HOME/zsh"
+export HISTFILE="$ZDOTDIR/.zhistory" # History filepath
+export HISTSIZE=1000000 # Maximum events for internal history
+export SAVEHIST=1000000 # Maximum events in history file
+export BANG_HIST # Treat the '!' character specially during expansion.
+export EXTENDED_HISTORY # Write the history file in the ":start:elapsed;command" format.
+export INC_APPEND_HISTORY # Write to the history file immediately, not when the shell exits.
+export SHARE_HISTORY # Share history between all sessions.
+export HIST_EXPIRE_DUPS_FIRST # Expire duplicate entries first when trimming history.
+export HIST_IGNORE_DUPS # Don't record an entry that was just recorded again.
+export HIST_IGNORE_ALL_DUPS # Delete old recorded entry if new entry is a duplicate.
+export HIST_FIND_NO_DUPS # Do not display a line previously found.
+export HIST_IGNORE_SPACE # Don't record an entry starting with a space.
+export HIST_SAVE_NO_DUPS # Don't write duplicate entries in the history file.
+export HIST_REDUCE_BLANKS # Remove superfluous blanks before recording entry.
+export HIST_VERIFY # Don't execute immediately upon history expansion.
+export HIST_BEEP # Beep when accessing nonexistent history.
+
+# Other XDG Paths:
+export NPM_CONFIG_USERCONFIG=$XDG_CONFIG_HOME/npm/npmrc
+export NVM_DIR="$XDG_DATA_HOME"/nvm
+export NODE_REPL_HISTORY="$XDG_DATA_HOME"/node_repl_history
+export ASPROOT="${XDG_CACHE_HOME:-$HOME/.cache}/asp"
+# fixing paths
+export XSERVERRC="$XDG_CONFIG_HOME"/X11/xserverrc
+#export GEM_PATH="$XDG_DATA_HOME/ruby/gems"
+#export GEM_SPEC_CACHE="$XDG_DATA_HOME/ruby/specs"
+#export GEM_HOME="$XDG_DATA_HOME/ruby/gems"
+#export GOPATH="$XDG_DATA_HOME"/go
+export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME"/java
+export GTK2_RC_FILES="$XDG_CONFIG_HOME"/gtk-2.0/gtkrc
+#export CARGO_HOME="$XDG_DATA_HOME"/cargo
+#export PATH=$CARGO_HOME/bin:$PATH
+export RIPGREP_CONFIG_PATH="$XDG_CONFIG_HOME/ripgrep/ripgreprc"
+#export WORKON_HOME="$XDG_DATA_HOME"/virtualenvs
+export WGETRC="$XDG_CONFIG_HOME"/wget/wgetrc
+export DOCKER_CONFIG="$XDG_CONFIG_HOME"/docker
+export IPYTHONDIR="$XDG_CONFIG_HOME"/jupyter, export JUPYTER_CONFIG_DIR="$XDG_CONFIG_HOME"/jupyter
+export CARGO_HOME=$HOME/.cargo
+export PATH="$HOME/.cargo/bin:$PATH"
+#export RUSTUP_HOME=$HOME/.cargo/bin
+## RUST
+#typeset -U path
+#path+=(~/.cargo/bin)
+#export RUST_SRC_PATH=$(rustc --print sysroot)/lib/rustlib/src/rust/src
+#export RUST_SRC_PATH=$HOME/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/src/rust/src
+#export GOPATH=$HOME/go
+#export GORACE=''
+#export KINDLEGEN_HOME=/Users/adben/Downloads/KindleGen_Mac_i386_v2_9
+#export GOROOT=$GO_HOME
+#export PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
+#export PATH=$PATH:$HOME/.local/bin # for stack - haskell
+#export PATH=$PATH:/usr/local/lib/ruby/gems/2.6.0/bin
+
+# xsession start script
+
+#export USERXSESSION="$XDG_CONFIG_HOME/X11/xsession"
+#export USERXSESSIONRC="$XDG_CONFIG_HOME/X11/xsessionrc"
+#export ALTUSERXSESSION="$XDG_CONFIG_HOME/X11/Xsession"
+#export ERRFILE="$XDG_CONFIG_HOME/X11/xsession-errors"
+
+# Doesn't seem to work
+#export ANDROID_SDK_HOME="$XDG_CONFIG_HOME"/android
+#export ANDROID_AVD_HOME="$XDG_DATA_HOME"/android
+#export ANDROID_EMULATOR_HOME="$XDG_DATA_HOME"/android
+#export ADB_VENDOR_KEY="$XDG_CONFIG_HOME"/android
+# Disable files
+#export LESSHISTFILE=-
+
+
+# Program settings
+#export MOZ_USE_XINPUT2="1" # Mozilla smooth scrolling/touchpads.
+
+
+#export tmux.conf=XDG_CONFIG_HOME/tmux/tmux.conf
+#export CARGO_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/cargo"
+#export GOPATH="${XDG_DATA_HOME:-$HOME/.local/share}/go"
+# Scaling
+#export QT_AUTO_SCREEN_SCALE_FACTOR=0
+#export QT_SCALE_FACTOR=1
+#export QT_SCREEN_SCALE_FACTORS="1;1;1"
+#export GDK_SCALE=1
+#export GDK_DPI_SCALE=1
+
+
+#export VIDEO="mpv"
+#export IMAGE="sxiv"
+
+#xbindkeys -f "$XDG_CONFIG_HOME"/xbindkeys/config
+# Path
+#path=("$HOME/scripts" "$HOME/scripts/alsa" "$HOME/scripts/dragon" "$HOME/scripts/lf" "$HOME/scripts/i3" "$HOME/scripts/pulse"
+# "$HOME/scripts/polybar" "$HOME/scripts/bspwm" "$HOME/scripts/lemonbar" "$HOME/scripts/transmission"
+# "$HOME/bin/tweetdeck-linux-x64" "$XDG_DATA_HOME/ruby/gems/bin" "$HOME/go/bin" "$HOME/.local/share/cargo/bin"
+# "$XDG_DATA_HOME/npm/bin" "$HOME/.local/bin" "$path[@]")
+#export PATH
+
+#typeset -U PATH path
+export GTK_IM_MODULE='fcitx'
+export QT_IM_MODULE='fcitx'
+export SDL_IM_MODULE='fcitx'
+export XMODIFIERS='@im=fcitx'
+
+
+
+
+# Start blinking
+#export LESS_TERMCAP_mb=$(tput bold; tput setaf 2) # green
+# Start bold
+#export LESS_TERMCAP_md=$(tput bold; tput setaf 2) # green
+# Start stand out
+#export LESS_TERMCAP_so=$(tput bold; tput setaf 3) # yellow
+# End standout
+#export LESS_TERMCAP_se=$(tput rmso; tput sgr0)
+# Start underline
+#export LESS_TERMCAP_us=$(tput smul; tput bold; tput setaf 1) # red
+# End Underline
+#export LESS_TERMCAP_ue=$(tput sgr0)
+# End bold, blinking, standout, underline
+#export LESS_TERMCAP_me=$(tput sgr0).
+#. "/home/sxrdusr/.local/share/cargo/env"
+. "$HOME/.cargo/env"
diff --git a/.config/zsh/.zshrc b/.config/zsh/.zshrc
new file mode 100644
index 0000000..5eb8f1c
--- /dev/null
+++ b/.config/zsh/.zshrc
@@ -0,0 +1,341 @@
+export PATH=$HOME/bin:/usr/local/bin:/sbin:/usr/sbin:$PATH
+#export PYTHONPATH=/usr/local/bin/python3
+#if [[ ! $(tmux list-sessions) ]]; then
+# tmux
+#fi
+
+# If not running interactively, don't do anything
+[[ $- != *i* ]] && return
+
+# Allow CTRL+D to exit zsh with partial command line (non empty line)
+exit_zsh() { exit }
+zle -N exit_zsh
+bindkey '^D' exit_zsh
+
+# Some other useful functionalities
+setopt autocd # Automatically cd into typed directory.
+stty intr '^q' # free Ctrl+C for copy use Ctrl+q instead
+stty lnext '^-' # free Ctrl+V for paste use ^- instead
+stty stop undef # Disable ctrl-s to freeze terminal.
+stty start undef
+
+export PATH="$HOME/.local/bin:$PATH"
+export VIRTUAL_ENV_DISABLE_PROMPT=true
+#unsetopt BEEP
+# Enable various options
+setopt interactive_comments beep extendedglob nomatch notify completeinword prompt_subst
+
+########## Prompt(s) ##########
+
+# Enable colors and change prompt:
+autoload -U colors && colors # Load colors
+#autoload -U promptinit && promptinit
+#prompt fade red
+# Prompt with Vi insert-mode/normal-mode and blinking '$', note blinking '$' only works on some terminals.
+terminfo_down_sc=$terminfo[cud1]$terminfo[cuu1]$terminfo[sc]$terminfo[cud1]
+
+function insert-mode () { echo "-- INSERT --" }
+function normal-mode () { echo "-- NORMAL --" }
+
+
+git_branch_test_color() {
+ local ref=$(git symbolic-ref --short HEAD 2> /dev/null)
+ if [ -n "${ref}" ]; then
+ if [ -n "$(git status --porcelain)" ]; then
+ local gitstatuscolor='%F{196}'
+ else
+ local gitstatuscolor='%F{82}'
+ fi
+ echo "${gitstatuscolor}${ref}"
+ else
+ echo ""
+ fi
+}
+#PROMPT='%9c$(git_branch_test_color)%F{none} %# '
+
+#echo "${gitstatuscolor} (${ref})"
+
+autoload -Uz add-zsh-hook vcs_info
+zstyle ':vcs_info:*' stagedstr ' +%F{15}staged%f'
+zstyle ':vcs_info:*' unstagedstr ' -%F{15}unstaged%f'
+zstyle ':vcs_info:*' check-for-changes true
+zstyle ':vcs_info:*' actionformats '%F{5}%F{2}%b%F{3}|%F{1}%a%F{5}%f '
+zstyle ':vcs_info:*' formats \
+ '%F{208} '$'\uE0A0'' %f$(git_branch_test_color)%f%F{76}%c%F{3}%u%f '
+ #'%{-[%F{226}'$'\uE0A0''%f%{%F{76}%b%f%}]%} %F{76}%c%F{3}%u%f'
+ #'%F{226}'$'\uE0A0''%f%{(%F{76}%b%f)%} %F{76}%c%F{3}%u%f'
+zstyle ':vcs_info:git*+set-message:*' hooks git-untracked
+zstyle ':vcs_info:*' enable git
++vi-git-untracked() {
+ if [[ $(git rev-parse --is-inside-work-tree 2> /dev/null) == 'true' ]] && \
+ [[ $(git ls-files --other --directory --exclude-standard | sed q | wc -l | tr -d ' ') == 1 ]] ; then
+ hook_com[unstaged]+='%F{196} !%f%F{15}untracked%f'
+fi
+}
+#hook_com[unstaged]+=' %F{15}(%f%F{196}!%f%F{15})untracked%f'
+
+
+#RPROMPT='%F{5}[%F{2}%n%F{5}] %F{3}%3~ ${vcs_info_msg_0_} %f%# '
+#add-zsh-hook
+function my_precmd () {
+ vcs_info
+ PS1="%{┌─[%F{145}%n%f] %F{39}%0~%f%} ${vcs_info_msg_0_}
+ %{%{$terminfo_down_sc$(insert-mode)$terminfo[rc]%}%{└─%{["%{$(tput setaf 226)%}""%{$(tput blink)%}"%{$%}"%{$(tput sgr0)%}"%{%G]%}%}%}%}"
+}
+
+function set-prompt () {
+ case ${KEYMAP} in
+ (vicmd) VI_MODE="$(normal-mode)" ;;
+ (main|viins) VI_MODE="$(insert-mode)" ;;
+ (*) VI_MODE="$(insert-mode)" ;;
+ esac
+ PS1="%{┌─[%F{145}%n%f] %F{39}%0~%f%} ${vcs_info_msg_0_}
+ %{%{$terminfo_down_sc$VI_MODE$terminfo[rc]%}%{└─%{["%{$(tput setaf 226)%}""%{$(tput blink)%}"%{$%}"%{$(tput sgr0)%}"%{%G]%}%}%}%}"
+}
+add-zsh-hook precmd my_precmd
+RPROMPT='%(?..[%F{196}%?%f] )'
+#RPROMPT="%K{172}${vcs_info_msg_0_}%k%(?..[%F{196}%?%f] )"
+
+#autoload -Uz vcs_info
+#zstyle ':vcs_info:*' stagedstr 'M'
+#zstyle ':vcs_info:*' unstagedstr 'M'
+#zstyle ':vcs_info:*' check-for-changes true
+#zstyle ':vcs_info:*' actionformats '%{(%F{76}%b%F{3}|%F{1}%a%%f%}) '
+#zstyle ':vcs_info:*' formats \
+# '%{(%F{76}%b%f)%} %F{76}%c%F{3}%u%f'
+#zstyle ':vcs_info:git*+set-message:*' hooks git-untracked
+#zstyle ':vcs_info:*' enable git
+#+vi-git-untracked() {
+# if [[ $(git rev-parse --is-inside-work-tree 2> /dev/null) == 'true' ]] && \
+# [[ $(git ls-files --other --directory --exclude-standard | sed q | wc -l | tr -d ' ') == 1 ]] ; then
+# hook_com[unstaged]+='%F{1}??%f'
+#fi
+#}
+#
+#
+##RPROMPT='%F{5}[%F{2}%n%F{5}] %F{3}%3~ ${vcs_info_msg_0_} %f%# '
+#precmd () {
+# print -rP "
+#"
+# #PS1="┌─[%F{48}%n%f]-[%F{154}%B%m%b%f]-[%F{202}%#%f%F{39}%0~%f]
+# PS1="%{┌─[%F{48}%n%f] %F{119}%#%f%F{119}%0~%f%}] ${vcs_info_msg_0_}
+# %{%{$terminfo_down_sc$(insert-mode)$terminfo[rc]%}%{└─%{["%{$(tput setaf 226)%}""%{$(tput blink)%}"%{$%}"%{$(tput sgr0)%}"%{%G]%}%}%}%}"
+#} && { vcs_info }
+#
+#function set-prompt () {
+# case ${KEYMAP} in
+# (vicmd) VI_MODE="$(normal-mode)" ;;
+# (main|viins) VI_MODE="$(insert-mode)" ;;
+# (*) VI_MODE="$(insert-mode)" ;;
+# esac
+# PS1="%{┌─[%F{48}%n%f] %F{119}%#%f%F{119}%0~%f%} ${vcs_info_msg_0_}
+# %{%{$terminfo_down_sc$VI_MODE$terminfo[rc]%}%{└─%{["%{$(tput setaf 226)%}""%{$(tput blink)%}"%{$%}"%{$(tput sgr0)%}"%{%G]%}%}%}%}"
+#}
+#PS1="%{┌─[%F{48}%n%f]-[%F{48}%B%m%b%f]-[%F{48}%#%f%F{48}%0~%f]%}
+function zle-line-init zle-keymap-select {
+ set-prompt
+ zle reset-prompt
+ case $KEYMAP in
+ vicmd) echo -ne '\e[1 q';; # block
+ viins|main) echo -ne '\e[5 q';; # beam
+ esac
+}
+
+preexec () { print -rn -- $terminfo[el]; echo -ne '\e[5 q' ; }
+
+zle -N zle-line-init
+zle -N zle-keymap-select
+
+# Load version control information
+#autoload -Uz vcs_info
+#precmd() { vcs_info }
+
+# Format the vcs_info_msg_0_ variable
+#zstyle ':vcs_info:git:*' formats 'on branch %b'
+
+# Set up the right-side prompt (with git branch name) and throw conditional error Code
+
+
+## function to return current branch name while suppressing errors.
+#function git_branch() {
+# branch=$(git symbolic-ref HEAD 2> /dev/null | awk 'BEGIN{FS="/"} {print $NF}')
+# if [[ $branch == "" ]]; then
+# :
+# else
+# echo ' (' $branch ') '
+# fi
+#}
+
+#setopt prompt_subst # allow command substitution inside the prompt
+#PROMPT='%~ $(git_branch) >' # set the prompt value
+
+#autoload -Uz add-zsh-hook vcs_info
+#setopt prompt_subst
+#add-zsh-hook precmd my_precmd
+#
+#zstyle ':vcs_info:git:*' formats '%b'
+#
+#function my_precmd {
+# local theUser='%B%F{39}%n%f%b'
+# local theHost='%B%F{white}@%m%f%b'
+# local git1="%F{220}~%f$(git_prompt_info)"
+# local rcAndArrow='%(?.%F{white}.%B%F{red}[%?])»%f%b'
+#
+# vcs_info
+# local git2color='cyan'
+# [[ "${vcs_info_msg_0_}" == "master" ]] && git2color='196'
+# local git2="||%F{${git2color}}${vcs_info_msg_0_}%f||"
+#
+# psvar[1]="${theUser}${theHost} ${git1} ${rcAndArrow} "
+# psvar[2]="${git2}"
+#}
+#
+#PROMPT='${psvar[1]}'
+#RPROMPT='${psvar[2]}'
+
+
+
+########## Auto-completion ##########
+
+#autoload -U promptinit && promptinit
+autoload -Uz compinit && compinit
+
+# Accept completion with <tab> or Ctrl+i and go to next/previous suggestions with Vi like keys: Ctrl+n/p
+zmodload -i zsh/complist
+accept-and-complete-next-history() {
+ zle expand-or-complete-prefix
+}
+
+zle -N accept-and-complete-next-history
+bindkey -M menuselect '^i' accept-and-complete-next-history
+bindkey '^n' expand-or-complete
+bindkey '^p' reverse-menu-complete
+zstyle ':completion:*' menu select=1
+
+
+
+########## Vi mode ##########
+
+export KEYTIMEOUT=25
+export EDITOR=$VISUAL
+export VISUAL=nvim
+bindkey -M viins '^?' backward-delete-char
+bindkey -M viins '^[[3~' delete-char
+bindkey -M vicmd '^[[3~' delete-char
+bindkey -r '\e/'
+bindkey -M viins 'jj' vi-cmd-mode
+bindkey "^W" backward-kill-word
+bindkey "^H" backward-delete-char # Control-h also deletes the previous char
+bindkey "^U" backward-kill-line
+
+autoload -U edit-command-line
+zle -N edit-command-line
+bindkey '^e' edit-command-line
+
+########## Useful Commands/Alias ##########
+
+# Enter directory and list contents
+cd() {
+ if [ -n "$1" ]; then
+ builtin cd "$@" && ls -pvA --color=auto --group-directories-first
+ else
+ builtin cd ~ && ls -pvA --color=auto --group-directories-first
+ fi
+}
+
+# Back up a file. Usage "backupthis <filename>"
+backupthis() {
+ cp -riv $1 ${1}-$(date +%Y%m%d%H%M).backup;
+}
+
+# Let FZF use ripgrep by default
+if type rg &> /dev/null; then
+ export FZF_DEFAULT_COMMAND='rg --files'
+ export FZF_DEFAULT_OPTS='-m --height 50% --border'
+fi
+# Setup fzf
+# ---------
+if [[ ! "$PATH" == */root/.local/share/nvim/plugged/fzf/bin* ]]; then
+ export PATH="${PATH:+${PATH}:}/root/.local/share/nvim/plugged/fzf/bin"
+fi
+
+# Spawn a clone of current terminal
+putstate () {
+ declare +x >~/environment.tmp
+ declare -x >>~/environment.tmp
+ echo cd "$PWD" >>~/environment.tmp
+}
+
+getstate () {
+ . ~/environment.tmp
+}
+
+# cd using "up n" as a command up as many directories, example "up 3"
+up() {
+ # default parameter to 1 if non provided
+ declare -i d=${@:-1}
+ # ensure given parameter is non-negative. Print error and return if it is
+ (( $d < 0 )) && (>&2 echo "up: Error: negative value provided") && return 1;
+ # remove last d directories from pwd, append "/" in case result is empty
+ cd "$(pwd | sed -E 's;(/[^/]*){0,'$d'}$;;')/";
+}
+
+# More history for cd and use "cd -TAB"
+setopt AUTO_PUSHD # pushes the old directory onto the stack
+zstyle ':completion:*:directory-stack' list-colors '=(#b) #([0-9]#)*( *)==95=38;5;12'
+
+# List upto last 10 visited directories using "d" and quickly cd into any specific one
+# using just a number from "0" to "9"
+alias d="dirs -v | head -10"
+alias 0="cd +0"
+alias 1="cd +1"
+alias 2="cd +2"
+alias 3="cd +3"
+alias 4="cd +4"
+alias 5="cd +5"
+alias 6="cd +6"
+alias 7="cd +7"
+alias 8="cd +8"
+alias 9="cd +9"
+
+# Allow nnn filemanager to cd on quit
+nnn() {
+ declare -x +g NNN_TMPFILE=$(mktemp --tmpdir $0.XXXX)
+ trap "rm -f $NNN_TMPFILE" EXIT
+ =nnn $@
+ [ -s $NNN_TMPFILE ] && source $NNN_TMPFILE
+}
+
+# Use lf to switch directories and bind it to ctrl-o
+#lfcd () {
+# tmp="$(mktemp)"
+# lf -last-dir-path="$tmp" "$@"
+# if [ -f "$tmp" ]; then
+# dir="$(cat "$tmp")"
+# rm -f "$tmp" >/dev/null
+# [ -d "$dir" ] && [ "$dir" != "$(pwd)" ] && cd "$dir"
+# fi
+#}
+#bindkey -s '^o' 'lfcd\n'
+#bindkey -s '^a' 'bc -lq\n'
+#bindkey -s '^f' 'cd "$(dirname "$(fzf)")"\n'
+
+alias config='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME'
+alias vi='nvim'
+alias nv='nvim'
+
+########## Source Plugins, should be last ##########
+
+# load zsh-vi-mode
+#source /usr/share/zsh/plugins/zsh-vi-mode/zsh-vi-mode.plugin.zsh
+# Load zsh-syntax-highlighting
+source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh 2>/dev/null
+# Load fzf keybindings and completion
+source /usr/share/fzf/key-bindings.zsh
+source /usr/share/fzf/completion.zsh
+source /usr/share/fzf-marks/fzf-marks.plugin.zsh 2>/dev/null
+# Suggest aliases for commands
+source /usr/share/zsh/plugins/zsh-you-should-use/you-should-use.plugin.zsh 2>/dev/null
+# Load fish like auto suggestions
+source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.plugin.zsh
+source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh