diff options
Diffstat (limited to 'examples/shell_automatic_cd.sh')
-rw-r--r-- | examples/shell_automatic_cd.sh | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/examples/shell_automatic_cd.sh b/examples/shell_automatic_cd.sh new file mode 100644 index 00000000..391946c7 --- /dev/null +++ b/examples/shell_automatic_cd.sh @@ -0,0 +1,23 @@ +# shellcheck shell=sh + +# Compatible with ranger 1.4.2 through 1.9.* +# +# Automatically change the current working directory after closing ranger +# +# This is a shell function to automatically change the current working +# directory to the last visited one after ranger quits. Either put it into your +# .zshrc/.bashrc/etc or source this file from your shell configuration. +# To undo the effect of this function, you can type "cd -" to return to the +# original directory. + +ranger_cd() { + temp_file="$(mktemp -t "ranger_cd.XXXXXXXXXX")" + ranger --choosedir="$temp_file" -- "${@:-$PWD}" + if chosen_dir="$(cat -- "$temp_file")" && [ -n "$chosen_dir" ] && [ "$chosen_dir" != "$PWD" ]; then + cd -- "$chosen_dir" + fi + rm -f -- "$temp_file" +} + +# This binds Ctrl-O to ranger-cd: +bind '"\C-o":"ranger-cd\C-m"' |