Ekleme modunda gezinme


20

Sonunda navigasyon için ok tuşlarını tercih etmeye karar verdim hjkl. Vim hardmodeEklentiyi ok tuşlarını devre dışı bırakmak için kullandım .

Oldukça hızlı navigasyona alıştım, ancak ekleme modunda navigasyonun aniden imkansız olduğu ortaya çıkıyor.

Bunun için herhangi bir çözüm var mı ? (mevcut ekleme modu bir çözüm değildir).


8
Evet: ok tuşlarını kullanın :-) ;-) için oradalar.
Martin Tournoij

@Carpetsmoker Eğer ok tuşları varsa onları hjkl yerine kullanırım ....
stdcall

5
Ancak fikir, ekleme modundan çıkmanın (yani, sadece bunun için amaçlandığı gibi kullanılması, yani diğer komutlarla serpiştirilmiş küçük eklemelerin) tam olarak çözüm olmasıdır. Eğer yanılmıyorsam yardımda gördüm, eğer bir bağlantı bulursam gönderirim. Ok tuşlarına değil, buna çok alıştığınız anlaşılıyor.
Vee

Okları aşağı taşımak için <kbd> süper </kbd> + <kbd> j </kbd> gibi bir kısayol olarak kullanmak için klavyenizi bağlayabilirsiniz. <kbd> süper </kbd> herhangi bir düğme olabilir, örneğin <kbd> Caps Lock </kbd> oldukça yaygın
ivanjermakov

Yanıtlar:


26

Birçok seçeneğiniz var. Bir seçenek ve IMO en kolay ve en kolay olanı ok tuşlarını devre dışı bırakmayı bırakmaktır. Birçok hardcore vimerin neden böyle şeyler söylediğini anlıyorum

Bir daha asla ok tuşlarını kullanmamalısınız! Ok tuşlarını her kullandığınızda, 3 dakika zaman kaybedersiniz, bir köpek yavrusu ölür ve birisi Emacs'a geçer!

(Açıkçası şaka yapıyorum) Ancak ok tuşlarının bir amacı var. Gezinmek için son derece kullanışlıdır:

  • Ekleme modunda

  • Komut satırında

Genellikle insanlar ok tuşlarını kullanmamanızı söylediğinde, bunun nedeni navigasyonu daha vim benzeri bir şekilde yeniden öğrenmenizi istedikleri içindir. Eğer hjklrahatsanız ve ok tuşlarını çoğunlukla ekleme modunda kullanıyorsanız, kendinizi kullanmamaya zorlamanız için iyi bir neden yoktur.

Seçenek # 2, ctrl-hjklimleç tuşları gibi davranmayı yeniden yapmaktır . Bu güzel çünkü evde kalabiliyorsunuz ve hjklnormal modda kullanarak öğrendiğiniz kas hafızasına iyi uyuyor . Aslında, ben de öyle yapıyorum . Bu yaklaşımın en büyük dezavantajı, terminal vim'de kurulum için bir acı olabileceğidir, çünkü <C-j>bir NULbayt üretir . Bunu Gvim kullanarak hallederim. Konsol vim için kolay bir düzeltme olup olmadığını bilmiyorum.

Seçenek # 3, <C-o>küçük normal mod hareketleri yapmak için kullanılır . Örneğin,

Hello world!
     cursor^

ve sen yerine yapmaktansa, virgül unuttum fark leftleftleftleftleftleft, sadece yapabileceği <C-o>b<C-o>hveya <C-o>2Foveya benzeri normal mod hareketlerin başka bir kombinasyon.

Tabii ki, başka bir seçenek ve çok sevdiğim biri Esc, normal moda geri dönmeden önce kullanmak için birkaç küçük hareket yapmak. Bunu yapmak istemediğinizden bahsettiniz, ancak bazen bu gerçekten en etkili yoldur.

Muhtemelen başka yaklaşımlar da vardır, ama bunlar benim için işe yarayan sevdiklerim.


2
Ilginç - Ben kullandığınız not <c-o>gkve <c-o>gjyerine <Up>ve <Down>. Neden?
Kyle Strand

