OS X Terminalinde imleç kelimesini kelimesine taşıma


762

Ben kombinasyon biliyorum Ctrl+ Aanki komutun başlangıcına atlamak için ve Ctrl+ Esonuna atlamak için.

Peki kakao uygulamalarında olduğu gibi Alt+ / gibi kelime kelime atlamanın herhangi bir yolu var mı?


2
Hangi kabuğu kullanıyorsun? Bash?
Sargun Dhillon

4
iTerm2, dahili terminalden çok daha hoş. Klavyeyi nasıl özelleştireceğiniz hakkında aşağıdaki talimatları gönderdim :)
cwd

21
ALTKısayollar son OS X sürümünde Terminal eklenmiştir.
Mosty Mostacho

7
Bu bence konu dışı değil, Bash kabuğu ilgili bir programlama ortamıdır ve readline bağlamaları en popüler Linux CLI uygulamalarında yaygındır. Ayrıca, topluluğun konuştuğu upvotes sayısına bakın.
GL2014

11
Oyu yeniden açın, OS X Terminali bir programlama aracı olarak sayılır.
djechlin

Yanıtlar:


567

Kutunun dışında, bir sonraki kelimenin başına gitmek için oldukça tuhaf Esc+ ve geçerli kelimenin başına gitmek için + kullanabilirsiniz.FEscB


47
Komutu tekrar çalıştırmak için her iki tuşa da tekrar basmak uygun değildi. Bunu Mac OSX Terminalinde yapmak, GNOME Terminaline kıyasla oldukça topal buluyorum.
Phễng Nguyễn

245
Terminal> Tercihler> Ayarlar> [profil]> Klavye'den "Seçeneği meta anahtar olarak kullan" özelliğini etkinleştirebilirsiniz . Ardından Esc'i manuel olarak ayrı ayrı yazmanız gerekmez.
Chris Page

7
Ayrıca bir satırın sonundayken Esc+ Ftuşuna veya satırın başlangıcındaki diğer tuş birleşimine basarsanız, bunun yerine harfi ekler. Can sıkıcı!
Noldorin

10
“Tuhaf”: “F” ve “B”, “İleri” ve “Geri” anlamına gelir. Control-F imleci bir karakter ileri taşır ve Control-B imleci bir karakter geri taşır. Meta değiştiriciyi (veya ESC) kullanmak “kelimelerle hareket et” anlamına gelir. Bunlar emacs uyumlu ciltlemelerdir. Eğer bash kullanıyorsanız vi uyumlu bağlamaları kullanma seçeneği vardır veya bunları tamamen özelleştirebilirsiniz ~/.inputrc.
Chris Page

5
Seçeneği meta olarak kullanmak maalesef ~ ve | gibi önemli kabuk sembollerini yazmak için seçenek tuşuna ihtiyaç duyanlar için bir seçenek değildir. (Fransızca klavyede olduğu gibi).
Eric O Lebigot

417

Mac OS X'te - aşağıdaki klavye kısayolları varsayılan olarak çalışır. Option tuşunun Terminal tercihlerinde Meta gibi davranması gerektiğini unutmayın (klavye sekmesinin altında)

  • alt (⌥)+ F kelimesini bir kelime ileri Fatlamak için
  • alt (⌥)+ B'yi tek kelime Bile zıplamak için

