Vim HardMode İnce Tane Hareketleri


11

Kısa süre önce Vim zor modunu öğrendim ve denemeye ve kullanmaya karar verdim. Ancak, ince taneli hareketlerle ilgili bazı sorunlar yaşıyorum.

Diyelim ki gerçekten sadece bir satır yukarı veya aşağı gitmek istiyorum. Yana jve kdevre dışı kalır, emin daha iyi alternatifler bunun için orada ne değilim.

Bir veya iki karakteri sağa veya sola taşımak istediğimde aynı problemle karşılaştım. Herkes bu tür hareketlerin yerini nasıl bilebilir?

Bu kullandığım eklenti: https://github.com/wikitopian/hardmode .


Ne kadar aptal bir eklenti! Neyin işe yaradığını kullanın.
romainl

Romainl'e gerçekten katılıyorum: Bir dosyada verimli bir şekilde nasıl gezinileceğini öğrenmek iyidir, ancak bu tür bir eklentiyi dayatmak gerekli bir acı değildir. Hala burada benim cevap ilginizi çekebilir (daha doğrusu /ve ?. Hakkında bölüm
statox

1
Burada statox ve romainl ile saygılı bir şekilde katılmıyorum. Doğrudan değiştirmek istediğiniz hedeflere gitmek genel verimliliğinizi büyük ölçüde artırabilir. Evet, bu ilk başta sizi yavaşlatabilir, uzun vadede daha iyi navigasyonlar kullanarak kaybolan zamanı telafi edeceksiniz.
Archangel33

Aslında @ Archangel33 Sanırım diğer yöntemlerle daha hassas bir şekilde gezinmenin hjkliyi bir şey olduğu gerçeğiyle ilgili aynı görüşü paylaşıyoruz . Onaylamadığım şey eklentinin kendisiydi: Bana göre, aynı anda bir kerede gezinmenin (aynı anda hepsini öğrenemezsiniz) ve sizi hayal kırıklığına uğratan eklentileri kullanarak öğrenme sırasında yeni yollar öğrenmek daha iyidir gerekli. Bu sadece benim görüşüm olduğu söyleniyor: biri katılmıyorum hakkı var :-)
statox

1
@Alex Gerçekten benim yorumum sadece kişisel görüşümdü, tek ve evrensel bir çözüme sahip olduğumu asla düşünmezdim, bu yüzden son cümlem buydu That being said it is only my opinion: one has right to disagree. Şimdi, tartışma potansiyel olarak sınırsızdır: elbette bazı insanlar bu tür bir eklentiden faydalanacak, ancak sadece başkalarını hayal kırıklığına uğratacak ve öğrenmelerine zarar verecektir. Eğer bu konu hakkında konuşmak isterseniz, sizinle bir sohbette memnuniyetle tartışacağım, ancak bu tür bir tartışma ile sorunun yorumlarını spam etmemeliyiz :-)
statox

Yanıtlar:


17

Bunlar, vim'in yapabileceği hareketlerden sadece birkaçı, bunlar sizi şimdilik sürdürmeli.

TL; DR

  1. Kullanım Vim üzerinde yardım özelliği yerleşik navigationveya daha iyisiusr_03.txt
  2. Google'da ara vim advanced movements
  3. / İle kelimelere git
  4. buraya gidin Tüm doğru hareketler

Hareketler

Vim içinde dolaşmanın birçok yolu vardır. Aradığım bazı buldum vim advanced movementsve her zaman kullandığım birkaç tane var. Bunların çoğunu bildiğinizden eminim, ancak özellikle dikkat etmek isteyeceğinizi düşündüğünüz navigasyonlar.

İşte bir satır içinde navigasyona izin veren birkaç tane.

  • 0 - geçerli satırın başına git.
  • ^ - satırın ilk boş olmayan karakterine git.
  • $ - geçerli satırın sonuna git.
  • g_ - satırın son boş olmayan karakterine git.

Kelimelerle gezinme çok yardımcı olabilir. Daha ayrıntılı olmak için şunu kullanarak kelimelerle ilgili olarak gezinmelisiniz:

  • e - geçerli kelimenin sonuna git.
  • E - geçerli WORD'ün sonuna git.
  • b - önceki (önceki) kelimeye git.
  • B - önceki (önceki) WORD e gidin.
  • w - sonraki kelimeye git.
  • W - bir sonraki SÖZ'e git.

