OSX'teki VIM: Terminalde açılan bir vim dosyası ile sayfa yukarı / sayfa aşağı / EOL'ye nasıl gidilir?


28

Macun içinde, öncelikle VIM'i nasıl kullandım, aşağıdakileri yapabilirim:

  • Sayfa yukarı / aşağı: Yerel Sayfa yukarı / aşağı tuşunu kullanarak. Mac'te alternatif, terminalde çalışmayan Fn + Yukarı / Aşağı'dır (vim dosyasının içinde kaydırılmaz, ancak terminal arabelleğini kaydırır)
  • Benzer şekilde, Fn + sağ / sol tuşları beni satırın başına / sonuna kadar götürmez

Mac OS X'te bu işlevselliği nasıl taklit ederim?


"Fn + sağ / sol" u "Ev / Bitiş" ile değiştirdiyseniz ya da arttırdıysanız, bu Fn kombinasyonlarının yaptıkları soruyu netleştirmeye yardımcı olabilir.
Chris Sayfa

Yanıtlar:


48

Bu özellikle bir mac sorusu değil, bu gerçekten bir vi sorusu.

Gezinme modunda, ctrl-f bir sayfayı aşağı kaydırır ve ctrl-b bir sayfayı yukarı kaydırır ("F" 'yi veya "B" ack'i düşünün). Ctrl-d, sayfanın yarısını aşağı kaydırır ve ctrl-u, sayfanın yarısını yukarı kaydırır.

^ sizi bir satırın başlangıcına, $ ise sonuna kadar götürür. Biliyorum, biliyorum ama bunun tarihsel sebepleri var.

İşte vi kontrolleri hakkında gerçekten iyi bir kopya kağıdı. vi, biraz eğlenceye dönüşür, ancak onu bir kez içselleştirdiğinizde, dünyadaki en hızlı ve en hızlı metin editörüdür.


1
"Bu özellikle bir mac sorusu değil, bu gerçekten bir vi sorusu." Çoğunlukla Mac OS X Terminal uygulamasının tuş haritasını nasıl kuracağınızla ilgilidir, ancak sorunun ikinci satırında, satırın başlangıcı / bitişi hakkında, halihazırda Terminal'de bir haritaya sahip olduğu ve olası bir çözümün vi'nin haritasını düzenlemek olduğu anlaşılıyor. anla. Alternatif olarak, Terminal klavye haritası düzenlenebilir.
Chris Sayfa

16

Terminal'in varsayılan tercihleri ​​harita Shift- Page Upve Shift- Page DownVim ve Emac gibi programlara kaydırma ( ESC [ 5 ~ve ESC [ 6 ~) yapmalarını söyleyen karakter dizilerine eşlenir .

Bu tuşların Shiftdeğiştirici olmadan terminale karakter dizileri göndermesini istiyorsanız, klavye haritasını özelleştirebilirsiniz:

Terminal> Tercihler> Ayarlar> [profil]> Klavye

Bunu yaparsanız, Shiftdeğiştirilen ve değiştirilen tuşların eşlemelerini değiştirerek alternatif tuşların hala kullanılabilir olmasını sağlamak için bu tuşların değiştiricisinin anlamını tersine çevirmenizi öneririm . Ayrıca, değiştiriciyi kullanan kaydırma komutları içeren Görünüm menüsüne bakın; Commandböylece terminal klavye haritasından bağımsız olarak kullanılabilirler.

Benzer şekilde, Shift- Homeve Shift- Endgeçerli satırın başlangıcına / sonuna gitmek için eşleştirilir ( ESC [ Hve ESC [ F). Bu diziler Bash tarafından anlaşılmaktadır, ancak bunları anlamak için Vim'i özelleştirmeniz veya özellikle Vim için eşlemeleri düzenlemeniz gerekebilir. Vim, Emacs ve diğer bazı programlar, terminali “Uygulama İmleç Modu” na yerleştirmek için bir kaçış dizisi gönderir; burada Giriş / Bitiş tuşları gönderilir ESC O Hve ESC O Fancak Terminal (10.9'dan itibaren) bu davranışı uygulamaz. Bu nedenle klavye haritasını bu diğer kodları göndermek için değiştirmek isteyebilirsiniz (Bash ayrıca anlar). (Diğer işletim sistemlerinde Homeve Endsatırın başlangıcı / bitişi için kullanılır, böylece Terminal onlara Shiftsimetri için değiştirici sağlar.)

Control- Left Arrowve Control- Right Arrowayrıca, varsayılan olarak Shift- Homeve Shift- ile eşleştirildiklerinden farklı olsalar da, varsayılan olarak "satırın başına / sonuna git" dizileriyle eşleştirilirler End. Bunun yerine, Emacs ve Bash uyumlu dizilerle eşleştirilirler ESC [ 5 Dve ESC [ 5 C. Bunların Vim tarafından kullanılmadığı varsayılırsa, en basit yaklaşım Vim'i ~ / .vimrc kullanarak bunları kabul edecek şekilde özelleştirmek olacaktır.

Not MacOS daha-yeni sürümlerinde Terminal artık için açık eşleştirmeleri sahip olduğunu Homeve Endvarsayılan olarak tercihlerde. Bunun yerine, alternatif ekran etkin olduğunda tuşların otomatik olarak başlangıç ​​/ satır sonu ile eşleştiği, örneğin emacs, vim, screen veya tmux gibi bir tam ekran uygulamasını kullanırken dinamik bir davranışı vardır. Ana ekranda kabuk gibi çizgi odaklı bir program kullanırken, terminal görünümünü varsayılan olarak kaydırmaya devam ederler. ShiftModifiye edici davranışı tersine çevirir.


@MarkHu Son paragrafta bunu ele aldım.
Chris Sayfa

Kısmen son paragrafta ele alındığı gibi, varsayılan değerler MacOS'un diğer sürümlerinde farklı / eksik olabilir. 10.13.6 \033[5~için PageDown / Up için eklemek zorunda kaldım (ve ... 6.).
MarkHu

2

En kolay ve en iyi çözüm n+ , naşağı inmek istediğiniz satır sayısı ve aşağı tuşudur.

Düzenli olarak sadece 12+ ve 22+ yaparım .


1

Ana sayfa / Son kullanmaya alışmıştım, Mac'in desteklemediği, Ekle modunda satırların başına ve sonuna kadar (Windows ve Sanırım Linux kullanımından). Bu özellikle can sıkıcı bir durum çünkü uzak bir sistemde vim kullandığımda bunu kolayca yapamıyorum. Bazı acı deneme ve yanılmalardan sonra .vimrc, aynı şeyi yapan bazı çizgiler buldum ve sonunda burada benzer bir çözümü olan başka birini buldum:

https://coderwall.com/p/fd_bea

Keyfini çıkarın.

:inoremap <C-e> <C-o>$
:inoremap <C-a> <C-o>0
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.