summaryrefslogtreecommitdiff
path: root/user/zsh
diff options
context:
space:
mode:
authorMartin Fischer <martin@push-f.com>2024-11-29 08:54:33 +0100
committerMartin Fischer <martin@push-f.com>2024-12-11 08:37:52 +0100
commitb3e73f8b5d94405e2f0fce52e8d219e37e54791d (patch)
tree7d1afa60772c8588a421bf9cd28a159d239222fe /user/zsh
parent563c3eaa9c00cc8acc9835e3ec456793fe49e0ec (diff)
add zsh
Diffstat (limited to 'user/zsh')
-rw-r--r--user/zsh/.zshrc69
1 files changed, 69 insertions, 0 deletions
diff --git a/user/zsh/.zshrc b/user/zsh/.zshrc
new file mode 100644
index 0000000..624cb33
--- /dev/null
+++ b/user/zsh/.zshrc
@@ -0,0 +1,69 @@
+# This is my ZSH config file. I'm using ZSH over Bash
+# because it has better autocompletion.
+
+## Key bindings
+# vi mode
+bindkey -v
+# default in Bash
+bindkey "^R" history-incremental-search-backward
+
+## Options
+setopt autocd
+setopt nomatch
+
+## Functions
+function ls() {
+ # Hide the mess in the home directory by default.
+ if [[ $PWD == $HOME ]]; then
+ command ls "$@"
+ else
+ command ls --almost-all "$@"
+ fi
+}
+
+## Aliases
+alias ls='ls --color=auto --group-directories-first' # see also ls function
+
+## Shell variables
+PS1='%F{magenta}'
+ PS1+='%n' # username
+PS1+='%f'
+PS1+='@'
+PS1+='%m' # hostname
+PS1+=' '
+PS1+='%B'
+ PS1+='%40<..<' # truncate (40 chars, indicate with ..)
+ PS1+='%~' # current directory
+ PS1+='%<<'
+PS1+='%b'
+PS1+=' '
+PS1+='%#' # `#` if the shell runs with privileges else `%`
+PS1+=' '
+
+HISTSIZE=1000000000
+SAVEHIST=1000000000
+
+## Environment variables
+export XDG_CACHE_HOME=$HOME/.cache
+export XDG_CONFIG_HOME=$HOME/.config
+
+## Completion
+autoload -Uz compinit
+[ -d "$XDG_CACHE_HOME"/zsh ] || mkdir -p "$XDG_CACHE_HOME"/zsh
+compinit -d "$XDG_CACHE_HOME"/zsh/zcompdump-$ZSH_VERSION
+
+# Terminal emulator specifics
+if [ $TERM = foot ]; then
+ # Enable spawning of new terminal instances in the current working directory
+ function osc7-pwd() {
+ emulate -L zsh # also sets localoptions for us
+ setopt extendedglob
+ local LC_ALL=C
+ printf '\e]7;file://%s%s\e\' $HOST ${PWD//(#m)([^@-Za-z&-;_~])/%${(l:2::0:)$(([##16]#MATCH))}}
+ }
+
+ function chpwd-osc7-pwd() {
+ (( ZSH_SUBSHELL )) || osc7-pwd
+ }
+ add-zsh-hook -Uz chpwd chpwd-osc7-pwd
+fi