4
@kylestrand gkve gjçizgi sarılmış olsa bile görsel olarak bir çizgi yukarı ve aşağı gider.
DJMcMayhem

4
Bunun tek başına bir cevap garanti etmek için yeterli olduğunu düşünmüyorum, ancak ok tuşlarının normal modda devre dışı bırakılmasını seviyorum (bu beni HJKL öğrenmeye zorlayan şeydir) ve diğer tüm modlarda etkinleştirildi ( noremap <Up> <NOP>...) . HJKL'yi öğrenmek için normal modda yeterli zaman harcıyorsunuz, ancak ihtiyacınız olduğunda oradalar. Ya da en azından, onları her zaman kapalı veya her zaman açık bırakmak arasında rahat bir orta yol olarak görüyorum ve diğer anahtarların yeniden eşleştirilmesini gerektirmiyor (bölmeler arasında hareket etmek için Ctrl-HJKL gibi birçok insan).
Itai Ferber

Btw, BASH ve arkadaşları vi anahtar bağlarını destekler. Bu eşlemelerle, cmd geçmişinden (yukarı / aşağı) veya geçerli komutu (sol / sağ) değiştirmek için <ESC> ve hjkl tuşlarını kullanabilirsiniz
Rolf

9

hjklHareket tuşlarını "evrensel" hareket tuşlarına dönüştürmek için Kontrol tuşunu kullanmayı seviyorum . İşte benim ilgili bit .vimrc:

" In insert or command mode, move normally by using Ctrl
inoremap <C-h> <Left>
inoremap <C-j> <Down>
inoremap <C-k> <Up>
inoremap <C-l> <Right>
cnoremap <C-h> <Left>
cnoremap <C-j> <Down>
cnoremap <C-k> <Up>
cnoremap <C-l> <Right>

inoremapAçıklamalarının, ekleme moduna uygulamak cnoremapolanlar komut moduna geçerlidir. (Bu eşlemeyi o kadar uzun süredir kullanıyorum ki komut modu geçmişinde onsuz gezinmenin herhangi bir yolu olup olmadığını unuttum.)

(Düzenle: Diğer yanıtın bu olasılıktan daha önce bahsettiğini görüyorum. Yine de, gerçek eşleme komutlarını görmek yardımcı olabilir.)


3

Hit esckullanmak sonra hjklve wWbBve diğer gemi seferleri yapmak istiyoruz. Zor modun amacı, daha karmaşık vim hareketleriyle gezinmeyi öğrenmenizi sağlamaktır. Küçük düzenlemeler yapın, ardından normal modu kullanarak yeni bir konuma gidin.

Sabit mod etkinken nasıl daha hızlı gezineceğinizi öğrenmek istemiyorsanız , aynı konuyla ilgili başka bir soruya verdiğim yanıtı inceleyin .


3

BİR veya İKİ konumdan fazlasını taşımak istiyorsanız ...

... en iyi seçenek vurmak ESC, hareket etmek ve tekrar ekleme moduna geri dönmek.

<C-h>Sola hareket etmek ve daha sonra çok fazla vurmaya başlamak gibi eşlemeler oluşturmanın bir anlamı yok ... bir vim kullanıcısı olarak, akıllı bir hareket elde etmek için aynı tuşa birden çok kez basmanız gerekmiyor.

( ESCAnahtar parmaklarınıza yakın değilse, bunun için bir eşleme oluşturmak iyi bir seçenek olacaktır.)

Ekleme modunda ONE veya TWO konumlarını taşımak istiyorsanız ...

... <Leader>anahtarınızı kullanarak bazı hareketleri tanımlamak iyi bir seçim olacaktır :

( Parmaklarıma yakın ve rahat hissettiği için anahtar ,olarak kullanıyorum <Leader>)

noremap! <Leader>h <left>   "move cursor left
noremap! <Leader>j <down>   "move cursor down
noremap! <Leader>k <up>     "move cursor up   
noremap! <Leader>l <right>  "move cursor right
noremap! <Leader>w <esc>wi  "move one word forward
noremap! <Leader>e <esc>ei  "move forward to the end of word
noremap! <Leader>b <esc>bi  "move one word backward

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.