A Xonsh plugin to navigate between directories like fish's prevd/nextd
Project description
xontrib-hist-navigator
Fish-shell like prevd and nextd for xonsh with keyboard shortcuts
Usage
- install using pip
pip install xontrib-hist-navigator
- or xpip (that is installed alongside xonsh)
xpip install xontrib-hist-navigator
- add to list of xontribs loaded.
xontrib load hist_navigator
Overview
- it keeps track of
cdusage per session - Shortcuts
| command | description | shortcut |
|---|---|---|
| prevd | move to previous working directory | Alt + Left Arrow |
| nextd | move to next working directory in the history (if prevd is used) |
Alt + Right Arrow |
| listd | list cd history | |
| cd .. | move to parent directory | Alt + Up Arrow |
Traversal behavior
By default, all cd history is kept. Let's look at an example. Let's open a new shell:
❯
Now when we change the directory, it's added to the history along with the previous directory where we were (the user's home directory):
❯ cd BASE
❯ listd
['~', '~/BASE']
Let's descend further down:
❯ cd sub
❯ listd
['~', '~/BASE', '~/BASE/sub']
So far, so obvious. Now, when we use prevd, you'll see that the history
stays intact:
❯ prevd
❯ pwd
~/BASE
❯ listd
['~', '~/BASE', '~/BASE/sub']
This allows you to use nextd to go back and forth:
❯ nextd
❯ pwd
~/BASE/sub
❯ listd
['~', '~/BASE', '~/BASE/sub']
❯ prevd
❯ pwd
~/BASE
❯ listd
['~', '~/BASE', '~/BASE/sub']
Now, if you change the directory entirely after a prevd, the entire
previous history is still kept:
❯ pwd
~/BASE
❯ listd
['~', '~/BASE', '~/BASE/sub']
❯ cd /tmp
❯ listd
['~', '~/BASE', '~/BASE/sub', '/tmp']
This means that issuing prevd now will actually return to ~/BASE/sub
and not to ~/BASE which was the last seen previous directory.
This is by design to allow you to quickly traverse previously visited
directories using keyboard shortcuts.
If you would rather have the history truncated, so that prevd always
takes you to the directory you were in just before, set the following
environment variable in your xonshrc:
$XONTRIB_HIST_NAVIGATOR_TRUNCATE="true"
In this case the last example would behave differently:
❯ pwd
~/BASE
❯ listd
['~', '~/BASE', '~/BASE/sub']
❯ cd /tmp
❯ listd
['~', '~/BASE', '/tmp']
As you can see ~/BASE/sub was dropped from history because it wasn't
the last visited directory at the time of changing the directory to
/tmp.
Release
semantic-release version && semantic-release publish
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters