Her girişte zsh güncellemesinde kendisini RPROMPT nasıl yaparsınız?


11

My RPROMPT, kullanarak svn bilgilerini görüntüleyecek şekilde ayarlanmıştır vcs_info. Okur RPROMPT=${vcs_info_msg_0_}. vcs_infokullanmaya denir precmd(). Ancak dizinleri değiştirdiğimde RPROMPT güncellenmiyor. Sadece istemi tekrar çağırırsam çalışır (kaynak ~ / .zshrc veya istemle) ve istemi tekrar çağırmadıkça chdir üzerinde değişmez. Bu davranışı değiştirmenin bir yolu var mı?

Yanıtlar:


20

Değerlendirmeyi geciktirmek için atamada değişken değerin etrafına tek tırnak koymayı deneyin:

RPROMPT='${vcs_info_msg_0_}'

Taşındığında onay işareti neden kayboluyor?

@ user5383: Bunu meta.unix.stackexchange.com veya meta.stackoverflow.com adresinde sormalısınız. Cevabı bilmiyorum (veya sadece belirsiz bir şekilde biliyorum).
sonraki duyuruya kadar duraklatıldı.

3
Bu setopt PROMPT_SUBST, dosyanın daha önce gerçekleşmesini gerektirir . Aksi takdirde, istemi kelimenin tam anlamıyla yankılandıracaktır.
Nick Meharry

1

Dinamik takma adları tanımlamak için değerlendirme çalışmalarını geciktirmek için tek tırnak kullanmak. İşte tvarolan bir ssh aracı işlemine yeni bir kabuk eklemek için kullanılan ve diğer adıyla ssh-start, bir homedir'deki bir dosyaya kabuk kodu yazan bir diğer adla başlayan bir diğer ad :

mymistress:~> which ssh-start
ssh-start: aliased to eval `ssh-agent | tee ~/.ssh/ssh-agent.out` ; ssh-add ~/.ssh/id_rsa
mymistress:~> grep "alias t" .zshrc    
alias t="eval `cat ~/.ssh/ssh-agent.out`"
mymistress:~> which t
t: aliased to eval SSH_AUTH_SOCK=/tmp/ssh-nZBZp29804/agent.29804; export SSH_AUTH_SOCK;\nSSH_AGENT_PID=29805; export SSH_AGENT_PID;\necho Agent pid 29805;`

Bu tanım tkötüdür, çünkü yeni bir çalışmadan alınan yeni bilgilerin ssh-startgöz ardı edilmesine neden olur . t.Zshrc içinde tek tek alıntılanacak olan diğer ad tanımını değiştirmek çok daha iyi davranış sağlar:

mymistress:~> grep "alias t" .zshrc
alias t='eval `cat ~/.ssh/ssh-agent.out`'
mymistress:~> source ~/.zshrc
mymistress:~> which t
t: aliased to eval `cat ~/.ssh/ssh-agent.out`

Çift tırnakların (komutların veya ortam değişkenlerinin anında yerinde genişletilmesi) ve tek tırnakların (komutların ve değişkenlerin gecikmeli değerlendirilmesi) etkilerini gösteren , tanımının tsağladığı şekilde genişlediğine dikkat edin which t.

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.