Basit metin navigasyonu için varsayılan emacs tuş bağlarının bash kabuklarında çalıştığını gördüm. Kullanabilirsiniz

  • alt (⌥)+ Dgeçerli imleç konumundan başlayarak bir kelimeyi silmek için
  • ctrl+ Açizginin başına atlamak için
  • ctrl+ Eçizginin sonuna atlamak için
  • ctrl+ Kimleç konumundan başlayarak satırı öldür
  • ctrl+ Ykill arabelleğinden metin yapıştırmak için
  • ctrlRgeçmişinizde yazdığınız komutları tersine çevirmek için +
  • ctrl+ Sileriye doğru arama (benim için zsh'de çalışır, ancak bash için değil)
  • ctrl+ Fkarakterle ilerlemek için
  • ctrl+ Bkarakterle geri gitmek için
  • ctrl+ Wkelimeyi imleç konumundan geriye doğru kaldırmak için

1
Teşekkürler! Kutunun dışında neden işe yaramadığını merak ediyordum, tam da ihtiyacım olan şey buydu.
Flov

11
İterm2 içindeki metaları aşağıdaki gibi değiştirebilirsiniz: Tercihler -> Profiller -> Tuşlar -> Sol seçenek tuşu gibi davranır +ESC, ardından kelimeyi ileri ve geri hareket ettirmek için OPTION f / b tuşunu kullanabilirsiniz. Daha fazla
Alan Dong

5
[ Ctrl + W ] - kelimeyi imleç konumundan geriye doğru kaldırmak için
YemSalat

[ctrl + u] - tüm girişi silmek için
Cornelius

286

Bunu nasıl yapabileceğiniz aşağıda açıklanmıştır

Varsayılan olarak, Terminal sözcük sözcük taşımak için (sol ve sağ) şu kısayollara sahiptir:

  • esc+ B(sol)
  • esc+ F(sağ)

Bu dizileri alt+ için yapılandırabilir ve oluşturabilirsiniz:

  • Açık Terminal tercihleri ​​( cmd+ ,);
  • Ayarlar sekmesinde Klavye'yi seçin ve ⌥ ←varsa çift ​​tıklayın veya yoksa ekleyin.
  • Değiştiriciyi istediğiniz gibi ayarlayın ve kısayol tuşunu kutuya yazın: esc+ B, metni oluşturun \033b(bu metni manuel olarak yazamazsınız).
  • Doğru kelime için tekrarlayın ( esc+ Folur \033f)

Alternatif olarak, bu blog yayınına textmate'den başvurabilirsiniz:

http://blog.macromates.com/2006/word-movement-in-terminal/


7
MacOSX 10+ ve iTerm kullanıcıları için: Ya genel tercihlerde tuş kısayolunu ya da bir profil tuş kombinasyonu olarak atarsınız. Emin seçmek olun: Açılır üzerine "Dizisini Escape Gönder" seçin ve giriş sadece Biçin arka ya Fyönelik ileri içine Esc+alanda
Gus

Daha önce düşünmediğim harika bir anımsatıcı için +1. Kesinlikle / maalesef edecek değil ben yapılandırılmış çünkü şimdi bu hatırlamak alt leftve alt rightbu dizileri üretmek için
Arc676

Anahtar Eşleme'yi Terminal'e eklersem, Esc-B yerine '^ [B' ye bağlar.
Andrea Bergonzo

164

Geçin iTerm2 . Ücretsiz ve sade eski terminalden çok daha güzel. Ayrıca, klavye kısayolları gibi özelleştirme için çok daha fazla seçeneğe sahiptir.

Ayrıca cmdsekmeler arasında geçiş yapmak için ve 1-9 kullanabilirsiniz seviyorum . Deneyin ve asla normal terminale geri dönmeyeceksiniz :)

İterm2'de özel klavye tercihleri ​​nasıl ayarlanır?

  • İTerm2'yi yükleyin
  • Başlat ve ardından tercih bölmesine git.
  • Klavye profilleri sekmesini seçin
  • Profili yeni bir şeye kopyalamanız ve ardından ^+ Right/ gibi ok tuşu kısayollarını silmeniz Leftveya bir yedeklemeyle ilgilenmiyorsanız, bunları varsayılan profilden silmeniz gerekir.
  • Ardından, değiştirilmiş profilinizin seçildiğinden (yıldız işaretli) emin olun

Resim 1.png

  • Şimdi klavye sekmesini seçin (en üst sıradaki)

iTerm 2

  • Yeni bir klavye kısayolu eklemek için artı düğmesini tıklayın
  • İlk kutuya CMD+Left arrow
  • İkinci kutuda "kaçış kodu gönder" i seçin
  • Üçüncü kutuya harfi yazın B

Resim 2.png

  • İstediğiniz tuş kombinasyonları ile tekrarlayın. escape+ Bbir kelime sola, escape+ fbir kelime sağa taşır.
  • Ayrıca kurmak isteyebilirsiniz cmd+ dile imlecin önündeki kelimeyi silmek için escape+d

Sık sık bir ok tuşu ile yanlış düğmeye ( cmd/ control/ alt) vurdum ve bu yüzden ok ve tüm kelimeleri ileri ve geri atlamak için ayarlanmış bu düğmelerle ok tuş kombinasyonları var, ama lütfen size en uygun olanı yapın.


