ReadMe.md
March 12, 2023 · View on GitHub
cd to any path without escaping in xonsh shell.
Replaces cd at the start of a line with a subprocess macro cd!
If you like the idea click ⭐ on the repo and stay tuned.
Install
xpip install xontrib-cd
# or: xpip install -U git+https://github.com/eugenesvk/xontrib-cd
This xontrib will get loaded automatically for interactive sessions; to stop this, set
$XONTRIBS_AUTOLOAD_DISABLED = {"cd", }
Configure
Set the following environment variables in your profile to enable extra options (disabled by default):
$XONTRIB_CD_ALTSYMLINKFLAG = Trueto pass-p,-f, or-sflags (in addition to-P) to follow symlinks$XONTRIB_CD_ALTSYMLINKFUNC = Trueto usecdp,cdf, orcds(in addition tocd -P) to follow symlinks$XONTRIB_CD_SYMLINKAlWAYSON = Trueto makecdalways follow symlinks (always pass-P)$XONTRIB_CD_LASTCMD = Trueto makecdalso work when it's the last command in a multi-command line
Use
Use cd as usual, but without the fear of copying&pasting arbitrary paths (e.g. .../space separated/ or .../[bracketed]/)
xontrib load cd
cd ~/[Path] With Spaces # equivalent to 'cd! ~/[Path] With Spaces'
cd C:/Program Files # equivalent to 'cd! C:/Program Files'
cd -P ~/SymlinkTo # follow symlinks, equivalent to 'cd -P! ~/SymlinkTo'
Add a space before cd to disable adding !
Known issues
- Xontrib autoload can't be disabled and prevents user configured environment vars from being read on time due to a xonsh bug, so if you want to change the default configs via env vars, install the deauto branch
xpip install -U git+https://github.com/eugenesvk/xontrib-cd@deauto - Multiple commands per line like
cd ~; echo 1will fail sincecdis replaced withcd!, and everything after!is treated as a single string argument, ignoring the;separators - But
echo 1; cd ~will work with$XONTRIB_CD_LASTCMD
Credits
This package was created with xontrib cookiecutter template based on the idea of hooking into the command line input as implemented in xontrib-sh