Etkileşimli kabuktaki bir yolun bir kısmı nasıl silinir?


19

Bir yolun bir bileşenini silmek için bash ve zsh içinde bir kısayol var mı? Örneğin, yazdığımda ls ~/local/color/ve imleç satırın sonundaysa, sonunda silmek için bir kısayol var color/mı? İdeal olarak hem vi modunda hem de emacs modunda çözümler istiyorum

Yanıtlar:


25

En sık kullanılan klavyeler için varsayılan bash emacs modunda en sık kullanılan komutlar :

hareket

  • Ctrl- p, veya Up: önceki komut
  • Ctrl- n, veya Down: sonraki komut
  • Ctrl- b, veya Left: önceki karakter
  • Ctrl- f, veya Right: sonraki karakter
  • Alt- b: önceki kelime
  • Alt- f: sonraki kelime
  • Ctrl- a, veya Home: komutun başlangıcı
  • Ctrl- e, veya End: komutun sonu

düzenleme

  • BkSpc: önceki karakteri sil
  • Ctrl- d, veya Del: geçerli karakteri sil
  • Alt- BkSpc: sola doğru kelimeyi sil
  • Alt- d: sağdaki kelimeyi sil
  • Ctrl- u: komutun başlangıcına kadar sil
  • Ctrl- k: komutun sonuna kadar sil
  • Ctrl- y: son kesimi yapıştır

Miscellanea

  • Cltr- /: geri al
  • Cltr- r: artımlı geriye doğru geçmiş araması

2
Tamamlayıcı: zsh içinde bu amaç için bir kısayol ayarlayınbindkey [key] vi-backward-kill-word
Vayn

Teşekkürler. Bunu ~ / .zshrc dosyama ekledim ve Alt + Backspace tuşlarına bastığımda benim için iyi çalışıyor: bindkey "^ [^?" vi-geri-öldürme kelimesi. İdeal değil.
Tim Stewart

Alt-Bckspc ve Alt-d, onları denediğim dosyayollarıyla iyi çalışır. (bash)
ağırbaşlı

10

Bunun unix-filename-ruboutiçin de var Readline!

# in ~/.inputrc
# press ctrl-b to delete unix filename parts
# see: man bash | less -p 'unix-filename-rubout' and
#      http://www.calmar.ws/vim/vi-bash.html
set editing-mode vi
set keymap vi
"\C-b": unix-filename-rubout

2
IMHO unix-filename-rubout, eğik çizgi veya boşluk silerken sorduğu soruya doğru cevaptır, oysa Alt-BkSpckısa çizgi, alt çizgi, nokta vb. Karakterlerde duracaktır.
Steve

6

Varsayılan olarak bash (ve sanırım zsh) emacs modunda olacak. Böyle bir şey deneyebilirsiniz:

Esc + bimleci bir kelime geri getirecektir. Ctrl + ksatır sonuna kadar silinir.

Çoğu modern kabuk (bash gibi) gelişmiş komut satırı düzenleme özelliklerini uygular. Bu komutlar emacs düzenlemesine yakındır (satır başlangıcı için Ctrl + A, satır sonu için Ctrl + E, ...).

Vi benzeri editörlere sahipseniz, vi moduna izin vermeyi deneyebilirsiniz.

set -o vi

Kabuğunuza benzer modlar (komut modu / ekleme modu) verir ve standart komutlara erişirsiniz (silme için d, değiştirme için r, ...)

Vi Modunda, açıkladığınız şeyi şu şekilde yapabilirsiniz:

Esc (command mode); d; b.

1
"Komut satırı düzenleme vi modunda daha güçlü ve eksiksiz" demezdim, emacs modunda vi modunda yapabileceğiniz her şeyi yapmak için komutlar vardır .
enzotib

Biraz taşındığımı itiraf ediyorum. Bunu yeniden ifade edeceğim.
rahmu

Hatırlattığınız için teşekkürler bash'da vi-mode var, bu yüzden bash'da dbbu senaryoda kullanabilirsiniz . Ayrıca vi-backward-kill-wordzsh'de istediğim şey de buldum ve bash'da vi-mode'u ayarlamaktan daha uygun. Ama yine de bash'da bu amaçla bir emacs modu kısayolu bulmak istiyorum .
Vayn

Veya "alt-bC". Bu şekilde, dbbazı durumlarda olan bir karakter bırakmaz.
Wildcard
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.