Arama-geçmişini ters-i-arama komutuyla (ctrl + r) nasıl iletebilirim?


12

Readline kılavuzunda

# man readline

Aşağıda ileri ve geri arama yöntemleri açıklanmaktadır.

reverse-search-history (C-r)
Search backward starting at the current line and moving `up' through the history as necessary.  This is an incremental search.

forward-search-history (C-s)
Search forward starting at the current line and moving `down' through the  history  as  necessary.   This  is  an  incremental search.

Ctrl + r tuşlarına basıp "apt-get" yazdığımda, sürekli ctrl + r'ye dokunarak geriye doğru arama geçmişi yapabiliyorum. Ama sonra ctrl + s tuşlarına basıyorum ve terminal ileri gitmiyor. Yanlış bir şey mi yapıyorum?

Ayrıca "M-" Meta öneki hangi anahtarı temsil eder?

Yanıtlar:


15

Dizisi C-sEğer görüldüğü gibi, uç sürücüsünden alınır

stty -a | grep '\^S'

Sekansı readline tarafından kullanılmak üzere serbest bırakmak için, durdurma terminal sekansını örneğin başka bir sekansa ayarlayın

stty stop ^J

veya ile tamamen kaldırın

stty stop undef

Bundan sonra C-sverilen terminalde çalışır.

~/.bashrcHer terminalde çalışmasını sağlamak için ayarlayın .

M-Dizisi anlamına gelir Altanahtarı, daha önce belirtildiği.


^ J çünkü iyi bir seçimdir stop, başka bir şey için kullanılmaz
ocaklar

3

Yukarıda önerildiği gibi farklı bir TTY 'durdurma' karakteri atamaya ek olarak, kullanmayı planlamıyorsanız (bunu yapmam eğilimindeyim) tamamen kaldırabilirsiniz:

$ stty stop undef

Daha sonra readline ileri arama için kontrolleri kullanabilir ve yeni bir durdurma karakteri eklendiğinden garip bir davranış elde edemezsiniz.


Bu çok daha iyi bir yol.
A.Danischewski

1

ileri arama geçmişi (Cs) çalışmaz (man sayfasında olmasına rağmen).

'M-' Alt tuşu değiştiricisini temsil eder.


1
Parçayı düzeltmeyin, C-scevabımı görün.
enzotib

0

Lütfen kullanmayın:

stty stop ^J

fakat

stty stop ^P

ya da başka herhangi bir şey, ^Jssh ile büyük sorunlar yaratır. (Neden olduğunu bilmiyorum zaten.) Giriş yaptıktan Enterve ters eğik çizgi çalışmıyor. ya da yazmak zorunda kaldım:

stty sane 
export TERM=linux

yazmak istemeden önce

ssh root@192...

yani

stty stop ^P

her iki sorunu da aynı anda çözdü.


0

XON / XOFF akış kontrolünü devre dışı bırakabilirsiniz:

stty -ixon

senin içinde ~ / .profile veya benzeri, sonra Ctrl + S tanınır.

Misal


0

Geri aramayı kullanırken ilerlemek için (Ctrl-R komutuyla):

  1. .Bashrc dosyanızı açın:
    sudo gedit ~/.bashrc

  2. bu satırı ekleyin ("f" harfi, henüz sistem tarafından kullanılmayan başka bir harfle değiştirilebilir)

    bind '"\C-f": forward-search-history' 
    
  3. Dosyanızı kapatın ve .bashrc dosyanızı (veya başka bir terminali açın) şu komutla güncelleyin:
    source ~/.bashrcveya. ~/.bashrc

ŞİMDİ KISAYOLLA TARİHİNDE İLERLEYİN: Ctrl + f

Ubuntu 18.04 LTS üzerinde çalışma


0

Kullandığımı unutmayın

stty stop ^J
stty -ixoff

İleri aramayı etkinleştirmek ve sinir bozucu devre dışı bırakmak için "Ctrl + S tuşlarına basılarak çıkış askıya alındı. ctrl + s tuşlarına basıldığında Konsole'de" Ctrl + Q tuşlarına basın. " "F4" kısayolu) iki kez ctrl + c yapmak zorunda kaldım.

Şimdi tercih ediyorum:

stty stop undef
stty -ixon

Aynı etkiye sahiptir, hepsi beklendiği gibi çalışır;)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.