Saya senang menggunakannya zsh
sejak beberapa waktu sekarang, dan saya cukup puas dengan pengaturan riwayat saya, yaitu:
# Write to history immediately
setopt inc_append_history
# History shared among terminals
setopt share_history
# Save extended info in history
setopt extended_history
# Ignore duplicates
setopt hist_ignoredups
Tetapi sering terjadi bahwa saya perlu menggunakan perintah khusus di dalam beberapa direktori tertentu. Misalnya, ketika saya berada di dalam ~/my_project
saya biasanya memohon make target1 && ./run1
, tetapi ketika saya di dalam ~/second_project
saya biasanya perlu make target2 && cat foobar | ./run2
.
Yaitu: direktori berbeda, tetapi perintah serupa.
Jadi, saya biasanya cd ~/my_project
mengetik make
dan kemudian mencari ke belakang dalam sejarah sampai saya menemukan apa yang saya butuhkan. Tetapi jika kebetulan saya bekerja second_project
, ketika mencari sejarah saya akan menemukan beberapa perintah yang tidak saya butuhkan.
Jadi, pertanyaan saya: apakah ada plugin / pengaturan / sesuatu untuk zsh sehingga, ketika mencari di riwayat, perintah yang dipanggil dalam direktori saat ini ditampilkan terlebih dahulu?
Idealnya, setiap perintah histori pencocokan lainnya akan muncul setelah itu, secara opsional menentukan jumlah maksimum elemen prioritas.
Saya akan mencoba untuk menulis sesuatu seperti ini sendiri, tetapi saya masih tidak tahu bagaimana menulis plugin zsh khusus, bagaimana menangani sejarah dan sebagainya.
sumber
ctrl-g
(dan bukan berdasarkan prioritas seperti yang saya minta). Meskipun demikian, saya masih merasa ini sangat berguna dan jawaban yang bagus untuk pertanyaan saya, jadi, terima kasih :)Saya baru saja menulis sebuah plugin kecil yang melakukan banyak hal dari apa yang dilakukan Jim Hester, tetapi menggunakan pendekatan berbeda yang memperbaiki banyak masalah yang tercantum dalam repo plugin GitHub:
https://github.com/ericfreese/zsh-cwd-history
Ia menyimpan
HISTFILE
direktori terpisah untuk setiap direktori yang telah Anda jalankan, dan menambahkan sebuahchpwd
hook untuk beralih di antaraHISTFILE
s ketika Anda mengubah direktori.Ini juga menyediakan widget zle yang dapat Anda ikat ke penekanan tombol yang akan mengubah
HISTFILE
antara "global" asli AndaHISTFILE
danHISTFILE
untuk direktori kerja Anda saat ini.Plugin zsh-cwd-history saat ini tidak mendukung ini, tapi saya berharap untuk menambahkan dukungan untuk itu segera.
sumber
Saya memiliki masalah yang sama persis dan menulis sebuah plugin ZSH yang menyelesaikannya: https://github.com/tymm/zsh-directory-history
Anda tidak perlu beralih secara manual antara riwayat global dan direktori saat menggunakan plugin saya.
Ini juga berfungsi di luar kotak dengan plugin saya.
sumber