Bash: Ctrl-Backspace kelimesini geriye doğru silebilir mi?


19

Kabuktayken (bash) - Ctrl-Backspace öğesinin "sözcüğü geriye doğru silmesi" için bağlanmasını istiyorum. Mümkün mü?

Düzenle :

konsoleKDE'de - terminal kullanıyorum .


2
Soru basit, hiçbir şikayet yok. Sadece gerçek bir kazanç elde etmek ve yabancı sistemlerde davranışı asla görmemek için özelleştirmek yerine, birçok uygulamada zaten var olan "standart" anahtar bağlarını kolaylaştırmanın çok değerli olduğunu söylemek istiyorum. Ctrl+walışmanız gereken şey bu, imho.
Daniel Andersson

@ Daniel Andersson: veya alternatif olarak - Ayarlarınızı yabancı makineye aktarmak için bir yol geliştirebilirsiniz .
Adobe

Dotfiles'ı paylaşmak çözülmüş bir sorundur, ancak oldukça açık ayrıcalıklara sahip olduğunuz az çok yerel bilgisayarlardan başka bir işe yaramaz. Yabancı bir sistemdeyseniz, büyük olasılıkla böyle şeyleri yeniden yapılandırma özgürlüğüne sahip değilsiniz (en azından aynı makineyi kullanan meslektaşları tarafından ezilmeden :-)). Ayrıca, her yeni uygulamanın özel bir tedaviye ihtiyacı olacaktır.
Daniel Andersson

6
Ters bir sorun var, ben Ctrl-wkonsolda "önceki sözcüğü silmek" olarak alıyorum ve hatta sekme / geçerli dosyayı kapat anlamına Eclipse veya Chrome içgüdüsü ile bunu yapmak için alıyorum . Oldukça can sıkıcı.
Ezequiel Muns

1
Chrome SShInATab ile aynı sorunu yaşıyorum. Ctrl-W olmadan ctrl-W'yi nasıl yaparım? :)
Riccardo SCE

Yanıtlar:


11

