Terminal'deki tuşlara komutları nasıl atarsınız?


10

Terminal kullanımında kelimelere özel tuş kombinasyonları atamak için bir çözüm var mı? Örneğin, daha az komut çok kullanışlıdır ve ia lot kullanarak başka bir işlemin çıktısını içinden geçiririm.

Fikir, yalnızca farklı komutlar yazmak için atanmış terminal kullanımında etkin olan özel tuş kombinasyonları oluşturmak mıdır? Böylece terminal penceresinde Ctrl+ tuşuna basmakL

| less

ya Ctrl+ Giçin duramazdı

| grep

Not: Ben sadece nihayet yürütmek değil komut satırına harfleri eklemek demek. Sekme tamamlanmasına benzer bir yol ama daha spesifik.

Yanıtlar:


10

Evet, bind komutunu kullanabilirsiniz

bind '"\ey"':"\"less \C-m\""

Alt-e'yi daha az komutla eşler ve yürütür (\ Cm aka Ctrl-m ile)

Muhtemelen için | ondan kaçman gerek.

bind '"\ey"':"\"\|less \C-m\""

Sadece komut satırına eklemek istiyorsanız * \ Cm \ ""

Önceden tanımlanmış bazı bağlamalar olduğundan dikkatli olun:

Ctrl + A    Go to the beginning of the line you are currently typing on
Ctrl + E    Go to the end of the line you are currently typing on
Ctrl + L                Clears the Screen, similar to the clear command
Ctrl + U    Clears the line before the cursor position. If you are at the end of the line, clears the entire line.
Ctrl + H    Same as backspace
Ctrl + R    Let’s you search through previously used commands
Ctrl + C    Kill whatever you are running
Ctrl + D    Exit the current shell
Ctrl + Z    Puts whatever you are running into a suspended background process. fg restores it.
Ctrl + W    Delete the word before the cursor
Ctrl + K    Clear the line after the cursor
Ctrl + T    Swap the last two characters before the cursor
Esc + T     Swap the last two words before the cursor
Alt + F     Move cursor forward one word on the current line
Alt + B     Move cursor backward one word on the current line
Tab     Auto-complete files and folder names

Yukarıda gördüğünüz gibi Control tuşu Cm ile yapılır, böylece Ctrl-g ile daha az komutu aşağıdaki gibi başlatabilirsiniz:

bağla '"\ Cg"': "\" \ | less * \ Cm \ ""

Alt (yalnızca ALT için) tuş kodlarını almak için kabuktan okuma komutunu kullanabilirsiniz:

@~$ read
^[y

^ [y eşittir \ ey

Daha fazla bilgi için bu soru stackoverflow'da da yanıtlandı:

/programming/4119991/bash-call-script-with-customized-keyboard-shortcuts


teşekkürler, nasıl bir ciltleme silebilir veya tüm ciltleri gösterebilirim?
NES

ilk 2 örneğinizde bir sorun var. bağlayıcı sözdiziminizle atandıktan sonra her zaman joker karakteri de yazdırır.
NES

bind -p ve bind -P size tüm bağlantıları gösterir. Yıldızla bir hata yaptım ... Cevabı güncelliyorum
tmow

çok teşekkürler. belki balıkta aynı hedefe nasıl ulaşacağınız hakkında bir fikriniz var mı? i şimdiye kadar çalışmak için olsun ama sorun balık otomatik olarak sadece varsayılan olarak komut satırına dize eklemek yerine komutu yürütmek gibi görünüyor. İşte manpage linux.die.net/man/1/bind Ne yazık ki örnek benim durumum için çok yararlı değil.
NES

Bu zaten yerleşik bir işlev bence fishshell.com/user_doc/index.html#editor Alt-p kısayolunu dava ediyor
tmow
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.