Terminal kullanırken ev ve son anahtarlar haritalanabilir mi?


76

homeVe endbir MacBook Pro tuşları fn + sol ok veya fn + sağ ok ile taklit edilebilir. Veya belirli ayarlar değiştirildiğinde, fn yerine Command (Apple) tuşuyla.

Bunların hiçbiri Terminal'de çalışmıyor.

Sık sık hattın başına veya sonuna gitmem gerektiğinden ve ayrıca ileriye ya da geriye doğru atlamak istiyorum.

Terminal'de bir hat üzerinde nasıl atlayabilirim?

Yanıtlar:


64

Terminal için HOME için + ve END için control+ kullanın .acontrole

Ayrıca kullanmak esc+ fbaşlangıcına taşımak için bir sonraki kelime ve esc+ bbaşlangıcına taşımak için geçerli kelime. (Şimdiki ve sonraki için dikkatli olmalısınız)


2
mükemmel! kelime ile etrafta dolaşmaya ne dersin? (pencerelerde ctrl-sol ve ctrl-sağ)
01.01.2011

@ at01 Cevabımı güncelledim.
Am1rr3zA

40
Terminal için anahtarları kim tasarladı?
01

4
Kelimelerin başına gitmek için seçenek + sol ok ve seçenek + sağ ok kullanmayı tercih ederim
Allan Jikamu

2
Ctrl + a ve Ctrl + e benim için çalıştı, ancak burada birçok kişi tarafından önerilen tuş vuruşlarını yeniden eşleştirmeden, @ AlphaFighter'ın Shift + Home ve Shift + End (Shift + Fn + sol ok ve Shift + Fn (Shift + Fn + sol ok ve Shift + Fn) alternatifini tercih ediyorum + MacBook Pro klavyesinde sağ ok) satırın başlangıcı ve bitişi için.
John Rix

70

Çizginin başına veya sonuna nasıl ulaşılacağıyla ilgili bir soruyu yanıtlamak için, Terminal'in varsayılan olarak bu anahtarları eşleştirdiği görünmektedir:

  • normal terminallerde "home" anahtarına eşdeğer shift + home → satır başlangıcı
  • shift + end → satırın sonu, normal terminallerde "son" tuşuna eşdeğer