4
Ne yaparsam yapayım giremiyorum Ctrl + Arrow Leftya da Right- Upve Downçalışıyorum: / yeni profil varsayılan olarak ayarlanmış ve
denenmemiş

4
Çözüm: MacOS Sistem Tercihleri ​​-> Klavye :) altındaki görev kontrolü kısayollarını devre dışı bırakmak zorunda kaldım
Tobi

Yukarıdaki talimat artık iTerm2 ile çalışmaz. Lütfen aşağıdaki cevaplarıma bakın iTerm2 Build 3.3.4.
asın

150

Aslında çok daha iyi bir yaklaşım var. option( altBazı klavyelerde) tuşunu basılı tutun ve kelime ile hareket etmek için ok tuşlarına sol veya sağ yönde basın. Bu kadar basit.

option
option

Ayrıca ctrlesizi hattın sonuna ctrlagötürecek ve başlangıca götürecektir.


2
Bazen bu bazı durumlarda işe yaramaz. Benim için, Terminal.app'ı açtığımda, iyiydi, ama IntelliJ için, sadece yazdırdı [Dve [C. Bunu düzeltmek için, eklemek bind '"[D": backward-word've bind '"[C": forward-word'gözlerimi için .bashrc.
Jamie Counsell

@ JamieCounsell benim bağlama şey ekledi .bashrcama işe yaramadı , benim için yanlış bir şey? (RubyMine kullanıyorum)
张艳军

@ 张艳军.bashrcTerminal açıldığında RubyMine'ın okuyup okumadığından emin değilim . echo "here"Yeni bir terminal açtığınızda bu mesajın görüntülenip görüntülenmeyeceğini deneyin . Ayrıca, terminali kapatıp yeniden açmanız veya source ~/.bashrcyeni dosyayı okumak için çalıştırmanız gerekir.
Jamie Counsell

79

Ben Alt+ / çalışma: açık Tercihler »Ayarlar» Klavye ülkeye girişini ayarlamak seçenek imlecin sol için \ 033b: kabuk dize göndermek ve set opsiyon imleç hakkı için ödemek dize gönderin: \ 033f . Bunu diğer Kontrol tuşu kombinasyonları için de kullanabilirsiniz.


20
\ 033b'yi almak için Esc tuşuna, ardından b tuşuna basmanız gerekir.
Matthew Schinckel

7
Snow Leopard'dayım ve sadece etkinleştirdiğinizde işe yaradığını bulun Enable option as meta key. Bu arada, çok güzel. Anahtarın, Esc + B veya Esc + F ile karşılaştırıldığında ulaşılması çok daha kolay olacağından emin olabilirsiniz
Phương Nguyễn

2
Meraktan, burada tam olarak neler oluyor? Bu kod OSX'te başlamak neden farklı? Bu tür kodları nasıl bulabilirim?
Koobz

Mac'imde Tercihler> Profiller> Soldaki tuşlar seçenek tuşu + Ecs olarak ayarlandı
Arun

38

Aslında hangi kabuğu kullandığınıza bağlıdır, ancak çoğu kabuk benzer bağlara sahiptir. Bahsettiğiniz bağlantılar (örn. Ctrl+ AVe Ctrl+ E) diğer birçok programda bulacağınız ciltlemelerdir ve çağlar boyunca kullanılırlar, BTW çoğu UI uygulamasında da çalışır.

İşte Bash için varsayılan bağlamalar:

En Önemli Bash Klavye Kısayolları

Lütfen bunları özelleştirebileceğinizi unutmayın. Bir dosya oluşturmanız gerekir, istediğiniz gibi adlandırın, benim .bash_key_bindings adını verdim ve ana dizinime koydum. Orada bazı genel bash seçeneklerini ayarlayabilir ve ayrıca anahtar bağlantıları da ayarlayabilirsiniz. Uygulandıklarından emin olmak için, başlangıçta bash'ın okuduğu ".bashrc" adlı bir dosyayı değiştirmeniz (yoksa, oluşturmanız gerekir) ve aşağıdaki aramayı orada yapmanız gerekir:

bind -f ~/.bash_key_bindings

