Saya menggunakan zsh dan, karena saya pengguna Vim yang rajin, saya baru saja beralih menggunakan pengeditan gaya Vim pada baris perintah. (Itu berarti jika saya mengetik ls foo/bar
dan memutuskan saya ingin cd
sebaliknya, saya dapat menekan Esc ^
untuk melompat kembali ke awal dan cw cd
mengubah ls
ke cd
.
Itu semua bagus, tetapi masalahnya adalah saya tidak bisa lagi menggunakan Ctrl+R
untuk melakukan pencarian riwayat rekursif. Apakah ada cara lain untuk melakukannya, atau bisakah saya entah bagaimana mengesampingkan penguncian kunci Vim untuk mendapatkannya kembali?
garyjohn
menunjukkan cara Vim untuk melakukannya, danJdeBP
menunjukkan cara mendapatkan kembali keybinding untuk Ctrl + R! Saya akan bermain dengan kedua metode dan menerima jawaban nanti. Saya akan memutuskan berdasarkan pada 1) metode mana yang tampaknya lebih mudah bagi saya dan 2) yang mendapat lebih banyak upvotes. Terima kasih untuk kalian berdua!Jawaban:
Tentu saja Anda tidak bisa lagi menggunakan Ctrl+ R. Jika Anda membaca manual Z Shell, Anda akan melihat bahwa hanya ada kunci yang mengikat untuk
history-incremental-search-backward
widget diemacs
keymap. Tidak ada ikatan utama untuk itu di vi keymaps.Tetapi seperti yang juga akan Anda temukan dari membaca manual (Ini bab 18.), menambahkan pengikatan kunci adalah latihan yang cukup sederhana dalam penggunaan
bindkey
perintah:Anda bahkan tidak perlu menggunakan
zle
perintah untuk memetakan widget ke fungsi shell, karena ini adalah widget standar.Jika Anda membaca jawaban untuk pertanyaan yang sama yang ada di wiki Z Shell , Anda akan melihat perintah untuk menambahkan ini secara khusus ke vi "command" dan "insert mode" keymaps:
Juga catat bahwa, seperti yang ditunjukkan garyjohn , dalam keymap "perintah" vi, /karakter terikat ke
vi-history-search-backward
widget. Perbedaan antara widget ini danhistory-incremental-search-backward
widget adalah perilaku widget yang berlaku setelah seseorang dalam mode pencarian riwayat. Berikut adalah beberapa perbedaan yang akan Anda perhatikan:history-incremental-search-backward
matikan antaramain
danvicmd
keymaps ketika Anda mengaktifkanvi-cmd-mode
widget sementara masih dalam mode pencarian. yaitu dariemacs
mode menekan Esctombol atau Ctrl+ XCtrl+ untuk mengaktifkan mode Vpencarian antaraemacs
danvicmd
keymaps. (Memintahistory-incremental-search-backward
darivicmd
keymap dengan demikian merepotkan, kecuali Anda mengikat sesuatu kevi-cmd-mode
dalamvicmd
keymap juga.)vi-history-search-backward
memperlakukanvi-cmd-mode
widget sebagaiaccept-line
dan akan mengakhiri pencarian, memasukkan kembali mode perintah yang Anda masukkan pencarian. yaitu (dengan binding default) /memasuki mode pencarian dari mode perintah dan Esckembali ke mode perintah.history-incremental-search-backward
, keduanyahistory-incremental-search-backward
danvi-rev-repeat-search
widget dikenali. yaitu (dengan anggapan bahwa Anda telah mengubah binding seperti di atas) baik Ctrl+ Rdan Nakan mencari baris yang cocok sebelumnya.vi-history-search-backward
, hanyavi-rev-repeat-search
widget yang dikenali. yaitu (dengan anggapan bahwa Anda telah mengubah binding seperti di atas) Ctrl+ Rakan menyebabkan bunyi bip dan diabaikan.sumber
Dalam mode vi bash, mengetik
<Esc>/<string><Enter>
akan mencari riwayat perintah<string>
.n
akan mencari lebih jauh ke belakang dalam sejarah;N
akan mencari ke depan. zshell mungkin sama.sumber
Saya lebih suka menggunakan:
Dengan cara ini saya bisa mengetik
ESC /text
dan melihat baris perintah. Jika saya ingin pergi pertandingan berikutnya saya ketikESC n
sumber