diff options
author | Patryk Niedźwiedziński <pniedzwiedzinski19@gmail.com> | 2020-12-14 08:59:26 +0100 |
---|---|---|
committer | Patryk Niedźwiedziński <pniedzwiedzinski19@gmail.com> | 2020-12-14 08:59:26 +0100 |
commit | 2c628011e1a4389948491e0ed8903e03bdf45c31 (patch) | |
tree | ce049e4cc22d7279b0013d8953df1af40ed05e93 /machines | |
parent | fb94b8f1860ba09d892ce7a85e6b90ac103ab410 (diff) | |
download | dots-2c628011e1a4389948491e0ed8903e03bdf45c31.tar.gz dots-2c628011e1a4389948491e0ed8903e03bdf45c31.zip |
Add zsh config
Diffstat (limited to 'machines')
-rwxr-xr-x | machines/base.nix | 96 |
1 files changed, 95 insertions, 1 deletions
diff --git a/machines/base.nix b/machines/base.nix index e56c663..0d204b3 100755 --- a/machines/base.nix +++ b/machines/base.nix @@ -1,11 +1,12 @@ ## Base setup, absolute minimum -{ pkgs, ... }: +{ pkgs, config, ... }: { imports = [ ../modules/nur.nix ../users/pn.nix + ../modules/internet.nix ]; boot.cleanTmpDir = true; @@ -18,6 +19,14 @@ console.font = "${pkgs.terminus_font}/share/consolefonts/ter-v22n"; + environment.shellAliases = { + gs = "git status"; + gc = "git commit"; + ga = "git add"; + gl = "git log"; + gd = "git diff"; + }; + ## === XDG === environment.variables = { XDG_CONFIG_HOME = "$HOME/.config"; @@ -52,6 +61,91 @@ histFile = "$XDG_DATA_HOME/zsh/history"; syntaxHighlighting.enable = true; + + promptInit = '' + autoload -U colors && colors + PS1="%B%{$fg[red]%}[%{$fg[yellow]%}%n%{$fg[green]%}@%{$fg[blue]%}%M %{$fg[magenta]%}%~%{$fg[red]%}]%{$reset_color%}$%b " + ''; + + interactiveShellInit = '' + setopt autocd # Automatically cd into typed directory. + stty stop undef # Disable ctrl-s to freeze terminal. + setopt interactive_comments + + # History in cache directory: + HISTSIZE=10000000 + SAVEHIST=10000000 + + # Load aliases and shortcuts if existent. + [ -f "''\${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc" ] && source "''\${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc" + [ -f "''\${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc" ] && source "''\${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc" + [ -f "''\${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc" ] && source "''\${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc" + + # Basic auto/tab complete: + autoload -U compinit + zstyle ':completion:*' menu select + zmodload zsh/complist + compinit + _comp_options+=(globdots) # Include hidden files. + + # vi mode + bindkey -v + export KEYTIMEOUT=1 + + # Use vim keys in tab complete menu: + bindkey -M menuselect 'h' vi-backward-char + bindkey -M menuselect 'k' vi-up-line-or-history + bindkey -M menuselect 'l' vi-forward-char + bindkey -M menuselect 'j' vi-down-line-or-history + bindkey '^R' history-incremental-search-backward + bindkey -v '^?' backward-delete-char + + # Change cursor shape for different vi modes. + function zle-keymap-select { + if [[ ''\${KEYMAP} == vicmd ]] || + [[ $1 = 'block' ]]; then + echo -ne '\e[1 q' + elif [[ ''\${KEYMAP} == main ]] || + [[ ''\${KEYMAP} == viins ]] || + [[ ''\${KEYMAP} = "" ]] || + [[ $1 = 'beam' ]]; then + echo -ne '\e[5 q' + fi + } + zle -N zle-keymap-select + zle-line-init() { + zle -K viins # initiate `vi insert` as keymap (can be removed if `bindkey -V` has been set elsewhere) + echo -ne "\e[5 q" + } + zle -N zle-line-init + echo -ne '\e[5 q' # Use beam shape cursor on startup. + preexec() { echo -ne '\e[5 q' ;} # Use beam shape cursor for each new prompt. + + # 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' + + bindkey '^[[P' delete-char + + # Edit line in vim with ctrl-e: + autoload edit-command-line; zle -N edit-command-line + bindkey '^e' edit-command-line + ''; + + + }; } |