Ak používaš yazi ako terminálový správcu súborov a prichádzaš z vim/neovim, pravdepodobne si zo zvyku skúsil ukončiť pomocou :q, len aby si bol privítaný:

q: command not found

Stáva sa to preto, lebo kláves : v yazi otvára príkazový riadok shellu, nie vim-štýlový príkazový režim. Takže :q sa doslova pokúsi vykonať q ako príkaz shellu.

Riešenie #

Chcel som zachovať obe funkcionality:

  • Vim-štýlové :q na ukončenie
  • Prístup k shellu na spúšťanie príkazov ako touch file

Takto som to vyriešil prispôsobením ~/.config/yazi/keymap.toml:

# Remap ; to blocking interactive shell (what : used to do)
[[manager.prepend_keymap]]
on = [ ";" ]
run = "shell --interactive --block"
desc = "Shell (block)"

# Now use : for vim-style commands
[[manager.prepend_keymap]]
on = [ ":", "q" ]
run = "quit"
desc = "Quit (vim-style)"

Ako to funguje #

  • ; teraz otvára interaktívny príkazový riadok shellu v blokovacom režime (takže vidíš výstup príkazov)
  • :q ukončí yazi, presne ako vo vime
  • Ostatné príkazy ako :touch file stále fungujú cez kláves ;

Kľúčovým poznatkom je použitie príkazu shell --interactive --block v yazi, ktorý poskytuje rovnakú funkcionalitu ako pôvodná väzba klávesu :.

Bonus: Neblokujúce príkazy shellu #

Možno sa pýtaš, prečo som ponechal príznak --block. V kontexte správcu súborov takmer vždy chceš vidieť výstup príkazov alebo čakať na ich dokončenie. Neblokujúce príkazy shellu sú tu len zriedka užitočné, takže som sa tej zložitosti zbavil úplne.

Teraz je moja svalová pamäť spokojná a stále mám prístup ku všetkej funkcionalite shellu, ktorú potrebujem! Enjoy!

Odkazy #