my xfce4 dotfiles
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
3.7 KiB

3 years ago
  1. # dircycle
  2. Plugin for cycling through the directory stack
  3. This plugin enables directory navigation similar to using back and forward on browsers or common file explorers like Finder or Nautilus. It uses a small zle trick that lets you cycle through your directory stack left or right using <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>Left</kbd> / <kbd>Right</kbd> . This is useful when moving back and forth between directories in development environments, and can be thought of as kind of a nondestructive pushd/popd.
  4. ## Enabling the plugin
  5. 1. Open your `.zshrc` file and add `dircycle` in the plugins section:
  6. ```zsh
  7. plugins=(
  8. # all your enabled plugins
  9. dircycle
  10. )
  11. ```
  12. 2. Restart the shell or restart your Terminal session:
  13. ```console
  14. $ exec zsh
  15. $
  16. ```
  17. ## Usage Examples
  18. Say you opened these directories on the terminal:
  19. ```console
  20. ~$ cd Projects
  21. ~/Projects$ cd Hacktoberfest
  22. ~/Projects/Hacktoberfest$ cd oh-my-zsh
  23. ~/Projects/Hacktoberfest/oh-my-zsh$ dirs -v
  24. 0 ~/Projects/Hacktoberfest/oh-my-zsh
  25. 1 ~/Projects/Hacktoberfest
  26. 2 ~/Projects
  27. 3 ~
  28. ```
  29. By pressing <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>Left</kbd>, the current working directory or `$CWD` will be from `oh-my-zsh` to `Hacktoberfest`. Press it again and it will be at `Projects`.
  30. And by pressing <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>Right</kbd>, the `$CWD` will be from `Projects` to `Hacktoberfest`. Press it again and it will be at `oh-my-zsh`.
  31. Here's a example history table with the same accessed directories like above:
  32. | Current `$CWD` | Key press | New `$CWD` |
  33. | --------------- | ----------------------------------------------------- | --------------- |
  34. | `oh-my-zsh` | <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>Left</kbd> | `Hacktoberfest` |
  35. | `Hacktoberfest` | <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>Left</kbd> | `Projects` |
  36. | `Projects` | <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>Left</kbd> | `~` |
  37. | `~` | <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>Right</kbd> | `Projects` |
  38. | `Projects` | <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>Right</kbd> | `Hacktoberfest` |
  39. | `Hacktoberfest` | <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>Right</kbd> | `oh-my-zsh` |
  40. | `oh-my-zsh` | <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>Right</kbd> | `~` |
  41. Note the last traversal, when pressing <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>Right</kbd> on a last known `$CWD`, it will change back to the first known `$CWD`, which in the example is `~`.
  42. Here's an asciinema cast demonstrating the example above:
  43. [![asciicast](https://asciinema.org/a/204406.png)](https://asciinema.org/a/204406)
  44. ## Functions
  45. | Function | Description |
  46. | -------------------- | --------------------------------------------------------------------------------------------------------- |
  47. | `insert-cycledleft` | Change `$CWD` to the previous known stack, binded on <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>Left</kbd> |
  48. | `insert-cycledright` | Change `$CWD` to the next known stack, binded on <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>Right</kbd> |
  49. ## Rebinding keys
  50. You can bind these functions to other key sequences, as long as you know the bindkey sequence. For example, these commands bind to <kbd>Alt</kbd> + <kbd>Shift</kbd> + <kbd>Left</kbd> / <kbd>Right</kbd> in `xterm-256color`:
  51. ```zsh
  52. bindkey '^[[1;4D' insert-cycledleft
  53. bindkey '^[[1;4C' insert-cycledright
  54. ```
  55. You can get the bindkey sequence by pressing <kbd>Ctrl</kbd> + <kbd>V</kbd>, then pressing the keyboard shortcut you want to use.