Bash'deki çoklu satır komutunda önceki satırları nasıl düzenlerim?


24

Bash'de birden fazla satırı kapsayan bir komut girerken, önceki satırları nasıl düzenlerim? GNOME Terminalini kullanan bir Linux Nane (Lisa) kullanıcısıyım.

Örneğin, şunu yazalım:

$ echo "foo bar
> baz
>

Ve sonra komutun üçüncü satırını yazmak üzereyken birden bire "foo" ve "bar" un ayrı satırlarda olmasını istediğimi anlayın. İmlecimi "foo" ve "bar" arasına nasıl girebilirim ki enter tuşuna basıp ayrı satırlara koyabilirim?

(Düşündüğünüz kadar kolay değildir. Yukarı ok çalışmaz, Ctrl-P de çalışmaz. Lütfen göndermeden önce deneyin! Teşekkürler!)


Kabul edilen cevap, çözüm olmadığını söylüyor, ancak sorun yok. Aşağıya bakın
cdosborn 09:15 '

Yanıtlar:


16

Bu ne yazık ki bashterminale bağlı değil. Seçenekleriniz:

  1. Yeni satırlar yerine noktalı virgül kullanın, ancak o zaman bile ekran satırını yukarı taşıyamazsınız, ancak karakter veya sözcük hareket komutlarını kullanmanız gerekir. (İşin garibi, zshen azından geçerli komutun içinde değil, geçmişi düzenlerken bir bileşik komut içinde hareket etmenize izin verir .) Bazen fc(önceki komutla sizi editörünüze atar) bileşik komutları kullanmanın en kolay yoludur.

  2. Bash kullanıyorsanız, aşağıdaki tuş kombinasyonunu kullanın:

    ctrl x e

    Metin editörünüzü kullanarak üzerinde çalıştığınız komutu açacaktır. Dosyayı kaydedin ve çıkın. ( Shell Hater'in sunumunda komutu buldum .) Zsh kullanıcılarının bu alternatifi var .


1
Bash man sayfası hangi editörün nasıl değiştirileceğini açıklar: edit-and-execute-command (C-xC-e) - Geçerli komut satırında bir editör çağır ve sonucu kabuk komutları olarak çalıştır. Bash, bu sırada $ VISUAL, $ EDITOR ve emacs'leri editör olarak çağırmaya çalışır.
Matthew,

Editör açmadan bir çözüm var.
cdosborn

Teknik olarak bash'a kadar değil - bash'ın girişleri almak için kullandığı "readline" kütüphanesine kalmış.
Christian Herenz

10

Çözüm, çok satırlı doğru olana kadar hiçbir zaman komut girmemektir, sadece şunu yazın: bir CtrlvCtrlj sonraki satıra gitmek istediğinizde. Metabbir kelime geri gitmek için.

çözüm

@ RICI en kredi cevap


3

Tuhaf Ctrl+C, aradığın şey bu.

sen açıkken

$ echo "foo bar
> baz
>

sadece basın Ctrl+C(düzenlenen komut satırı askıya alınır) ve Up(önceki geçmiş) tuşuna basın . İsteğiniz şöyle olacaktır: (> olmadığına dikkat edin)

$ echo "foo bar
baz

Artık Left Rightçizgi atlamalarıyla bile dolaşabilirsiniz.

Sadece bir tuhaflık var, başka bir satır eklemek için son karakterde olmalısınız, bu nedenle mevcut satırları düzenlemek (başlangıç ​​ile gitmek Ctrl+A) Enter yeterliyse bir basın veya Ctrl+Edaha fazla satır eklemek için sonuna gidin ( ) Enter. Başka bir dezavantajı Ctrl+_(geri al) yalnızca son değişikliklerden geri yüklemedir.Ctrl+C


-2

Komutları kopyalayın ve not defterine yapıştırın, sonra formatlayın. Bundan sonra komutlarınızı terminale geri kopyalayabilirsiniz.

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.