diff options
Diffstat (limited to 'plugins/dirhistory')
| -rw-r--r-- | plugins/dirhistory/README.md | 17 | ||||
| -rw-r--r-- | plugins/dirhistory/dirhistory.plugin.zsh | 58 | 
2 files changed, 73 insertions, 2 deletions
diff --git a/plugins/dirhistory/README.md b/plugins/dirhistory/README.md new file mode 100644 index 000000000..511f2be17 --- /dev/null +++ b/plugins/dirhistory/README.md @@ -0,0 +1,17 @@ +# Dirhistory plugin + +This plugin adds keyboard shortcuts for navigating directory history and hierarchy. + +To use it, add `dirhistory` to the plugins array in your zshrc file: + +```zsh +plugins=(... dirhistory) +``` +## Keyboard Shortcuts + +| Shortcut                          | Description                                               | +|-----------------------------------|-----------------------------------------------------------| +| <kbd>alt</kbd> + <kbd>left</kbd>  | Go to previous directory                                  | +| <kbd>alt</kbd> + <kbd>right</kbd> | Undo <kbd>alt</kbd> + <kbd>left</kbd>                     | +| <kbd>alt</kbd> + <kbd>up</kbd>    | Move into the parent directory                            | +| <kbd>alt</kbd> + <kbd>down</kbd>  | Move into the first child directory by alphabetical order | diff --git a/plugins/dirhistory/dirhistory.plugin.zsh b/plugins/dirhistory/dirhistory.plugin.zsh index 8138872bc..239915e48 100644 --- a/plugins/dirhistory/dirhistory.plugin.zsh +++ b/plugins/dirhistory/dirhistory.plugin.zsh @@ -2,6 +2,10 @@  #   Navigate directory history using ALT-LEFT and ALT-RIGHT. ALT-LEFT moves back to directories   #   that the user has changed to in the past, and ALT-RIGHT undoes ALT-LEFT.  #  +#   Navigate directory hierarchy using ALT-UP and ALT-DOWN. (mac keybindings not yet implemented) +#   ALT-UP moves to higher hierarchy (cd ..) +#   ALT-DOWN moves into the first directory found in alphabetical order +#  dirhistory_past=($PWD)  dirhistory_future=() @@ -120,7 +124,9 @@ zle -N dirhistory_zle_dirhistory_back  bindkey "\e[3D" dirhistory_zle_dirhistory_back  bindkey "\e[1;3D" dirhistory_zle_dirhistory_back  # Mac teminal (alt+left/right) -bindkey "^[b" dirhistory_zle_dirhistory_back +if [[ "$TERM_PROGRAM" == "Apple_Terminal" ]]; then +  bindkey "^[b" dirhistory_zle_dirhistory_back +fi  # Putty:  bindkey "\e\e[D" dirhistory_zle_dirhistory_back  # GNU screen: @@ -129,8 +135,56 @@ bindkey "\eO3D" dirhistory_zle_dirhistory_back  zle -N dirhistory_zle_dirhistory_future  bindkey "\e[3C" dirhistory_zle_dirhistory_future  bindkey "\e[1;3C" dirhistory_zle_dirhistory_future -bindkey "^[f" dirhistory_zle_dirhistory_future +if [[ "$TERM_PROGRAM" == "Apple_Terminal" ]]; then +  bindkey "^[f" dirhistory_zle_dirhistory_future +fi  bindkey "\e\e[C" dirhistory_zle_dirhistory_future  bindkey "\eO3C" dirhistory_zle_dirhistory_future +#  +# HIERARCHY Implemented in this section, in case someone wants to split it to another plugin if it clashes bindings +#  + +# Move up in hierarchy +function dirhistory_up() { +  cd .. || return 1 +} + +# Move down in hierarchy +function dirhistory_down() { +  cd "$(find . -mindepth 1 -maxdepth 1 -type d | sort -n | head -n 1)" || return 1 +} + + +# Bind keys to hierarchy navigation +function dirhistory_zle_dirhistory_up() { +  zle kill-buffer   # Erase current line in buffer +  dirhistory_up +  zle accept-line +} + +function dirhistory_zle_dirhistory_down() { +  zle kill-buffer   # Erase current line in buffer +  dirhistory_down +  zle accept-line +} + +zle -N dirhistory_zle_dirhistory_up +# xterm in normal mode +bindkey "\e[3A" dirhistory_zle_dirhistory_up +bindkey "\e[1;3A" dirhistory_zle_dirhistory_up +# Mac teminal (alt+up) +    #bindkey "^[?" dirhistory_zle_dirhistory_up #dont know it +# Putty: +bindkey "\e\e[A" dirhistory_zle_dirhistory_up +# GNU screen: +bindkey "\eO3A" dirhistory_zle_dirhistory_up + +zle -N dirhistory_zle_dirhistory_down +bindkey "\e[3B" dirhistory_zle_dirhistory_down +bindkey "\e[1;3B" dirhistory_zle_dirhistory_down +# Mac teminal (alt+down) +    #bindkey "^[?" dirhistory_zle_dirhistory_down #dont know it +bindkey "\e\e[B" dirhistory_zle_dirhistory_down +bindkey "\eO3B" dirhistory_zle_dirhistory_down  | 