Bir kelime bir dizi harf, rakam ve altçizgiden oluşur. WORD, boşlukla ayrılmış bir dizi boş olmayan karakterden oluşur. kelimeler | WORDS vim ayarlarınıza bağlı olarak da değişebilir.

WORD ve word arasındaki farkı göstermek için örnek

192.168.1.1 tek WORD.

192.168.1.1 yedi kelimedir.

Arama hareketleri de son derece yararlı olabilir.

  • /pattern - Sizi bir sonraki tekrarına götürecek bir model arayın pattern
    • nsizi patternimlecin altındaki bir sonraki eşleşmeye götürür .
  • ?pattern- Bir önceki örneğine götürecek bir model arayın pattern.
    • Nsizi patternimlecin üstündeki bir sonraki eşleşmeye götürür .
  • * - İmlecin altındaki geçerli kelimenin bir sonraki tekrarına git.
  • # - İmlecin altındaki geçerli kelimenin bir önceki tekrarına git.
  • % - Eşleşen parantezlere veya kod içindeki parantezlere gidin.

İşte vim açmadan önce yapabileceğiniz birkaç şey, komut satırından Vim +N filenamedosyayı açtıktan sonra Nth satırına gitmenizi sağlar.

vim +10 /etc/passwd

Vim +/pattern filenamedosyayı ilk satırında oluşmasıyla açar pattern. Aşağıdaki örnekte, vim README dosyasını açacak ve “install” kelimesinin ilk oluşumuna atlayacaktır.

vim +/install README

Vim +?patten filenamedosyayı son oluşumuna açar pattern. Aşağıdaki örnekte, README dosyasını açacak ve “bug” sözcüğünün son tekrarına atlayacaktır.

vim +?bug README


8

Hardmode alternatif olarak, aşağıdaki pasajı kullanmak sağlayacak h, j, kve lnormal bir şekilde ama peş peşe kullanıldığında sizi uyarmak için bir alarm sesi üretirler.

function! s:BeepOnRepeat(key)
    let count1 = v:count1

    if !exists('s:last_time')
        let s:last_time    = reltime()
        let s:repeat_count = 1
    else
        " increment the repeat count if `h`, `j`, `k`, or `l` was pressed
        " within the last second, otherwise reset it
        let now = reltime()
        if str2float(reltimestr(reltime(s:last_time, now))) < 1
            let s:repeat_count += 1
        else
            let s:repeat_count = 1
        endif
        let s:last_time = now

        " produce an audible beep if a sequence of `h`, `j`, `k`, and/or `l`,
        " greater than three, was pressed (within the repeat count time limit)
        if s:repeat_count > 3
            let savebelloff    = &belloff
            let savevisualbell = &visualbell
            let &belloff    = ''
            let &visualbell = 0
            execute "normal! \<Esc>"
            let &belloff    = savebelloff
            let &visualbell = savevisualbell
        endif
    endif

    execute 'normal! ' . count1 . a:key
endfunction

nnoremap <silent> h :<C-u>call <SID>BeepOnRepeat('h')<CR>
nnoremap <silent> j :<C-u>call <SID>BeepOnRepeat('j')<CR>
nnoremap <silent> k :<C-u>call <SID>BeepOnRepeat('k')<CR>
nnoremap <silent> l :<C-u>call <SID>BeepOnRepeat('l')<CR>

hjklKullanımın sınırlandırılmasına yönelik başka bir yaklaşım için bkz. Vim-pekmez .


3

Alternatif olarak , hala "doğru hareketleri" öğrenmeye çalışan ancak bunu yaparken daha az katı olan Orta Modu kullanın :

Orta mod, karakter bazlı hareketleri sınırlayan, ancak tamamen devre dışı bırakmayan bir Vim eklentisidir. Varsayılan olarak, orta mod yalnızca iki ardışık karakter bazlı harekete izin verir.


1

Aynı sorunu yaşadım sonra :help hardmodeLo yazdım ve buldum

'g:HardMode_level' If set to 'wannabe' 
arrow keys disabled, but not   hjkl etc.                                                                                              

Bu arada, beni gerçekten fareden uzaklaştırdığı için bu eklentiyi son derece yararlı bulan vim yeni başlayanlardan biriyim.

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.