Zsh: Yürütülen komutu otomatik olarak değiştir


9

Yakın zamanda MacPorts aracılığıyla sistemime grc (jenerik renklendirici) yükledim, bana varsayılan olarak desteklemeyen birçok komut için renkli çıktı alma yeteneği veriyor (aşağıdaki ekran görüntüsüne bakın). Traceroute ile grc örneği.
Grc'yi otomatik olarak kullanmak istiyorum, ancak belirli komutlar için değil, her komut için. Kabuğum olarak zsh kullanıyorum.

Aslında ne zaman çalıştırsam command -parameter 1 2 3otomatik olarak çalıştırılmasını istiyorum grc command -parameter 1 2 3. Grc için renklendirmek için daha fazla komut ekliyorum gibi takma
ad, örneğin traceroutetakma ad kullanmak istemiyorum grc traceroute.

.Zshrc için preexec ve precmd yapılandırmalarını araştırdım, ancak aradığım şeyi elde etmenin bir yolunu bulamadım.

Yanıtlar:


6

Kabul satırı widget'ını yeniden tanımlayarak bunu yapabilirsiniz:

add-grc() { [[ $BUFFER = grc* ]] || BUFFER="grc $BUFFER"; zle .$WIDGET "$@"; }
zle -N accept-line add-grc

Ancak, "for i (..)", "var = x", "f () {" ... gibi komutlar için soruna neden olabilir.


İyi bir nokta. Bu çözümün kendim için yaratabileceği herhangi bir sorun düşünemedim, ama tam da bu adına geldiniz. Zaman ayırdığınız için teşekkür ederim.
Nit

Bu yöntemin bir dezavantajı, geçmişin grcher komutun başında gösterilmesidir.
joeytwiddle

6

Diğer alternatif. Aynı tür potansiyel problemler:

TRAPDEBUG() { eval "grc $ZSH_DEBUG_CMD"; setopt errexit; }

Burada yayınlanan çözümler için istisnaları anlamaya çalışmak yerine "grc" gerektiren her komut için bir "takma ad" kullanırdım.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.