vim, zsh
This commit is contained in:
7
modules/vim.nix
Normal file
7
modules/vim.nix
Normal file
@@ -0,0 +1,7 @@
|
||||
{ lib, pkgs, ... }:
|
||||
{
|
||||
environment.variables.EDITOR = lib.getExe pkgs.vim-kmein;
|
||||
environment.shellAliases.vi = "nvim";
|
||||
environment.shellAliases.vim = "nvim";
|
||||
environment.shellAliases.view = "nvim -R";
|
||||
}
|
||||
94
modules/zsh.nix
Normal file
94
modules/zsh.nix
Normal file
@@ -0,0 +1,94 @@
|
||||
{ pkgs, config, ... }:
|
||||
let
|
||||
promptColours.success = "cyan";
|
||||
promptColours.failure = "red";
|
||||
in
|
||||
{
|
||||
programs.zsh =
|
||||
let
|
||||
zsh-completions = pkgs.fetchFromGitHub {
|
||||
owner = "zsh-users";
|
||||
repo = "zsh-completions";
|
||||
rev = "cf565254e26bb7ce03f51889e9a29953b955b1fb";
|
||||
sha256 = "1yf4rz99acdsiy0y1v3bm65xvs2m0sl92ysz0rnnrlbd5amn283l";
|
||||
};
|
||||
in
|
||||
{
|
||||
enable = true;
|
||||
enableCompletion = true;
|
||||
autosuggestions.enable = true;
|
||||
syntaxHighlighting.enable = true;
|
||||
syntaxHighlighting.highlighters = [
|
||||
"main"
|
||||
"brackets"
|
||||
"pattern"
|
||||
"line"
|
||||
];
|
||||
interactiveShellInit = ''
|
||||
setopt INTERACTIVE_COMMENTS CORRECT
|
||||
setopt MULTIOS
|
||||
setopt AUTO_NAME_DIRS
|
||||
setopt AUTOCD CDABLE_VARS
|
||||
setopt HIST_IGNORE_ALL_DUPS
|
||||
setopt VI
|
||||
setopt AUTO_MENU
|
||||
setopt COMPLETE_IN_WORD
|
||||
setopt ALWAYS_TO_END
|
||||
unsetopt NOMATCH
|
||||
unsetopt MENU_COMPLETE
|
||||
|
||||
zstyle ':completion:*:*:*:*:*' menu select
|
||||
zstyle ':completion:*' matcher-list 'm:{a-zA-Z-_}={A-Za-z_-}' 'r:|=*' 'l:|=* r:|=*'
|
||||
zstyle ':completion:*' special-dirs true
|
||||
zstyle ':completion:*' list-colors \'\'
|
||||
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;34=0=01'
|
||||
zstyle ':completion:*:*:*:*:processes' command "ps -u $USER -o pid,user,comm -w -w"
|
||||
zstyle ':completion:*:cd:*' tag-order local-directories directory-stack path-directories
|
||||
|
||||
export KEYTIMEOUT=1
|
||||
|
||||
hash -d nixos=/etc/nixos niveum=${config.users.users.me.home}/sync/src/niveum
|
||||
|
||||
autoload -U zmv run-help edit-command-line
|
||||
|
||||
fpath=(${zsh-completions}/src $fpath)
|
||||
'';
|
||||
promptInit = ''
|
||||
autoload -Uz vcs_info
|
||||
zstyle ':vcs_info:*' enable git
|
||||
zstyle ':vcs_info:*' check-for-changes true
|
||||
zstyle ':vcs_info:*' stagedstr '%F{green}+%f'
|
||||
zstyle ':vcs_info:*' unstagedstr '%F{red}~%f'
|
||||
zstyle ':vcs_info:*' use-prompt-escapes true
|
||||
zstyle ':vcs_info:*' formats "%c%u%F{cyan}%b%f"
|
||||
zstyle ':vcs_info:*' actionformats "(%a) %c%u%F{cyan}%b%f"
|
||||
|
||||
precmd () {
|
||||
vcs_info
|
||||
if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ] || [ -n "$SSH_CONNECTION" ]; then
|
||||
RPROMPT="$(hostname)"
|
||||
else
|
||||
RPROMPT="$vcs_info_msg_0_"
|
||||
fi
|
||||
if [[ -n $IN_NIX_SHELL ]]; then
|
||||
PROMPT='%B%~%b %(?.%F{${promptColours.success}}.%F{${promptColours.failure}})λ%f '
|
||||
else
|
||||
PROMPT='%B%~%b %(?.%F{${promptColours.success}}.%F{${promptColours.failure}})%#%f '
|
||||
fi
|
||||
print -Pn "\e]2;%n@%M:%~\a" # title bar prompt
|
||||
}
|
||||
|
||||
zle-keymap-select zle-line-init () {
|
||||
case $KEYMAP in
|
||||
vicmd) print -n '\e]12;green\a';;
|
||||
viins|main) print -n '\e]12;gray\a';;
|
||||
esac
|
||||
}
|
||||
|
||||
zle -N zle-line-init
|
||||
zle -N zle-keymap-select
|
||||
zle -N edit-command-line
|
||||
bindkey -M vicmd v edit-command-line
|
||||
'';
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user