Pintasan tunggal untuk meneruskan pencarian setelah Ctrl-R membalikkan pencarian

13

Saya menggunakan Ctrl+ Rsepanjang waktu, tetapi saya sering berakhir melewati perintah yang saya kejar karena saya menekannya dengan sangat cepat.

Untuk meneruskan pencarian, Ctrl+ Sdapat digunakan asalkan tidak digunakan terminal terlebih dahulu (konsole dalam kasus saya, di mana stty -ixondalam ~/.bashrcmemperbaikinya).

Namun, saya harus menekannya dua kali: sekali sepertinya masuk i-searchsetelah dalam reverse-i-searchmode dan kedua kalinya untuk benar-benar mundur.

Apakah ada cara untuk menghapus kebutuhan untuk menekan pintasan dua kali?

jozxyqk
sumber
3
Seperti halnya Ctrl-R, Ctrl-S pertama menunggu string untuk dicari. Yang kedua menggunakan kembali string pencarian yang sama yang Anda gunakan sebelumnya (dengan Ctrl-R dalam situasi Anda). Saya tahu tidak ada cara untuk menghindari dua langkah itu. readlinetidak memiliki fungsi "cari string yang sama sebaliknya".
xhienne

Jawaban:

11

Ini pendekatan yang berbeda. Jika Anda merasa nyaman dengan beberapa perintah pengeditan dasar vi, bash mendukung mode-vi untuk pengeditan baris perintah. Jika Anda benar-benar benci vi, Anda tidak akan menyukai ini. Tetapi jika Anda bisa menoleransi itu, Anda mungkin menemukan itu lebih disukai dan dengan penekanan tombol lebih sedikit.

set -o vi

Pencarian riwayat berfungsi seperti ini:

  • Esc untuk masuk ke mode perintah
  • / untuk memulai pencarian
  • Ketikkan teks string pencarian
  • Enter untuk melakukan pencarian
  • n untuk pergi ke pertandingan berikutnya
  • N untuk melompat kembali ke pertandingan sebelumnya
  • i untuk kembali ke mode insert
  • Enter untuk menjalankan perintah
MikeLRoy
sumber
Setara vi-style untuk Ctrl-R dan Ctrl-S adalah n dan N, masing-masing. Dan mereka tidak perlu mengetuk dua kali. Menarik!
Nathaniel M. Beaver
2

Rupanya pencarian Bash history membutuhkan penekanan pintasan pertama untuk memberi tahu Anda arah mana yang Anda cari, lalu tekan kedua untuk benar-benar melakukan pencarian. Saya rasa tidak mungkin untuk mengubah cara kerjanya tanpa mengubah kode sumber.

Namun, Anda dapat menginstal hstr (https://github.com/dvorka/hstr) yang menampilkan kotak saran dengan opsi pencarian lanjutan untuk dengan mudah melihat, menavigasi, mencari, dan mengelola riwayat perintah Anda:

masukkan deskripsi gambar di sini

dr01
sumber