From fe246744756bc035f03ea66c1f7d8c6ae3320267 Mon Sep 17 00:00:00 2001 From: PowerUser64 Date: Wed, 10 Nov 2021 10:22:08 -0800 Subject: [PATCH] zsh: organize various `cd` functions --- .zshrc | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/.zshrc b/.zshrc index 482d2a4..0edc6b7 100644 --- a/.zshrc +++ b/.zshrc @@ -197,13 +197,28 @@ fi } - # cd file: cd to the containing dir of a file or folder, given part of its name + # cd to: cd to the containing dir of a file or folder, given part of its name # can take an `fd` command # requires that `fzy` is installed - cdf() { + cdt() { cd "$(dirname "$(fd $@ | fzy)")" && pwd } + # cd all: opens a new shell in each of the directories below the one you're in, so + # you can execute commands in them until you type 'exit' + # If I use this enough, I may make something that can do more + # Ideas for what it could do in the future: + # - somehow record typed commands so they can be automatically repeated like a macro + # - maybe get the length of the histfile before and after, executing the last X number of commands + # - Maybe just add an argument that takes a command and executes it in all dirs + # (although that wouldn't be as good as recording actions bc it's easy to do + # that by just writing a for loop) + cda() { + for DIR in *; do + (cd "$DIR" && zsh) + done + } + # toggles whether a file or group of files is executable chx() { for FILE in "$@";do @@ -293,22 +308,6 @@ echo "$FILEPATH" | grep -o 'site.*' | sed 's+^site+https://blakenorth.net+g' } - # Opens a subshell in each of the directories below the one you're in, so - # you can execute commands in them - # If I use this enough, I may make something that can do more - # Ideas for what it could do in the future: - # - somehow record typed commands so they can be automatically repeated - # - maybe get the length of the histfile before and after, executing the - # last X number of commands - # - Maybe just add an argument that takes a command and executes it in all dirs - # (although that wouldn't be as good as recording actions bc it's easy to do - # that by just writing a for loop) - foreachdir() { - for DIR in *; do - (cd "$DIR" && zsh) - done - } - # for sending error messages from functions and whatnot error() { ERROR_CODE="$?"