Evinizdeyseniz ve "normal" şekilde çalışmayı (vardiya gerektirmiyorsa) istiyorsanız, [Terminal menüsü] → Tercihler → Profiller sekmesine (veya OS X'in bazı sürümlerinde ayarlar) → Klavye alt sekmesine gidin.

Daha sonra bu anahtarları aşağıdaki gibi olacak şekilde değiştirin / ekleyin: "string to shell"

  • ev: \033[H
  • son: \033[F

\033Eklemeniz gerekirse , bu bölümü düzenleme iletişim kutusundaki escape tuşuna basarak alabilirsiniz .

Sonra ev ve son tekrar normal gibi çalışacaktır (çiğnemek).

Ayrıca terminal haritasındaki varsayılan olarak "alt + ←" ve "alt + →" ifadelerinin sol ve sağ kelimelere, hatırlanacak başka bir kullanışlı combo olduğuna dikkat edin.

Mac OS X'in sonraki sürümlerinde, giriş / çıkış tuşuna bastığınızda terminal ekranı yukarı veya aşağı kayarsa, istediğiniz sonuçları elde \033[1~etmek \033[4~için giriş tuşunun ve bitiş tuşunun ayarlanması gerekebilir (kaydırma gerekmez) .

Topluluk cevabı olduğu için daha kullanışlı anahtar bağlantıları eklemek üzere bu cevabı değiştirmek için çekinmeyin.


5
\ 033 [H and \ 033 [Ev ve ev için F işe yaramadı; ancak \ 001 ve \ 005 yaptı. Bu kodları düzenleme iletişim kutusuna ctrl-A ve ctrl-E tuşlarına basarak girebilirsiniz. Zsh kullanıyorum, bunun herhangi bir fark yaratıp yaratmadığından emin değilim.
JW.

shift + home / end iş yaptı
isaias-b

1
Bunu bir süredir çözmeye çalışıyordum, bu beni kurtardı!
Paul Gray

Bu, yerel olarak gerçek terminal uygulamasındayken işe yarar. Ancak, bir macOS makinesine bağlandığınızda, bunlar artık işe yaramıyor. Bu nasıl aşılır?
Ahi Tuna,

2
@AhiTuna SSH, bir terminal emülatörüne değil, bir terminal oturumuna bir bağlantıdır. Giriş seçenekleri, kullandığınız terminal emülatörü ile her zaman tanımlanır.
Bachsau

39

Readline ve bash kullanarak bazı yardımlar arıyor gibisiniz, işte değiştirilmiş klavyeyle ilgili çılgın bir liste: http://www.math.utah.edu/docs/info/features_7.html#SEC45

Ctrla Satırın başına gitme.
Ctrle Satırın sonuna gidin.
Escf Bir kelime ileri git.
Escb Bir kelimeyi geriye doğru oynat.
Ctrll Üstteki geçerli satırı yeniden basarak ekranı temizleyin.

Ctrlk Metni, mevcut imleç konumundan satırın sonuna kadar öldür.
Escd İmleçten geçerli kelimenin sonuna kadar ya da kelimeler arasındaysa bir sonraki kelimenin sonuna kadar öldürün.
EscDel İmlecden önceki kelimenin başlangıcını veya kelimeler arasındaysa önceki kelimenin başına öldürün.
Ctrlw İmleçten önceki boşluklara kadar öldür. Bu, EscDelCtrla sözcük sınırları farklı olduğu için farklıdır.

Ctrld İmlecin altındaki karakteri silin.
Ctrl_ Yaptığın son şeyi geri al. Tamamen boş bir satıra geri dönebilirsiniz.

Ve, işte metnin tekrar satır içine çekilmesi. Yanking, en son öldürülen metni öldürme arabelleğinden kopyalamak anlamına gelir.

Ctrly En son öldürülen metni imlecin tampon belleğine geri götür.
Escy Öldürme halkasını çevirin ve yeni tablayı yanklayın. Bunu yalnızca önceki komut Ctrlyveya ise yapabilirsiniz Escy.


Bu paha biçilmezdir - teşekkürler - Keşke bu, bir yerde yazdırılabilir bir dosya olarak mevcut olsaydı!
matt b

Tamamen "optimize" değil, farkındayım; Dosya -> Yazdır?
Jason Salaz,

Vay canına, bunlar Linux'taki terime kıyasla çok garip. Bu saçmalıkları çözmenin bir yolu var mı?
btk

Evet, Bash adam sayfasını dene. (Nasıl kendim yaparım bilmiyorum.)
SilverWolf

6

Ok tuşlarını kullanmayı tercih edenler için, fnShift+ tuşuna Left Arrowbasmanız sizi komut satırından eve götürür. Benzer şekilde, fnShift+ Right Arrowseni sonuna kadar götürecek.


6

Her seferinde bir kelimeyi option+ leftve option+ tuşlarıyla taşıyabilirsiniz right.

Kullanarak ilgili homeve end, Terminal varsayılan bağlamaları şunlardır:

  • shift+ home→ satırın başına atla
  • shift+ end→ satırın sonuna atla
  • home → geri kaydırma tamponunun tepesine ilerleyin
  • end → geri kaydırma tamponunun altına kaydır

Diğer birçok terminal uygulamasında (çoklu platformlarda), değiştirilmiş ve değiştirilmemiş çiftler ters çevrilir (yani çıplak homeve endgeçerli satırın etrafında atlamak için kullanılır ve değiştirilmiş sürümler (isterse ister shiftbaşka bir şey olsun) geri kaydırma arabelleğinde gezinmek için kullanılır ). Aşağıdakileri yaparak Terminal'in ciltlemelerini bu şekilde çalışmak için tersine çevirebilirsiniz:

Terminal menüsü → Tercihler → Ayarlar / Profil sekmesi → Klavye alt sekmesine gidin.

Ardından, tuş eylem çiftlerini aşağıdaki gibi değiştirin:

  • ↖︎: Metin gönder: \ 033 [H
  • ⇧↖︎: Yukarıya Kaydır
  • ↘︎: Metin gönder: \ 033 [F
  • ⇧↘︎: Aşağıya Kaydır

Not: \ 033, Düzenle iletişim kutusundaki gönderilecek metin kutusuna kaçış tuşuna basarak girilir.

Oradayken, benzer şekilde bağlanmalarını takas isteyebilirsiniz modifiye edilmiş ve edilmemiş page upve page downtutarlı tutmak için: Bir navigasyon tuşuna basarak ile shiftTerminal kendisi (bir belgenin gibi kaydırma geri tampon gezinmek için) bir komut temsil birine basarken olmadan çalışan her neyse kadar anahtar basın gönderir içinde (mesela bunun bash, less, nano, screen, vb.) Bunun için anahtar çiftleri:

  • ⇞: Metin gönder: \ 033 [5 ~
  • Page: Sayfayı Yukarı Kaydır
  • ⇟: Metin gönder: \ 033 [6 ~
  • Page: Sayfayı Aşağı Kaydır


4

İstediğiniz işlevselliğe sahip haritalama homeve endtuşlar sorunu kolayca çözecektir.

Birçok cevap gönderildi, ancak kullanıyorsanız zshaşağıdakileri yapabilirsiniz home:

\001

ve ayarlamak end:

\005

tercih - profil - klavyeyi tıklatarak .


Bunu da ben denedim ama sonra vim Ev ve End kırar :( Sen Alfredo Cardigliano önerdi ne eşleştirebilirsiniz: Anahtar: ↖ Eylem: \ 033OH Anahtar: ↗ Eylem: \ 033OF
curlingdude

Bu benim için mükemmel çalıştı! Ben sadece Nano kullanıyorum, bu yüzden burada sorun yok.
Sterling Bourne

Evet, bu işe yarıyor ama sorunu genel olarak çözmüyor. Bu benim sorun çözüldü .. ben ZSH için bash taşındı ve ben FN-SHIFT-SOL / SAĞ kullanıldı stackoverflow.com/questions/8638012/...
Vlk

1

Vim ile de çalışmasını sağlamanın en etkili yolu budur. Terminal'e Git -> Tercihler -> Profiller -> Klavye ve ekle:

Anahtar: ↖ İşlem: \ 033OH

Anahtar: ↗ İşlem: \ 033OF


1

Bu soruna alternatif bir çözüm sunmak istiyorum. Bir vi kullanıcısı iseniz bu harika çalışıyor. Terminaldeki Vim Key Bindings , terminalinizi vim tarzında kullanmanın bir yolunu sağlar. Bunu set -o viterminalde yazarak yapabilirsiniz ve .bash_profileisterseniz onu koymaktan çekinmeyin . Bundan sonra, terminal etkin bir vim editörüdür. escKomut moduna geçmek ve vim biçiminde dolaşmak için tuşunu kullanabilirsiniz . Örneğin, 0sizi başlangıcınıza götürür ve $sonuna kadar götürür. Ayrıca kullanabilirsiniz Ive Abaşında ve sonunda gidip hemen düzenleme moduna geçmek için. wve bbir sözcük ileri ve geri hareket etmenizi sağlar. Ve tuşuna basarak görsel moda geçmeyi denersenizv, size bir vim editörü verilecek ve bu editörden ayrıldığınızda sahip olduğunuz metin terminalde yürütülecektir.

Bu vim anahtarının, başka cevaplardan öğrendiğiniz tüm kısayol tuşlarını geçersiz kılacağına dikkat edin.


0

İşte istenildiği gibi yazdırılabilir formdaki liste :)

http://pastebin.com/uCqwn7qs

Ayrıca açıklamasında bir "hata" düzelttim. Orijinal talimatlarda okuyabildiğiniz şey bu:

ESC-d İmleçten önceki kelimenin başlangıcını veya kelimeler arasındaysa önceki kelimenin başına öldürür.

Her iki kısmi cümle de aynı şeyi söylediğinden, bu kötü bir kes ve yapıştır hatası gibi kokuyor. Düz mantıktan, ilk yarı aslında "imleçten geçerli kelimenin başlangıcına" okumalıdır.


0

... peki ya kelime ile dolaşmak? (pencerelerde ctrl-sol ve ctrl-sağ)

# in ~/.inputrc
"\033[5C": forward-word
"\033[5D": backward-word
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.