4 ms·
A smarter CD command. Supports all major shells
- Leftium 3y agoShort explainer video: "zoxide has forever improved the way I navigate in the terminal." https://youtu.be/aghxkpyRVDY https://youtu.be/aghxkpyRVDY
- Leftium 3y agoz foo # cd into highest ranked directory matching foo z foo bar # cd into highest ranked directory matching foo and bar z foo / # cd into a subdirectory starting with foo z ~/foo # z also works like a regular cd command z foo/ # cd into relative path z .. # cd one level up z - # cd into previous directory zi foo # cd with interactive selection (using fzf) z foo<SPACE><TAB> # show interactive completions (zoxide v0.8.0+, bash 4.4+/fish/zsh only)
- jvanderbot 3y agoIt appears to me that these could all be just tab complete, fzf, or similar. Some are just plain old bash. The commands are written in rust, presumably because they're part of this warp shell advertised on readme?
- dtj1123 3y agoYou can't use tab complete to easily navigate to a directory with a non-trivial relative path. Zoxide lets you type an arbitrary substring of the directory you want to navigate to, regardless of where you currently are. No, warp appears to be a sponsor, nothing more.
- 149765 3y agofzf (golang) readme also has the same banner.
- fatnoah 3y agoI really want to like Warp, but I just can "untrain" my brain from years of visually grokking terminal outputs. Despite it's features, it's impossible (based on my experience and feature requests in their GitHub account) to recreate my simple and preferred shell prompt that includes git branch, date/time, and full path without tons of extraneous whitespace. It's a small thing, but my brain can't handle it for some reason.
- Leftium 3y agoI think Warp is just a project sponsor (i.e. advertisement: "Special thanks to:"). I don't even know what Warp is... I am using zoxide fine without Warp. (Windows + git-bash.) (And my shell prompt is just the full path + git-branch ^^)
- jackthetab 3y agoWait. You can jump to the directory `~/projects/foo/python/bar` by typing `<some_cmd> foo bar` in POB (plain ole' bash)?! That's the main feature I love about zoxide; it's be great if I could do it natively.
- reaperman 3y agoBest I can come up with is adding the following to .bashrc: function jump() { local current_dir=$(pwd) local search_pattern="*" for arg in "$@"; do search_pattern+="$arg*" done local path_found=$(find "$current_dir" -type d -path "$search_pattern" -print -quit) if [[ -n $path_found ]]; then cd "$path_found" || return else echo "Directory not found from here." fi } Then jump foo bar {baz ...} does what you'd like here. e.g. me@myhost ~ % jump CMake doc guide will go to /Users/me/Qt/Tools/CMake/CMake.app/Contents/doc/cmake/html/guide/
- jvanderbot 3y agoI used to use this https://github.com/jodavaho/smartcd https://github.com/jodavaho/smartcd 'scd journal' 'scd logs personal' Now I tab complete using fzf, but the above is what you want. Bash is Turing complete. You "need" nothing else. You may want it for various reasons.
- precompute 3y agoI've tried z and autojump before and have found them unnecessary. I instead use aliases. This allows my shell history to stay clean and legible. It's also much more customizable. alias c='cd' alias b='c ..' alias bb='c ../..' ... alias bbbbbbb='c ../../../../../../..' alias B='bb' alias Bb='bbb' ... alias BBBb='bbbbbbb' ... alias L='eza -la --time-style long-iso --color-scale --color-scale-mode=gradient --hyperlink --no-quotes -FX' alias Lg='L | rg' alias Lt='L -T' alias Ltg='L -T | rg' alias Ld='L -D' alias Ldg='L -D | rg' alias Ltd='Lt -D' alias Lldg='Ll -D | rg' alias Ls='L --sort newest' alias LS='L --sort oldest' ... alias Lorg='L | sort --key 2 -h --reverse | rg' alias Lotg='Lt | sort --key 2 -h | rg' alias Lotrg='Lt | sort --key 2 -h --reverse | rg' etc. My bash history is unrestricted. I use FZF to quickly select older commands. This takes the "magic" out of the selection process and lets me know exactly what directory I'll go to.
- lencastre 3y agoHi, rg doesn't play nice with eza --hyperlink do you have an alternative, it repeats inline the result found and loses the hyperlink ability, any ideas?
- micouay 3y agoI did something similar but based on matching abbreviations: https://github.com/micouy/kn https://github.com/micouy/kn For example kn pho/eutri to enter photos/europe_trip. It doesn't track frecency or anything, just matches strings. My algorithm is also used in nushell's cd command. kn also supports multiple dots: kn .. # enters parent kn ... # enters grandparent etc.
- suralind 3y agozoxide is great, but I find it sometimes annoying when I have directories similarly named and it goes to the historically-more accurate directory than I wanted