My lowtech solution was to make a function with an array of hardcoded paths, it would then present a menu where you could select 0-N and it would jump. It also started with Terminal.
alias .a='cd ~/src/autosqueezer'
alias .g='cd ~/src/gcc-squeeze-plugin'
alias .u='cd ~/src/squeeze-utils'
etc. You have to manage them by hand, but that's easy, and makes the result much more predictable than anything based on history.I also have contextual companions to these, defined as functions, like:
.r() {
local project_root=$(somehow work out the root of the current project)
cd $project_root
}
.b() {
.r
cd build
}``` cd ~/src/autosqueezer wd add a # later, somewhere else wd a ```
`run-help hash` for the basic interface, or zshexpn(1) for the gory details including fancy dynamic naming.