cdhist is now seedee

February 18, 2024 · View on GitHub

As another project called cdhist on github, decided to rename this project seedee
Now, the updated tool can be found here
This repository won't we updated anymore

cdhist is now seedee

Navigate interactively through directories / history of visited directories using arrow keys from command line.
Compatibility : bash / ksh / zsh
(compatible macos / debian / centos / solaris / alpine ...)

  • rapidily switch to already visited directories using interactive menu
  • use locate (mlocate/plocate) to rapidly cd to any directory
  • navigate interactively into directories/history using left/right arrow keys in menu
    • directly from command line without any cd command using shift-arrow keys (bash/zsh)
  • cd autocompletion with interactive menu (bash)

for a complete next-gen shell experience, see also these projects:

  • nerdps1 : auto-transportable dynamic PS1 prompt (you can see it in the demo)
  • redo : replacement of shell history command search (Ctrl+R or Esc+/) with interactive menu
  • complete-ng : nextgen bash completion with interactive menu

demo

  • using bash/zsh in emacs or vi mode, key binding is available as shortcuts:
    • default key binding with Shift+Arrows or Ctrl+Arrows (can be overridden using CD*BIND variables)
LeftUp/DownRight
previous dir in history
parent dir (..)dir history browserdir browser

directory pattern can be put on command line before hitting shortcut to filter result
putting on command line : work and hitting Shift+ will bring you to last visited directory containing work

keyaction
Shift+cd history menu
Shift+return to last directory in history matching pattern
Shift+navigate from current directory
Shift+go to parent dir (cd ..)
Ctrl+Shiftsearch directories matching pattern in locate db
  • using bash, <tab> cd auto completion can be enabled for cd command:
    • setting env variable CDCOMPLETE=y before sourcing cdhist

keys when in menu

keyaction
select next item
select prev item
Endselect last item
Homeselect first item
browse selected directory
browse parent directory
Shift+browse selected directory with subdirectories depth 4
Shift+back to only show subdirectories depth 1
Shift+/PgUp/Ctl+Fnext page
Shift+/PgDn/Ctl+Bprevious page
Del/F8delete directory entry in history
Escexit
Ctrl+Ause all screen to display menu
Enter/Tabgo to directory
  • filter pattern can be applied entering text
  • selection can be done entering item number

usage

$ . ./cdhist
$ cd <dir>
=> change to <dir> and add <dir> to $CDHISTFILE
$ cd --
=> display current history / choose dir to change
$ cd -- <pat>...
=> search pattern <pat> in current history, change to dir if unique, display / chose dir either
$ cd - <pat>...
=> search pattern <pat> in cd history, change to dir first matched
$ cd + [<pat>]...
=> display immediate subdirectories of cwd, search / choose dir to change (except dot dirs, like .git/*)
$ cd ++ [<pat>]...
=> display subdirectories until depth 4, search / choose dir to change (except dot dirs, like .git/*)
$ cdl <pat>...
=> use locate -r and get list of directories to switch

cd - <opts> cd -- <opts> cd + <opts> cd ++ <opts> are aliases to cd- cd-- cd+ cd++

environment variables

VariableDescription
CDHISTFILEpath to history file (default to ~/.cd_history)
CDNBDIRSNumber of directories in history to display (default 10)
CDINITDIRSDirectory list (\n separated) to initialize CDHISTFILE if empty
CDPOWERLINEset to "n" to disable powerline symbol usage
CDHISTBINDbind key to cdhist
CDDOTBINDbind key to navigate from current dir
CDLBINDbind key to cdlocate
CDUPINDbind key to cd ..
CDLASTBINDbind key to cdhist last dir matching text