summaryrefslogtreecommitdiffstats
path: root/.config/shell
diff options
context:
space:
mode:
authorEmre AKYÜZ <emreakyuz_2@hotmail.com>2025-02-28 20:11:57 +0100
committerGitHub <noreply@github.com>2025-02-28 19:11:57 +0000
commite2d787992ed8cdd3105fdf8d45ab2d695796238b (patch)
tree4920e17c8cfa697d995e3b54a6bd2c51ba0aa4d0 /.config/shell
parent4606e9156a85c89e5113429efec774f299d8e2a4 (diff)
downloadeibhear-e2d787992ed8cdd3105fdf8d45ab2d695796238b.tar.gz
eibhear-e2d787992ed8cdd3105fdf8d45ab2d695796238b.tar.zst
eibhear-e2d787992ed8cdd3105fdf8d45ab2d695796238b.zip
aliasrc | improve se() (#1433)
* aliasrc | improve se() 1. Remove external commands like find. 2. Remove extensions and path (if present) from the names in fzf. 3. Only open Nvim if there is a selection. Do all of these without using find, sed, grep. - First line creates an array with the files in the scripts directory. - Second line removes path (:t) and the extensions (:r) from the scripts. - [[ "${c}" ]] checks if this variable is non-empty. - ${${(M)s:#*/${c}*}[1]} (M) enables "match" mode. :# anchors the pattern to the start of each array element. */${c}* matches any path containing the selected basename. [1] selects the first matching item. * capture sub-directories too
Diffstat (limited to '.config/shell')
-rw-r--r--.config/shell/aliasrc7
1 files changed, 4 insertions, 3 deletions
diff --git a/.config/shell/aliasrc b/.config/shell/aliasrc
index 75327bf..5347fcd 100644
--- a/.config/shell/aliasrc
+++ b/.config/shell/aliasrc
@@ -14,9 +14,10 @@ for command in mount umount sv pacman updatedb su shutdown poweroff reboot ; do
done; unset command
se() {
- choice="$(find ~/.local/bin -mindepth 1 -printf '%P\n' | fzf)"
- [ -f "$HOME/.local/bin/$choice" ] && $EDITOR "$HOME/.local/bin/$choice"
- }
+ s=("${HOME}/.local/bin/"**/*(.))
+ c="$(print -lnr ${s:t:r} | fzf)"
+ [[ "${c}" ]] && "${EDITOR}" ${${(M)s:#*/${c}*}[1]}
+}
# Verbosity and settings that you pretty much just always are going to want.
alias \