Salin & Rekatkan ini ke .zshrc
:
Kursor menggunakan riwayat lokal:
bindkey "${key[Up]}" up-line-or-local-history
bindkey "${key[Down]}" down-line-or-local-history
up-line-or-local-history() {
zle set-local-history 1
zle up-line-or-history
zle set-local-history 0
}
zle -N up-line-or-local-history
down-line-or-local-history() {
zle set-local-history 1
zle down-line-or-history
zle set-local-history 0
}
zle -N down-line-or-local-history
Jika Anda juga perlu mengikat kunci ( CTRL+ kursor) untuk menelusuri sejarah global, tambahkan juga ini ke .zshrc
:
bindkey "^[[1;5A" up-line-or-history # [CTRL] + Cursor up
bindkey "^[[1;5B" down-line-or-history # [CTRL] + Cursor down
Untuk membuat ini berfungsi, opsi SHARE_HISTORY (lihat 16.2.4 Riwayat ) perlu diaktifkan. Jalankan setopt
dan periksa apakah "sharehistory" terdaftar. Jika tidak menambah setopt sharehistory
ke Anda .zshrc
. Maka kita dapat menggunakan set-local-history seperti yang kita lakukan di atas. Dokumentasi mengatakan:
Secara default, perintah pergerakan riwayat mengunjungi baris yang diimpor serta jalur lokal, tetapi Anda dapat mengaktifkan dan menonaktifkannya dengan zle binding set-local-history. Dimungkinkan juga untuk membuat widget zle yang akan membuat beberapa perintah mengabaikan perintah yang diimpor, dan beberapa menyertakannya.
Perhatikan bahwa riwayat global standar digunakan (dan semua fungsi diakhiri dengan "zle set-local-history 0", yaitu riwayat lokal dinonaktifkan). Jadi menekan CTRL+ Rakan mencari sejarah global secara default (yang masuk akal dalam banyak kasus).
Ini sangat mirip dengan solusi oleh @mpy, tetapi siap untuk salin & tempel. Itu menimpa tombol kursor atas dan ke bawah. Saya menggunakan entri daftar surat ini .
Lihat juga:
${key[Up]}
. Kemudian (dalam mode edit), ketik Ctrl + V diikuti dengan panah atas. Ini harus memasukkan kode kunci yang benar. Lakukan hal yang sama untuk panah bawah.Ctrl+R
.Anda dapat mengatur widget zle khusus untuk hanya menampilkan item riwayat lokal:
Dengan asumsi, itu ↑terikat
up-line-or-history
(saya pikir itu default), Anda dapat mengikat widget ini ke stroke kunci lain, seperti CTRL+ ↑:Jika ini berfungsi mungkin tergantung pada terminal Anda. Baris di atas berfungsi di
URxvt/Screen
. Dengan yangxterm
Anda butuhkanuntuk CTRL+ ↑.
Varian lain bisa jadi
jadi, jika Anda memiliki riwayat lokal yang diaktifkan, Anda dapat mengintip ke riwayat global atau sebaliknya.
sumber
Jawaban @ lumbic hanya berfungsi untuk saya dengan beberapa perubahan:
Kode ini menjadikan sejarah global sebagai default, dan menggunakan panah CTRL untuk sejarah lokal.
Catatan: Saya menggunakan zsh 5.0.2 bersama dengan oh-my-zsh.
sumber
Ctrl+arrows
untuk sejarah lokal.Saya sudah mencoba opsi yang tercantum dalam jawaban lain di sini tapi saya tidak senang dengan mereka. Widget 1
up-history
atauup-line-or-history
tidak termasuk pencarian awal dan widget 1up-line-or-beginning-search
tampaknya tidak berfungsi dengan baik ketika mengubah preferensi riwayat lokal saat menggunakannya. 2Jadi saya datang ke pengaturan berikut. Ini memungkinkan Ctrl+ panah untuk menelusuri sejarah global, Alt+ panah untuk menelusuri hanya sejarah lokal (mirip dengan Bash) dan panah mandiri untuk menggunakan pencarian awal yang pintar (default di Oh My Zsh ).
1
down
Rekan-rekan mereka juga dimaksudkan secara implisit.2 Awal yang digunakan untuk mencari didefinisikan ulang setelah mengubah preferensi riwayat lokal, sehingga seluruh perintah pertama yang ditemukan digunakan sebagai awal yang akan dicari dalam pencarian kedua.
sumber
Berdasarkan berbagai jawaban di sini, saya dapat membuat versi yang disingkat:
Versi ini akan menimpa widget yang ada
up-line-or-history
dandown-line-or-history
dengan widget baru yang ditentukan pengguna. Widget ini memungkinkan riwayat lokal dan kemudian akan memanggil widget asli , yang tersedia dengan.
nama -prefixed. Lihat dokumentasi widget zle untuk detailnya.Ini berarti bahwa Anda dapat menyimpan ikatan kunci yang ada. Karena itu Anda dapat menghindari harus mencari tahu apa urutan melarikan diri untuk mengetikkan panah ke atas di terminal Anda saat ini.
sumber
Jawaban di atas berhasil untuk saya.
Referensi: https://coderwall.com/p/jpj_6q/zsh-better-history-searching-with-arrow-keys
sumber