~ bash içindeki home dizini anlamına gelir, yukarıda belirtildiği gibi, dosyayı istediğiniz gibi adlandırabilir ve bağlanmak için doğru yolu + adı beslediğiniz sürece istediğiniz yere yerleştirebilirsiniz.

Size .bash_key_bindings dosyamdan bazı alıntılar göstereyim:

set meta-flag on
set input-meta on
set output-meta on
set convert-meta off
set show-all-if-ambiguous on
set bell-style none
set print-completions-horizontally off

Bunlar sadece birkaç seçenek ayarladı (örneğin zili devre dışı bırakın; bunların hepsi bash web sayfasında aranabilir).

"A": self-insert
"B": self-insert
"C": self-insert
"D": self-insert
"E": self-insert
"F": self-insert
"G": self-insert
"H": self-insert
"I": self-insert
"J": self-insert

Bunlar, karakterlerin tek başına karakterin "yazıldığından" emin olmaktan başka bir şey yapmadığından emin olurlar (kendilerini kabuğa yerleştirirler).

"\C-dW": kill-word
"\C-dL": kill-line
"\C-dw": backward-kill-word
"\C-dl": backward-kill-line
"\C-da": kill-line

Bu oldukça ilginç. Ctrl+ ' Ya Dtek başına basarsam (silmek için d'yi seçtim), hiçbir şey olmaz. Ancak daha sonra küçük bir harf w yazarsam, imlecin solundaki sözcük silinir. Ancak bir büyük harf yazarsam, imlecin sağındaki sözcük öldürülür. İmleçten başlayarak tüm çizgiyle ilgili olarak l ve L için de geçerlidir. Bir "a" yazarsam, tüm satır gerçekten silinir (imleçten önceki ve sonraki her şey).

Bir kelimeyi Ctrl+ üzerine F, bir kelimeyi Ctrl+ üzerine geri atladımB

"\C-f": forward-word
"\C-b": backward-word

Gördüğünüz gibi, hemen bir eyleme yol açan bir kısayol yapabilir veya bir karakter dizisini başlatan bir işlem yapabilirsiniz ve ardından bir eylemin gerçekleşmesi için bir (veya daha fazla) karakter yazmanız gerekir yukarıdaki örnekte gösterilmiştir.

Dolayısıyla, varsayılan ciltlemelerden memnun değilseniz, bunları istediğiniz gibi özelleştirmekten çekinmeyin. Daha fazla bilgi için bash kılavuzuna bir link .


commandanahtar kodu nasıl ? Örnekte, controlbir \C, ama nasıl olduğunu command?
Paschalis

Temel olarak Ctrl + A'yı cmd + soluna eşlemek istiyorum (satırın başına git)
Paschalis

1
@Paschalis MacOS X'te, komut tuşu Metabash ( \M), cmd + sol ile eşleşir \M-\e[D. Bununla birlikte, cmd + ... 'yi hiçbir şeyle eşleştiremezsiniz, tüm komut kısayolları Terminal uygulamasının kendisi tarafından işlenir (ve böylece yutulur) (hiçbir zaman kabuğa iletilmez) ve cmd + sol eşleştirmeleri birden çok pencereniz varsa "önceki pencereye" terminal pencereleri açık. Üzgünüz, Terminal uygulaması ile mümkün değil.
Mecki

18

Doğal Metin Düzenleme hazır ayarını kullanın !

resim açıklamasını buraya girin

