158 lines
4.6 KiB
Bash
158 lines
4.6 KiB
Bash
# 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
|
|
|
|
# Lines configured by zsh-newuser-install
|
|
HISTFILE=~/.histfile
|
|
HISTSIZE=1000
|
|
SAVEHIST=1000
|
|
setopt autocd extendedglob nomatch notify
|
|
unsetopt beep
|
|
#bindkey -v
|
|
set -o emacs
|
|
# End of lines configured by zsh-newuser-install
|
|
# The following lines were added by compinstall
|
|
zstyle :compinstall filename '/home/arch/.zshrc'
|
|
|
|
autoload -Uz compinit
|
|
compinit
|
|
# End of lines added by compinstall
|
|
|
|
source $HOME/.terminal_aliases
|
|
source /usr/share/zsh-theme-powerlevel10k/powerlevel10k.zsh-theme
|
|
|
|
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
|
|
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
|
|
|
|
# set path to include users private bin if it exists
|
|
if [ -d $HOME/.local/bin ] ; then
|
|
PATH="$HOME/.local/bin:$PATH"
|
|
fi
|
|
|
|
|
|
# key bindings
|
|
# create a zkbd compatible hash;
|
|
# to add other keys to this hash, see: man 5 terminfo
|
|
typeset -g -A key
|
|
|
|
key[Home]="${terminfo[khome]}"
|
|
key[End]="${terminfo[kend]}"
|
|
key[Insert]="${terminfo[kich1]}"
|
|
key[Backspace]="${terminfo[kbs]}"
|
|
key[Delete]="${terminfo[kdch1]}"
|
|
key[Up]="${terminfo[kcuu1]}"
|
|
key[Down]="${terminfo[kcud1]}"
|
|
key[Left]="${terminfo[kcub1]}"
|
|
key[Right]="${terminfo[kcuf1]}"
|
|
key[PageUp]="${terminfo[kpp]}"
|
|
key[PageDown]="${terminfo[knp]}"
|
|
key[Shift-Tab]="${terminfo[kcbt]}"
|
|
|
|
# setup key accordingly
|
|
[[ -n "${key[Home]}" ]] && bindkey -- "${key[Home]}" beginning-of-line
|
|
[[ -n "${key[End]}" ]] && bindkey -- "${key[End]}" end-of-line
|
|
[[ -n "${key[Insert]}" ]] && bindkey -- "${key[Insert]}" overwrite-mode
|
|
[[ -n "${key[Backspace]}" ]] && bindkey -- "${key[Backspace]}" backward-delete-char
|
|
[[ -n "${key[Delete]}" ]] && bindkey -- "${key[Delete]}" delete-char
|
|
[[ -n "${key[Up]}" ]] && bindkey -- "${key[Up]}" up-line-or-history
|
|
[[ -n "${key[Down]}" ]] && bindkey -- "${key[Down]}" down-line-or-history
|
|
[[ -n "${key[Left]}" ]] && bindkey -- "${key[Left]}" backward-char
|
|
[[ -n "${key[Right]}" ]] && bindkey -- "${key[Right]}" forward-char
|
|
[[ -n "${key[PageUp]}" ]] && bindkey -- "${key[PageUp]}" beginning-of-buffer-or-history
|
|
[[ -n "${key[PageDown]}" ]] && bindkey -- "${key[PageDown]}" end-of-buffer-or-history
|
|
[[ -n "${key[Shift-Tab]}" ]] && bindkey -- "${key[Shift-Tab]}" reverse-menu-complete
|
|
|
|
# Finally, make sure the terminal is in application mode, when zle is
|
|
# active. Only then are the values from $terminfo valid.
|
|
if (( ${+terminfo[smkx]} && ${+terminfo[rmkx]} )); then
|
|
autoload -Uz add-zle-hook-widget
|
|
function zle_application_mode_start { echoti smkx }
|
|
function zle_application_mode_stop { echoti rmkx }
|
|
add-zle-hook-widget -Uz zle-line-init zle_application_mode_start
|
|
add-zle-hook-widget -Uz zle-line-finish zle_application_mode_stop
|
|
fi
|
|
|
|
|
|
key[Control-Left]="${terminfo[kLFT5]}"
|
|
key[Control-Right]="${terminfo[kRIT5]}"
|
|
|
|
[[ -n "${key[Control-Left]}" ]] && bindkey -- "${key[Control-Left]}" backward-word
|
|
[[ -n "${key[Control-Right]}" ]] && bindkey -- "${key[Control-Right]}" forward-word
|
|
|
|
|
|
function zle-line-init {
|
|
marking=0
|
|
}
|
|
zle -N zle-line-init
|
|
|
|
function select-char-right {
|
|
if (( $marking != 1 ))
|
|
then
|
|
marking=1
|
|
zle set-mark-command
|
|
fi
|
|
zle .forward-char
|
|
}
|
|
zle -N select-char-right
|
|
|
|
function select-char-left {
|
|
if (( $marking != 1 ))
|
|
then
|
|
marking=1
|
|
zle set-mark-command
|
|
fi
|
|
zle .backward-char
|
|
}
|
|
zle -N select-char-left
|
|
|
|
function forward-char {
|
|
if (( $marking == 1 ))
|
|
then
|
|
marking=0
|
|
NUMERIC=-1 zle set-mark-command
|
|
fi
|
|
zle .forward-char
|
|
}
|
|
zle -N forward-char
|
|
|
|
function backward-char {
|
|
if (( $marking == 1 ))
|
|
then
|
|
marking=0
|
|
NUMERIC=-1 zle set-mark-command
|
|
fi
|
|
zle .backward-char
|
|
}
|
|
zle -N backward-char
|
|
|
|
function delete-char {
|
|
if (( $marking == 1 ))
|
|
then
|
|
zle kill-region
|
|
marking=0
|
|
else
|
|
zle .delete-char
|
|
fi
|
|
}
|
|
zle -N delete-char
|
|
|
|
bindkey '6D' select-word-left ## not working yet
|
|
bindkey '6C' select-word-right ## not working yet
|
|
bindkey '2D' select-char-left # assuming xterm
|
|
bindkey '2C' select-char-right # assuming xterm
|
|
bindkey '5D' backward-word
|
|
bindkey '5C' forward-word
|
|
bindkey '^[[3~' delete-char
|
|
|
|
powerline-config tmux setup
|
|
|
|
alias vim=nvim
|
|
alias sudo='sudo '
|
|
|
|
# add the custom functions from the .custom_functions file
|
|
custom_func_dir=$HOME/.scripts
|
|
for f in $custom_func_dir/*; do source $f; done
|