Mac Terminalinde bir komut satırı komutunun önceki bir bölümüne atlamanın bir yolu var mı?


9

Sık sık kendimi bash kabuğuna uzun komutlar yazarken bulurum - birçok argüman, web adresi, rota vb. Sık sık her zaman "paket exec" komutunu başında unuttuğumu veya bir şeyi yanlış yazdığımı ya da alıntıları unuttuğumu fark edeceğim. Ya da "vim" yerine "cd" koymak gibi bir şey.

Böylece, komutun başına geri dönene kadar sol ok tuşunu basılı tutmak için sıkıcı bir süreç başlar.

Çizginin başına tekrar atlamanın bir yolu var mı?


2
Varsayılan terminal uygulamasından kurtulmak ve iTerm'i indirmek isteyebilirsiniz
Clement Herreman

Neden? Sadece kontrol ettim ve hemen hemen aynı gibi görünüyor. (Ev anahtarı şimdi çalışıyor, ama gerçekten önemli olmayan diğer anahtarlara sahip olduğum için). Tüm ayarlarım ve yapılandırmalarımı ve görevlerimi yeniden yapmaya değer kılan ne sunuyor?
GlyphGryph

Bu, .inputrc ile ayarlayabileceğiniz bir şey gibi görünüyor
Rob

Ayrıca, her seferinde bir kelimeyi atlamak için sırasıyla ⌥B ve ⌥F tuşlarını kullanın.
fideli

@fideli, ancak yalnızca “Seçeneği meta anahtar olarak kullan” seçeneğini etkinleştirdiyseniz. Mac OS X Lion 10.7'den itibaren, Terminal'in varsayılan klavye ayarlarının Option-Sol Ok / Sağ Ok ile Esc-b / f arasında eşleştiğini ve bu nedenle yapılandırmaya gerek olmadığını unutmayın.
Chris Page

Yanıtlar:


12

^ A ve ^ E'ye ek olarak,

  • Esc- bbir kelimeyi geri atlamak
  • Esc- fbir kelime ileri atlamak
  • Ctrl- bbir karakter geri gitmek için
  • Ctrl- fbir karakter ileri gitmek için

Hareket komutları için bash kılavuzuna bakın .


Unutulmaması gereken bir şey - bu emacsEmacs'tan ve shellopts'ınıza seçenek ekleyerek bundan daha fazlasını elde edebilirsiniz.
TC1

6

Emacs komutlarını kullanabilirsiniz, örneğin:

  • ctrlKomut satırının başına gitmek için -A
  • ctrlKomut satırının sonuna gitmek için -E

Bu bash, Mac'e özgü değil.


3
set -o vi

Sonra Escardından

^satır başı satır $sonu bbir kelime geri wkelime bir kelime ileri


Vim'in oldukça büyük bir hayranıyım, bu yüzden cevabınızın prensibi benim için harika, ancak modal komut satırı düzenlemesi OP'ye biraz kafa karıştırıcı olabilir, özellikle yazabilmek için nasıl geri döneceğinizden bahsetmeden! iİmleçten önce yazmak için (ekle) veya imleçten asonra yazmak için (ekle) tuşunu kullanarak ekleme moduna dönün .
Cascabel

Vi'yi yıllardır birincil metin düzenleyicim olarak kullanıyorum, ancak yine de kabuğum için emacs anahtar bağlantılarını tercih ediyorum.
Keith Thompson

Aslında, OP tüm metin düzenleme için vim kullanır, bu yüzden vi standartlarını ayarlayabileceğinizi bilmek inanılmaz derecede faydalıdır. Çok teşekkürler!
GlyphGryph

@Kieth Thompson: Ben de aynısını düşünürdüm. Ben sadece kabuk bu mod anahtarlama şeyler ( vvi modunda tahriş edici anahtar gibi) iyi karışmaz düşündüm . Ama bir süre sonra ben sadece vim enfekte var bu yüzden bir deneyin öneririz: P
kizzx2

1

Bu, sorunuza cevap vermiyor ancak bazı durumlarda sorununuzu çözebilir.

In belirteci önceki komutu ile ikame edilmektedir. Yani bir komutun başına bir şey eklemeyi unutursanız (böyle ), böyle bir şey yapabilirsinizbash!!sudo

# ./super_secret_command --with-args
=> ACCESS DENIED

# sudo !!
sudo ./super_secret_command --with-args
=> ACCESS GRANTED

0

Ctrl/Opt+Left/RightTerminal'de kullanmak için normal kısayolları yapılandırabilirsiniz . Bu şekilde, Terminal'i kullanırken her şeyi yeniden öğrenmek zorunda kalmazsınız.

Terminal'i açın »Tercihler…» Ayarlar »(bir profil seçin)» Klavye .

Orada, aşağıdaki kısayolları atayın:

  • Control + Cursor Left: Dize Gönder \033[1~kabuğuna
  • Control + Cursor Right: Dize Gönder \033[4~kabuğuna
  • Option + Cursor Left: Dize Gönder \033[5Dkabuğuna
  • Option + Cursor Right: Dize Gönder \033[5Ckabuğuna

Ayrıca aşağıdakileri de beğeniyorum ( Fn + Left/Right):

  • Home: Dize Gönder \033[1~kabuğuna
  • End: Dize Gönder \033[4~kabuğuna

resim açıklamasını buraya girin


Lion'da ⌥ ← ve ⌥ → M-bve M-fvarsayılan olarak bağlıdır . Ve ⌃ ← ve ⌃ → boşluk değiştirmek için varsayılan kısayollardır.
Lri

0

Mac'e değil Cygwin'de buna ihtiyacım vardı, ancak aşağıdakileri eklemek ~/.inputrcde yardımcı olabilir:

"\e[1;5C": forward-word   # ctrl + right
"\e[1;5D": backward-word  # ctrl + left 

0

Mac kullanıcısı değilim ama ya Homeanahtar? Bir Linux terminalinde iyi çalışıyor.


1
Hayır, terminal penceresinin en üstüne kaydırılır.
GlyphGryph

Varsayılan olarak, Giriş ve Son, standart Mac davranışı olan görünümü kaydırır. Varsayılan olarak Shift-Home ve Shift-End sırasıyla “ESC [H” ve “ESC [F” gönderir. Bunların tümü Terminal> Tercihler> Ayarlar> [profil]> Klavye'den özelleştirilebilir .
Chris Page

0

Mac Os X'teki komut satırında dolaşmanın en iyi yolu profilimi kullanmaktır: https://github.com/lingtalfi/mac-terminal-shortcuts

Aşağıdaki (sezgisel) kısayolları sağlar:

ALT-left: move one word backward
ALT-right: move one word forward
CTRL-left: move to the beginning of the line
CTRL-right: move to the end of the line
ALT-backspace: kill one word backward
ALT-del: kill one word forward
ALT-up: set word after cursor to uppercase
ALT-down: set word after cursor to lowercase
home: move to the beginning of the line
end: move to the end of the line    
CTRL-backspace: Same as ALT-backspace
CTRL-del: Same as ALT-del
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.