OS X terminalinde kelimeler nasıl atlanır?


11

Diyelim ki Mac OSX terminaline uzun bir komut yazdım, yani

say "Hello, how are you? I am good thank you. How is it going with you? Fine, thanks"

ve şimdi kelimeyi Helloolarak değiştirmek istiyorum Hi.

Bunu yapmak için, şimdi "imleç" sözcüğün sonuna gelene kadar sol klavye tuşuna basmaya (veya basılı tutmaya) Hellove sonra silmeye devam etmeliyim . Normal 'basılı tutma seçeneği' tekniği diğer OS X uygulamalarının çoğunda olduğu gibi çalışmaz.

Bir kelimeyi bir seferde atlamanın bir yolu var mı (veya imleci oraya getirmenin daha kısa bir yolu)?

Yanıtlar:


19

Komut satırı düzenleme, Terminal'in değil kabuğunuzun bir işlevidir . Muhtemelen kabuğunuz bash'tır ve muhtemelen komut satırı düzenleme stili “emacs” olarak ayarlanmıştır.

İşte kullanışlı bulabileceğiniz Emacs tarzı tuş kombinasyonlarından bazıları:

  • CA: beginning-of-line
  • Ce: end-of-line
  • Mf: forward-word
  • Mb: backward-word
  • CD: delete-char
  • Md: kill-word(sonraki 'kelimeyi' sil)
  • M-DEL: backward-kill-word

C- xControl + anlamına gelir x, yani Ca Control+ a.

M- xMeta + anlamına gelir x, ancak muhtemelen klavyenizde Meta tuşu yoktur. Bunun yerine ESC x (yani Escapeo zaman x) kullanabilirsiniz. Terminalde , tuşlarını basılı tutmadan önce ESC'yi otomatik olarak gönderme ayarı vardır Option. Bu özelliğin kullanılması, Mac OS X'in genellikle Option değiştiricisini kullanırken sağladığı genişletilmiş karakter işlemeyi devre dışı bırakır. Bu nedenle, az sayıda genişletilmiş karakter kullanıyorsanız ve ESC x göndermek Option+ istiyorsanız, bu Terminal seçeneğini etkinleştirebilirsiniz .x

Örneğinizde “Merhaba” ya geçmenin birçok yolu vardır:

  • “Merhaba” için arama yapın: Cr H ello Cj (veya ESC)
    • Normal Emac'larda, Returnaramayı geçerli konumda sonlandırmak ve düzenlemeye geri dönmek için RET ( ) yöntemini kullanabilirsiniz . Ancak bash'da , varsayılan bağlantılar, artımlı bir arama etkin olsa bile RET'in (yani Cm) her zaman geçerli satırı yürütmesine neden olur. Dolayısıyla Cj / ESC kısmı normal Emac'lardan bir sapmadır.
  • Satırın başına git ve ileri git: Ca Mf Cf (veya )
  • Satırın başına atla, sonra kelimelerle hareket et: Ca Mf Mf Mb
  • Mb'ı çok kullanın (yalnızca Seçeneği Meta ile eşlerseniz gerçekten mümkündür).

İstediğiniz değiştirme işlemini gerçekleştirmenin birkaç yolu vardır:

  • kelimeyi silin ve değiştirin: Md H i
  • karakterleri sil ve değiştir: Cd Cd Cd Cd Cd H i
  • “H” öteye geçin ve aşağıdaki işi silin, değiştirin: Cf Md i
  • “H” yi geçip kalan karakterleri silin, değiştirin: Cf Cd Cd Cd Cd i

Kelimenin sonunda durduysanız (belki Ca Mf Mf üzerinden), M-DEL Hi kullanabilirsiniz.

bind -P | lessBaşka ilginç bağlantılar bulmak gibi bir şey yapabilirsiniz . Ayrıntılar için bash man sayfasının readline bölümüne (veya bash bilgi sayfalarının readline kısımlarına ) bakın.


Tamam, bu aslında soru ile ilgili değil, ama klavye tuşlarına benzeyen kelimeleri nasıl yerleştiriyorsunuz?
Wuffers

1
@Bay. Adam: <kbd>Elemanları kullan . Buradaki işaretlemede HTML'nin bir alt kümesine izin verilir . Görünüm, etiketin site yerel stiline (arka plan, kenarlık rengi, kenarlık stili, kenarlık genişliği vb.) Bağlıdır. Sen inceleyebilir Yazımın kaynağı işaretlemesi (üzerinde “görünümü kaynak” bu sayfada ). Süslü stil MSO'da devre dışı bırakılmış olsa bile meta.stackexchange.com/questions/5527 adresine bakın : meta.stackexchange.com/questions/1939/#23571
Chris Johnsen

Bunun açık olup olmadığından emin değilim, anlaması bir dakika sürdü, ancak meta anahtarı olmayan bir MBP'deyim ve varsayılan bir Terminal yapılandırması kullanıyorum. Kelimeler üzerinde ileri ve geri hareket etmek için Esc ve ardından F, veya Esc ve B'ye basabilirim.
cwd

IDE ile eşleştirmek için ctrl veya fn + ok tuşlarını yapabilmem için ortamı veya kabuğu değiştirmenin bir yolu var mı?
codecowboy

1
Vi bağlamaları .bashrc'nize ekleyerek de kullanabilirsiniz set -o vi! gnu.org/software/bash/manual/html_node/…
Will Munn

2

İçin varsayılan okuma satırı bağlaması forward-wordMeta-F'dir ( bash(1)man sayfası, READLINE bölümü, Taşınma Komutları alt bölümü). Meta'nın OS X'te ne anlama geldiğinden emin değilim. Seçenek belki.


+1 - haklısın. Bu OSX üzerinde bash çalışır
Yuval
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.