Skip to content

Navi (interactive cli cheatsheet) integration into xonsh

License

Notifications You must be signed in to change notification settings

eugenesvk/xontrib-navi

Repository files navigation

navi (interactive cli cheatsheet) integration into xonsh (shell)

If you like the idea click ⭐ on the repo

Install

xpip install xontrib-navi
# or: xpip install -U git+https://github.com/eugenesvk/xontrib-navi

Configure

  • Add the following to your .py xontrib loading config and import it in your xonsh run control file (~/.xonshrc or ~/.config/rc.xsh):
from xonsh.xontribs 	import xontribs_load
from xonsh.built_ins	import XSH
envx = XSH.env

xontribs = [ "navi", # Initializes navi (interactive cli cheatsheet)
 # your other xontribs
] # ↓ optional configuration variables (use `False` to disable a keybind)
if 'navi' in xontribs: # Configure navi only if you're actually loading it
  #Config var             Value   ≝Default¦alt_cmd comment
  envx["X_NAVI_KEY"     ] = "⎈g"  #≝c-g ¦False  Autofill existing command with navi's best match or launch navi if no good match found
  envx["x_navi_key_skim"] = "⎇g" #≝False       Autofill existing command with navi's best match or launch navi if no good match found (skim)
  # run to see the allowed list for ↑: from prompt_toolkit.keys import ALL_KEYS; print(ALL_KEYS)
  # Alt is also supported as either of: a- ⎇ ⌥ (converted to a prefix 'escape')
  # Control symbols are also supported as either of: ⎈ ⌃

xontribs_load(xontribs) # actually load all xontribs in the list
  • Or just add this to your xonsh run control file
xontrib load navi # Initializes navi (interactive cli cheatsheet)
# configure like in the example above, but replace envx['VAR'] with $VAR
$X_NAVI_KEY      = "c-g" # ...
$x_navi_key_skim = ["escape","g"] # ...

Use

  • g run navi
  • git sta g git status autoreplace with navi's best match
  • git status g run navi with current command as search input
  • git sta‸; git show g git status‸; git show autoreplace only the command at ‸cursor

Known issues

  • Bottom toolbar may temporary disappear on some invokations of the commands in this xonrib likely due to this xonsh issue

Credits

This package was created with xontrib template