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é
:qna 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):qukončí yazi, presne ako vo vime- Ostatné príkazy ako
:touch filestá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!