Esasen Seçenek + LEFTARROW için diğer önemli dizileri arasında bağlanan ^[bdizi ve Seçenek + SağYön için^[f

Bu balık ve bash yanı sıra psql terminalinde çalışır.


Bu, anahtarlar için iyi eski eşleme ayarlamanın en etkili yoludur. Teşekkürler!
fedesismo

Başkalarının benim yaptığım gibi kafasını karıştırması durumunda, bu hazır ayarın üst düzey Anahtarlar sekmesinde değil , yalnızca profil Anahtarları alt sekmesinde kullanılabilir olduğunu unutmayın .
ben-albrecht

15

Bir Vim kullanıcısıysanız, bash'ın vim modunu deneyebilirsiniz. Bunu çalıştırın veya ~/.bashrcdosyanıza koyun :

set -o vi

Varsayılan olarak ekleme modundasınız; Normal mod Vim'de olduğu gibi hareket edebilirsiniz, bu yüzden kelime ile hareket wya da bve normal hareket tuşları da çalışır .


15

Eğer işaretlerseniz Use option as meta keytercihleri, ileriye ve geriye doğru kelimelik ve için ardından Varsayılan emacs tarzı komutları klavye sekmesinde ⌥F( Alt+ F) ve ⌥B( Alt+ B) olarak işaretlenmiştir.

Bash'ten Z-Shell'e okumayı tavsiye ederim . Eğer bash / zsh yeteneklerinizi artırmak istiyorsanız!


1
Evet, işe yarıyor. Ancak sorun Seçenek-7, Seçenek-8 ve Seçenek-9'da bulunan parantez ([] {} |) yazmak istediğimde. Seçenekler şimdi meta, bu yüzden Meta-7, Meta-8 ile bitiyor ... Herhangi bir fikir?
Martin Wickman

12

Mac OS X Lion 10.7 itibariyle Terminali haritalar Option- Left/Right Arrowiçin Esc- b/fvarsayılan olarak, bu artık yerleşik olduğu bu yüzden bu emacs uyumlu tuş atamaları kullanmak partisiydi ve diğer programlar için.


12

Option tuşunu basılı tutun ve imlecin hareket etmesini istediğiniz yeri tıklayın


1
Kötü bir çözüm değil.
duyn9uyen

8

Bash'te bunlar Esc- Bve Esc- ile bağlıdır F. Bash çok daha fazla klavye kısayoluna sahiptir; bind -pne olduklarını görmek için çıktılarına bir göz atın .


4

Altında iterm2bireyin Tercihler> Profil> Keys , sen tıklayın +aşağıda Anahtar dönüşümler ve yeni bir kısayol kaydedin. İçin Eylem , seçmek Send Escape Sequenceve yazın bveyaf geriye doğru ve ileriye sırasıyla.

( Ctrl+ ) İçin bir kayıt yapmaya çalıştığımda , Klavye Kısayolu alanında okun hiç görünmediğini fark ettim . Varsayılan mac'un Sistem Tercihleri> Klavye> Kısayollar> Görev Kontrolü kısayollarını devre dışı bırakmak zorunda kaldım, işe yaramaları için, iterm2'nin varsayılan kısayollarını geçersiz kılacağı için. Standart terminal uygulaması için de geçerli olmalıdır.

Klavye sistemi tercihleri


1

İTerm2 Build 3.3.4 kullanıcıları için yeni cevap:

Adım 1: (macOS X) Sistem Tercihleri> Klavye> Kısayollar sekmesi> Görev Kontrolünü Seç (sol panel)> "Bir boşluk sola taşı" ve "Bir boşluk sağa taşı" olarak etiketlenmiş kısayolların işaretini kaldırın

Adım 2: (iTerm2 Build 3.3.4) Tercihler> Profiller> Seç * Varsayılan (sol panel)> Tuşlar sekmesi> Hem "⌥->" hem de "⌥ <-" girişlerini sil> İkisini de ayarla "Sol Seçenek (⌥) Tuşu: "ve" Sağ Seçenek (⌥) Tuşu: "ile Esc +

Kabuk profilleri ile uğraşmak yok, alt masOS (varsayılan) Terminali ile uğraşmak yok, garip Esc + F / B yok, anlamsız durulayın ve tekrarlayın.

Yapılan anlaşma!!!

Bu ipucunun tadını çıkarın, diğer PROGRAMMERS!


0

Daha önce cevap olarak, ekleyebilir set -o visizin de ~/.bashrckullanmak vi/ vimanahtar bağları, yoksa kısmen aşağıdaki ekleyebilir .bashrcile hareket etmek Ctrlve ok tuşları:

# bindings to move 1 word left/right with ctrl+left/right in terminal, just some apple stuff!
bind '"\e[5C": forward-word'
bind '"\e[5D": backward-word'
# bindings to move 1 word left/right with ctrl+left/right in iTerm2, just some apple stuff!
bind '"\e[1;5C": forward-word'
bind '"\e[1;5D": backward-word'

Bu kod satırlarının etkisini source ~/.bashrcbaşlatmak için ya yeni bir terminal oturumu başlatın.

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.