Bir ZSH otomatik tamamlama işlevi yazmakta zorlanıyorum. Amacım otomatik tamamlama ta
'nın ve tk
'de listelenen projelerle ilk argümanı tmux list-sessions
ve tmuxinator list
.
İşte şimdiye kadar sahip olduğum şey:
tmux list-sessions
şuna benzeyen verileri çıkarır:
dotfiles: 1 windows (created Tue Apr 15 21:54:51 2014) [123x48]
goodbye: 1 windows (created Tue Apr 15 21:51:34 2014) [123x48]
hello: 1 windows (created Tue Apr 15 21:42:03 2014) [123x48]
tmuxinator list
çıktılar:
tmuxinator projects:
dotfiles landonschropp.com
İşte benim girişimim:
tmux-list-sessions-autofill() {
# get the tmux and tmuxinator sessions
TMUX_SESSIONS=$( tmux list-sessions | cut -d: -f1 )
TMUXINATOR_SESSIONS=$( tmuxinator list | tail -n +2 | gsed -e 's/\s\+/\n/g' )
# remove duplicates
SESSIONS=$( echo "$TMUX_SESSIONS\n$TMUXINATOR_SESSIONS" | sort | uniq )
# set the autocomplete values
reply=( $(echo $SESSIONS) )
}
compctl -K tmux-list-sessions-autofill ta
compctl -K tmux-list-sessions-autofill tk
tmux list-sessions | cut -d: -f1
Proje isimleri dışındaki her şeyi kaldırır.tmuxinator list | tail -n +2 | gsed -e 's/\s\+/\n/g'
ilk satırı kaldırır ve boşluk ile yeni satırları değiştirir.echo "$TMUX_SESSIONS\n$TMUXINATOR_SESSIONS" | sort | uniq
yinelenen çizgileri kaldırır.- kullanıyorum
gsed
çünkü ben OS X’de vesed
biraz vidalı.
Benim işlevim işe yarıyor ama Gerçekten mi yavaş. Ben bir kabuk komut dosyası acemi, bu yüzden bunu başarmak için daha etkili bir yol olduğundan eminim. Darboğazım nerede ve nasıl düzeltebilirim?
time tmux list-sessions
0.05s aldı time tmuxinator list
0,716 aldı. time tmuxinator list | tail -n +2
ve time tmuxinator list | tail -n +2 | gsed -e 's/\s\+/\n/g'
önemli bir gecikme eklemedi. Sanırım bunun için tmuxinator'da bir sorun açacağım. Yardım için teşekkürler!
;)
tmux list-sessions
vetmuxinator list
gecikmeye neden olur mu? İlgilenirimtime tmuxinator list
,time tmuxinator list | tail -n +2
vetime tmuxinator list | tail -n +2 | gsed -e 's/\s\+/\n/g'
. Analog komutla, gecikmeye bir komutun neden olup olmadığını ya da yalnızca toplamda sonuçlanıp sonuçlanmayacağını izleyebilirsiniz.