alias nnn to n with autocd on exit

This commit is contained in:
2025-09-05 09:58:46 +02:00
parent c4e16108ff
commit 96aba00c90

View File

@@ -1054,7 +1054,7 @@ in
suspend = "systemctl suspend";
logout = "sudo pkill -u fredrikr";
lock = "/home/fredrikr/.logout.sh";
n = "nvim";
nv = "nvim";
e = "emacsclient -c -a 'emacs'";
nnn = "nnn -e";
jl = "jj l";
@@ -1130,6 +1130,39 @@ in
# compinit
source <(jj util completion zsh)
source <(COMPLETE=zsh jj)
# --------- autocd on nnn quit ----------
n ()
{
# Block nesting of nnn in subshells
[ "''${NNNLVL:-0}" -eq 0 ] || {
echo "nnn is already running"
return
}
# The behaviour is set to cd on quit (nnn checks if NNN_TMPFILE is set)
# If NNN_TMPFILE is set to a custom path, it must be exported for nnn to
# see. To cd on quit only on ^G, remove the "export" and make sure not to
# use a custom path, i.e. set NNN_TMPFILE *exactly* as follows:
# NNN_TMPFILE="''${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.lastd"
NNN_TMPFILE="''${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.lastd"
# Unmask ^Q (, ^V etc.) (if required, see `stty -a`) to Quit nnn
# stty start undef
# stty stop undef
# stty lwrap undef
# stty lnext undef
# The command builtin allows one to alias nnn to n, if desired, without
# making an infinitely recursive alias
command nnn -e "$@"
[ ! -f "$NNN_TMPFILE" ] || {
. "$NNN_TMPFILE"
rm -f -- "$NNN_TMPFILE" > /dev/null
}
}
# ---------------------------------------
'';
};