Son eğik çizgiye kadar girişi silme


16

Bir sunucudaki birkaç dosya arasında sık sık dalga geçeceğim. Aşağıdaki örnek komutları sırayla çalıştıracağım:

nano /web/site/path/to/file
/web/site/script.py
nano /web/site/path/to/anotherFile
nano /web/site/path/to/yetAnotherFile
/web/site/script.py
nano /web/site/path/to/etc

İtibaren gitmek için nanoşu anda basın sonraki I komuta Upve Backspaceyolun son bölümünü yerine. Buradaki sorun, gerçekten, gerçekten tembel olmam .

Aşağıdakilerden birini yapan bir klavye kısayolu (veya Bashism) var mı?

  • Kullanılan son yolla değiştirin (sonunda ekstra bir bit ile)
  • Geçerli satırda (örneğin, bastıktan sonra Up) sonuncuya kadar sil/

1
Ne demek istediğinden tam olarak emin değilim, ama bence ilk bölüm için alt+ .?
Sparhawk

@Sparhawk başka bir şeyAlt + . için kullanılır .
Radu Rădeanu

@ RaduRădeanu Evet, belki de soruyu yanlış anlarım. "Son kullanılan yolla (sonunda ekstra bir bit ile) yerini al" ifadesinin alt+ ne .yaptığı anlamına geldiğini düşündüm .
Sparhawk

@Sparhawk Yine, ayda bir kez gerçekten işe yarayamayacağım gibi görünen bu kısayollardan biri. Alt-backspace ile birlikte, benzer dosyaları farklı komutlarla çalıştırmak için oldukça kullanışlıdır.
Oli

@Oli Oldukça adil kullanma eğilimindeyim, ama her zaman diğer yöne nasıl taşınacağımı unutuyorum !
Sparhawk

Yanıtlar:


21

Bence Alt+ Backspacekısayolunu arıyorsunuz .

UpBu düğmeye bastıktan sonra bir öncekine /veya spacekarakterine geri dönmelidir.


7
ŞİMDİ DURDURULAMAM! (Düzenleme: Yemin ederim ki yılda en az on kez bu kısayolu öğrendim ve unuttum)
Oli

3
Bu ne yapmalı? Terminalimde düzden farklı bir şey yapmıyor gibi görünüyor backspace.
Bakuriu

1
@Bakuriu Bu kısayol varsayılan ayar olmalıdır. Eğer sisteminizde ne eşlendiğini öğrenmek istiyorsanızbind -P | grep '^backward-kill-word'
Sylvain Pineau

1
@Bakuriu Burada da Mac'deyim.
laike9m

9

Bir sözcüğü istediğiniz gibi geri öldüren okuma çizgisi bağını algılamak için terminalinizde aşağıdaki komutu kullanabilirsiniz:

bind -p | awk '/kill/ && /word/ && /backward/'

Varsayılan bir Ubuntu kurulumunda çıktı şu şekilde olabilir:

"\e\C-h": backward-kill-word
# shell-backward-kill-word (not bound)

İkinci satır bu noktada önemsiz görünüyor, bu yüzden ilk satırın ne anlama geldiğini görmeye çalışalım. Anladığım kadarıyla, backward-kill-wordaslında tüm karakterleri silmek taleb işlevi önceki özel karakter (e kadar /, ;, ,bağlı olduğu gibi) \e\C-hanahtar dizisi. Şimdi, sırası ile \e temsilEsc anahtarı, \C- Ctrlanahtarını ve \C-haçılımı Ctrl+ , bu durumda eşdeğer olan anahtar.hBackspace

Yani, aradığınız Esc+ Ctrl+h ile eşdeğerdir klavye kısayolu Esc+Backspace ve, çünkü yapmak xterm davranışını Altanahtar meta karakter ve meta karakter kendisi öncesinde karakteri ile iki karakterlik dizisine dönüştürülür gibi davranmaya Esc(bkz man xterm) , Alt+Backspace ile eşdeğerdir .

Şimdi, beğenmediyseniz ve unutmaya devam ederseniz, yeni bir kısayol oluşturmak için aşağıdaki komutu kullanabilirsiniz, diyelim ki Esc+ w, amacınız için:

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

Bu yeni kısayolu, readline kullanan tüm komutlarda her zaman kalıcı yapmak için, ~/.inputrcdosyanıza aşağıdaki satır satırını ekleyin :

"\ew": backward-kill-word

Daha help -m bind | sensible-pagerfazla bilgi için bakınız .


2
İyi cevap. Daha yaygın olarak, bind komutuyla tüm ayarı tek tırnak içine alırsınız; bind '"\ew": backward-kill-word', ama bu çok kötü. Ve buna değer de koyabilirsiniz söz olabilir "\ew": backward-kill-wordde ~/.inputrckullanılması taleb ayrıca piton etkileşimli kabukta readline etkinleştirirseniz, örneğin, bağlama bağlama da var geçerli olacağını o sahip olacağı ve bu durumda diğer komutları.
geirha

@geirha Evet, ne dediğinin farkındayım , ama OP'nin bunu nasıl yöneteceğini bildiğini düşündüm. Her neyse, şimdi cevabımın OP için çok yararlı olmadığını anlıyorum (sadece kısayolu hatırlamak istedi), ancak bu sitenin diğer kullanıcıları için yararlı olmayı umuyorum ve bunun için gözleminizi ekleyerek cevabımı düzenledim. Teşekkür ederim.
Radu Rădeanu

0

Başka bir tuş kombinasyonu:

Alt+ Bsonra Ctrl+K

Alt + B     Move cursor backward one word on the current line    
Ctrl + K    Clear the line after the cursor

Alt+ Bsonra Alt+D

Bu, sözcükler arasındaki özel karakterleri silmeden son sözcüğü kaldırı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.