Vim HardMode Gerakan Butir Halus


11

Baru-baru ini saya mengetahui tentang mode keras Vim dan saya memutuskan untuk mencoba dan menggunakannya. Namun, saya mengalami beberapa masalah dengan pergerakan butiran halus.

Sebagai contoh, katakanlah saya benar-benar hanya ingin naik atau turun satu baris. Karena jdan kdinonaktifkan, saya tidak yakin alternatif apa yang lebih baik untuk ini.

Saya mengalami masalah yang sama ketika saya ingin memindahkan satu atau dua karakter ke kanan atau kiri. Adakah yang tahu bagaimana cara mengganti jenis gerakan ini?

Ini adalah plugin yang saya gunakan: https://github.com/wikitopian/hardmode .


Plugin yang bodoh! Gunakan apa pun yang berhasil.
romainl

Saya benar-benar setuju dengan romainl: ada baiknya mempelajari cara menavigasi secara efisien dalam suatu file tetapi memaksakan pada diri sendiri plugin semacam ini tidak terlalu menyakitkan. Tetap Anda bisa tertarik dengan jawaban saya di sini (lebih tepatnya bagian tentang /dan ?.
statox

1
Saya dengan hormat tidak setuju dengan statox dan romainl di sini. Menavigasi langsung ke target yang ingin Anda ubah dapat sangat meningkatkan efisiensi Anda secara keseluruhan. Meskipun ya ini mungkin memperlambat Anda pada awalnya, dalam jangka panjang Anda akan menebus waktu yang hilang menggunakan navigasi yang lebih baik.
Archangel33

Sebenarnya @ Archangel33 Saya pikir kami berbagi pendapat yang sama tentang fakta bahwa menavigasi lebih tepat dengan metode lain daripada hjklhal yang baik. Apa yang saya tidak setujui adalah plugin itu sendiri: Menurut pendapat saya lebih baik mempelajari cara-cara baru untuk menavigasi sekali pada saat yang sama (Anda tidak dapat mempelajari semuanya pada saat yang sama) dan selama pembelajaran menggunakan plugin yang membuat Anda frustrasi tidak perlu. Yang sedang dikatakan itu hanya pendapat saya: orang berhak untuk tidak setuju :-)
statox

1
@Alex Memang komentar saya hanya pendapat pribadi saya, saya tidak akan pernah menganggap bahwa saya punya satu-satunya dan solusi universal itu sebabnya kalimat terakhir saya adalah That being said it is only my opinion: one has right to disagree. Sekarang, perdebatan ini berpotensi tidak ada habisnya: tentu saja beberapa orang akan mendapat manfaat dari plugin semacam ini sedangkan itu hanya akan membuat frustasi yang lain dan merusak pembelajaran mereka. Jika Anda ingin membicarakannya, saya akan dengan senang hati berdiskusi dengan Anda dalam suatu obrolan, tetapi kami tidak seharusnya
meng-

Jawaban:


17

Ini hanya beberapa gerakan yang mampu dilakukan vim, ini seharusnya membuat Anda maju sekarang.

TL; DR

  1. Gunakan fitur bantuan bawaan Vim navigationatau lebih baik lagiusr_03.txt
  2. Cari google untuk vim advanced movements
  3. Navigasi dengan / ke kata-kata
  4. pergi di sini Semua langkah yang tepat

Pergerakan

Ada banyak cara untuk berkeliling di vim saya telah membuat daftar beberapa yang saya temukan dengan mencari vim advanced movements, dan beberapa yang saya gunakan sepanjang waktu. Saya yakin Anda tahu sebagian besar dari ini tetapi yang saya pikir Anda akan ingin membayar perhatian juga adalah kata navigasi.

Berikut adalah beberapa yang memungkinkan untuk navigasi di dalam garis.

  • 0 - pergi ke awal baris saat ini.
  • ^ - pergi ke karakter pertama yang tidak kosong dari baris.
  • $ - pergi ke akhir baris saat ini.
  • g_ - pergi ke karakter non kosong baris terakhir.

Navigasi dengan kata-kata bisa sangat membantu. Agar lebih terperinci, Anda harus menavigasi dalam kaitannya dengan kata-kata, menggunakan:

  • e - pergi ke akhir kata saat ini.
  • E - pergi ke akhir KATA saat ini.
  • b - pergi ke kata sebelumnya (sebelum).
  • B - pergi ke KATA sebelumnya (sebelum).
  • w - pergi ke kata selanjutnya.
  • W - pergi ke KATA berikutnya.

Sebuah kata terdiri dari urutan huruf, angka dan garis bawah. WORD terdiri dari urutan karakter yang tidak kosong, dipisahkan dengan spasi putih. kata | KATA juga dapat berubah tergantung pada pengaturan vim Anda.

Contoh untuk menunjukkan perbedaan antara KATA dan kata

192.168.1.1 adalah KATA tunggal.

192.168.1.1 adalah tujuh kata.

Gerakan pencarian juga bisa sangat berguna.

  • /pattern - Cari pola yang akan membawa Anda ke tempat berikutnya pattern
    • nakan membawa Anda ke pertandingan berikutnya di patternbawah kursor.
  • ?pattern- Cari pola yang akan Anda bawa ke kemunculan sebelumnya pattern.
    • Nakan membawa Anda ke pertandingan berikutnya di patternatas kursor.
  • * - Pergi ke kemunculan kata berikutnya saat ini di bawah kursor.
  • # - Pergi ke kemunculan kata sebelumnya saat ini di bawah kursor.
  • % - Buka kurung kurawal, atau kurung di dalam kode.

Berikut adalah beberapa yang dapat Anda lakukan bahkan sebelum Anda membuka vim, dari baris perintah Vim +N filenamememungkinkan Anda untuk pergi ke baris ke-N file setelah membukanya.

vim +10 /etc/passwd

Vim +/pattern filenamemembuka file ke baris pertama dengan terjadinya pattern. Dalam contoh berikut, vim akan membuka file README dan melompat ke kemunculan pertama kata "instal".

vim +/install README

Vim +?patten filenamemembuka file ke kejadian terakhir pattern. Dalam contoh berikut, ini akan membuka file README dan melompat ke kemunculan kata "bug" terakhir.

vim +?bug README


8

Sebagai alternatif untuk hardmode, potongan berikut akan memungkinkan Anda untuk menggunakan h, j, k, dan lseperti biasa, tetapi menghasilkan bunyi bip untuk memperingatkan Anda ketika mereka digunakan dalam suksesi cepat.

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>

Untuk pendekatan lain dalam membatasi hjklpenggunaan, lihat vim-molasses .


3

Atau gunakan Mode Sedang yang masih mencoba mempelajari Anda "gerakan yang benar", tetapi kurang ketat dalam melakukan itu:

Mode sedang adalah plugin Vim yang membatasi gerakan karakter-bijaksana, tetapi tidak menonaktifkannya sepenuhnya. Secara default, mode sedang hanya akan memungkinkan dua gerakan karakter-berturut-turut.


1

Saya memiliki masalah yang sama kemudian saya mengetik :help hardmodeLo dan lihatlah saya menemukan

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

Ngomong-ngomong saya salah satu pemula vim yang menemukan plugin ini sangat membantu karena benar-benar mendorong saya menjauh dari mouse.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.