Neden çoğu terminalde zaten eşlenmiş olan Alt+ Backspaceveya Ctrl+ kullanmıyorsunuz W? Konsol hakkında emin değilim. Xmodmap (man xmodmap) diğer özel anahtarları da yeniden eşlemek için kullanılabilir. (Paradoksal olarak, xmodmap Backspace'i çok iyi yeniden eşleştiremez, çünkü terminal eşlemeleri geçersiz kılar, ancak çoğu tuşla iyi çalışır ...).


9
Çünkü Emacs'ımda Ctrl-Backspace kullanıyordum. Ctrl-w'yi biliyordum. Alt-Backspace benim için yeni (+1).
Adobe

1
Güzel nokta, @hellork. X sunucusundaki control + backspace tuşunu (xmodmap aracılığıyla) kesebilir ve kullanılmayan bazı karakterlerle (alt backspace gibi) eşleyebilirsiniz.

4
Bu konuda can sıkıcı bir şey, ctrl + backspace'in çoğu büyük işletim sistemindeki çoğu GUI uygulamasında "kelimeyi geriye doğru sil" için gerçekten yaygın bir eşleme olmasıdır. Aynı şekilde, Ctrl + W "pencereyi kapat" için de yaygındır. Alt + w nadiren GUI'lerde düşünebileceğim herhangi bir şey için kullanılır. Standardizasyon harika olurdu. Acaba daha büyük aksama, terminalleri değiştirme veya GUI'leri değiştirme nedir?
naught101

1
@naught, Control-W zaten unix terminallerinde varsayılan kelime silme anahtarıdır. Evet, Windows / GUI konvansiyonuyla çelişiyor, ama aslında ilk geldi - yıllarca. Microsoft'u suçla!
alexis

11

Bu konuyu google üzerinden buldum, ancak cevap duymak istediğim şey değildi. Bu yüzden oynadım:

Terminalimde, normal geri tuşu gönderirken ^Hctrl + geri tuşu gönderir ^?. Bu nedenle ^?, varsayılan olarak Ctrl + W ile kullanılabilen bir sözcüğü silmek için yeniden bağlanma durumu basit olmalıdır .

İlk olarak (başarısız deneme):

$ bind -P | grep 'C-w'
unix-word-rubout can be found on "\C-w".

Bu nedenle, bu işe yaramalıdır:

$ bind '"\C-?":unix-word-rubout'

Ancak ... açıklayamayan var mı?

İkinci (başarılı) deneyin:

$ bind '"\C-?":"^W"'

Burada ^Wbir hazır / çiğ ^W(CTRL + V Ctrl + W görünür hale getirmek için).


İlk çözümünüz benim için çalıştı! İkincisi olmadı.
Drew Hoskins

İkinci deneme, Ctrl-Backspace yerine backspace'in yerini mi alıyor?
user541686

7

Yalnızca aşağıdakileri içerecek şekilde düzenleyin ~/.inputrc(bir tane oluşturmanız veya /etc/inputrcorayı kopyalamanız gerekebilir ):

# Ctrl-Delete: delete next word
"\e[3;5~": shell-kill-word

# Ctrl-Backspace
"\C-H": shell-backward-kill-word

Bu , imlecin yanındaki kelimeyi silmek için Ctrl+ Deleteişaretini de gösterir.


Benim için çalışmıyor.
Jonathan

6

Orada bazı iyi cevaplar burada, ama ben o andan itibaren bir eşleme ekleyerek, Ayarlar-> Düzen Güncel PrOfile> Klavye-Edit> Konsole'da çözdün Backspace+Controliçin \x17. (Ctrl-w için ASCII kodunu kullanarak buldum showkey --ascii.)


Şunu işaret ettiğiniz için teşekkürler showkey. Böylece ALT+Dimlecin önündeki kelime silmek için karşılık olacağını anladım \x1b\x64.
loki

Teşekkür ederim, sorunumu çözdü. Benim durumumda Alt + Backspace'i yeniden eşleştirmem gerekiyor ve sırası \x1b\x7f.
DDMC

3

Bu, bash'ın gördüğü şeye bağlıdır. Normal terminal etkileşimlerinde bash, hangi tuş değiştiricilere bastığınızı görmez, yalnızca sonuçta ortaya çıkan karakterdir. Geri tuşu, örneğin, kontrol-H ile aynıdır. Vardiyayı veya kontrolü basılı tutmak fark etmez.

ANCAK, terminal uygulamanız (xterm? Cmd? Terminal? Macun? İşletim sisteminize bağlıdır) tuş basışlarınızı görebilir ve denetim-geri tuşu tuş kombinasyonunu bash'nin geri tuşu dışında söyleyebileceği bir şeyle eşleştirmenin bir yolu olabilir.


Ben bash'ýmýn geri dönmediđini gördüm. Ama bunu görmesini sağlamak mümkün olabilir.
Adobe

@adobe, ne demek istiyorsun? Terminalinize 'stty' yazın ve bununla ilgili kılavuzu okuyun. ^ H silme karakteriniz olacak şekilde ayarlanmışsa, başka bir şeye ayarlayabilirsiniz ... bunun iyi bir nedeni varsa.

1
Bunu github.com/calj/gtconf/blob/master/zsh/zshrc adresinde nasıl yapacağınıza dair iyi bir örnek var . Konsole yapmanıza izin verir. * .Keytab dosyalarından birini / usr / share / kde4 / apps / konsole / dizininden ~ / .kde / share / apps / konsole dizinine kopyalayın ve yukarıdaki anahtardaki önerilerle değiştirin ve "key Backspace" satırını silin ve eklerken: key Backspace-Shift-Control : "\x7f"ve key Backspace-Shift+Control : "\E[9;3~"ayrıca başlık satırını değiştirdiğinizde değiştirin: keyboard "Xfree4 Modlist"örneğin. Daha sonra "\e[9;3~": backward-kill-word"~ / .inputrc
Adam

2

Bunu dene:

bind '"\C-_":backward-kill-word'

İsteğe bağlı olarak, kalıcı hale getirmek için ~ / .inputrc dosyasına aşağıdakileri ekleyin:

"\C-_": backward-kill-word

Kubuntu 14.04'te 4.3.11 bash üzerinde çalışıyor


2
Control-backspace öğesinin Control-undercore ile aynı olması olası değildir.
Thomas Dickey

1
Bu konuda çalıştığım her şeyden, bu işe yaradı! Windows /
WSL'de

Cygwin'de bu benim için harika çalışıyor GNU bash, version 4.4.12(3)-release (x86_64-unknown-cygwin).
zagyi

1

Konsole'de:

  • Tıklayın Settings -> Edit current profile
  • 'Klavye' sekmesini tıklayın -> [Edit...]
  • tıklayın [Add]düğmesini ve altında Key Combinationsütun türü Backspace+Ctrl. Gelen Outputkolon türü 0x08(geleneksel olarak geri al karakteridir)

Şimdi bu anahtar eşleştirmek gerekir backward-kill-wordüzeri

# ~/.bashrc

bind '"\x08":backward-kill-word'

Teşekkürler. Benim için, en azından xfce4 terminalinde çalışıyor.
limon

0

Çoğu terminalde CTRL + W zaten bir sözcüğü geriye doğru silmelidir. Bu xterm ile çalışıyor ve sanırım konsole ile çalışıyor. CTRL + W, ekleme modunda, emacs ve her kabukta vim ile çalışacak metin tabanlı programda standart bir anahtar bağlayıcıdır.


5
Ben Ctrl-w Emacs, FireFox, Krusader içinde "sekmeyi kapat" bağlanmış - bu yüzden Konsole de bir sekme kapatma kombinasyonu olarak ayarlayın.
Adobe
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.