Movimenti Vim HardMode a grana fine


11

Recentemente ho scoperto la modalità difficile di Vim e ho deciso di provare ad usarla. Tuttavia, sto incontrando alcuni problemi con movimenti a grana fine.

Ad esempio, diciamo che voglio solo spostarmi su o giù di una riga. Dal momento che je ksono disabilitati, io non sono sicuro di quello alternative migliori ci sono per questo.

Ho riscontrato lo stesso problema quando voglio spostare uno o due caratteri a destra o a sinistra. Qualcuno sa come si sostituiranno questi tipi di movimenti?

Questo è il plugin che sto usando: https://github.com/wikitopian/hardmode .


Che stupido plugin! Usa qualunque cosa funzioni.
Romainl

Sono davvero d'accordo con Romainl: è bene imparare a navigare in modo efficiente in un file, ma imporre a te stesso questo tipo di plugin non è un dolore necessario. Tuttavia potresti essere interessato alla mia risposta qui (più precisamente la parte su /e ?.
statox

1
Non sarei rispettosamente d'accordo con statox e Romainl qui. Navigare direttamente verso gli obiettivi che si desidera modificare può migliorare notevolmente l'efficienza complessiva. Anche se sì, questo potrebbe inizialmente rallentarti, a lungo termine ti compenserai con il tempo perso usando una navigazione migliore.
Arcangelo,

In realtà @ Archangel33 Penso che condividiamo la stessa opinione sul fatto che navigare più precisamente con altri metodi di quanto hjklsia una buona cosa. Quello che stavo disapprovando era il plug-in stesso: secondo me è meglio imparare nuovi modi di navigare una volta alla volta (non puoi impararli tutti contemporaneamente) e durante l'apprendimento usando plug-in che ti frustrano non lo è necessario. Detto questo, è solo la mia opinione: si ha il diritto di non essere d'accordo :-)
statox

1
@Alex In effetti il ​​mio commento era solo una mia opinione personale, non avrei mai considerato di avere l'unica soluzione universale per cui la mia ultima frase era That being said it is only my opinion: one has right to disagree. Ora, il dibattito è potenzialmente infinito: ovviamente alcune persone trarranno vantaggio da questo tipo di plug-in mentre frustrerà solo altri e danneggerà il loro apprendimento. Se vuoi parlarne, parlerò volentieri con te in una chat, ma non dovremmo inviare spam ai commenti della domanda con questo tipo di dibattito :-)
statox

Risposte:


17

Questi sono solo alcuni dei movimenti di cui è capace vim, questi dovrebbero farti andare per ora.

TL; DR

  1. Usa la funzione di aiuto integrata di Vim su navigationo meglio ancorausr_03.txt
  2. Cerca su Google per vim advanced movements
  3. Naviga con / verso le parole
  4. andare qui tutte le mosse giuste

movimenti

Ci sono molti modi per spostarmi in vim che ho elencato alcuni che ho trovato cercando vim advanced movements, e alcuni che uso sempre. Sono sicuro che conosci la maggior parte di questi, ma quelli che penso che vorrai prestare particolare attenzione sono anche le parole di navigazione.

Eccone alcuni che consentono la navigazione all'interno di una linea.

  • 0 - vai all'inizio della riga corrente.
  • ^ - vai al primo carattere non vuoto della riga.
  • $ - vai alla fine della riga corrente.
  • g_ - vai all'ultimo carattere non vuoto della riga.

La navigazione con le parole può essere molto utile. Per essere più granulari, dovresti navigare in relazione alle parole, usando:

  • e - vai alla fine della parola corrente.
  • E - vai alla fine della WORD corrente.
  • b - vai alla parola precedente (prima).
  • B - vai alla precedente (prima) WORD.
  • w - vai alla parola successiva.
  • W - vai alla prossima PAROLA.

Una parola è composta da una sequenza di lettere, cifre e caratteri di sottolineatura. Una WORD è costituita da una sequenza di caratteri non vuoti, separati da spazi bianchi. parole | Le PAROLE possono anche cambiare a seconda delle impostazioni di VIM.

Esempio per mostrare la differenza tra WORD e word

192.168.1.1 è una singola PAROLA.

192.168.1.1 sono sette parole.

Anche i movimenti di ricerca possono essere estremamente utili.

  • /pattern - Cerca un modello che ti porterà alla prossima occorrenza di pattern
    • nti porterà alla prossima partita patternsotto il cursore.
  • ?pattern- Cerca un modello che ti porterà alla ricorrenza precedente di pattern.
    • Nti porterà alla prossima corrispondenza patternsopra il cursore.
  • * - Vai alla ricorrenza successiva della parola corrente sotto il cursore.
  • # - Vai alla ricorrenza precedente della parola corrente sotto il cursore.
  • % - Vai alle parentesi graffe corrispondenti, o parentesi all'interno del codice.

Qui ci sono alcuni che puoi fare anche prima di aprire vim, dalla riga di comando Vim +N filenameti consente di andare all'ennesima riga del file dopo averlo aperto.

vim +10 /etc/passwd

Vim +/pattern filenameapre il file alla prima riga con l'occorrenza di pattern. Nel seguente esempio, vim aprirà il file README e salterà alla prima occorrenza della parola "installa".

vim +/install README

Vim +?patten filenameapre il file all'ultima occorrenza di pattern. Nel seguente esempio, aprirà il file README e passerà all'ultima occorrenza della parola "bug".

vim +?bug README


8

In alternativa alla hardmode, il seguente frammento consente di utilizzare h, j, k, e lnormalmente, ma produce un segnale acustico per avvisare quando vengono utilizzati in rapida successione.

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>

Per un altro approccio alla limitazione hjkldell'uso, vedere vim-melassa .


3

In alternativa, usa la Modalità media che cerca ancora di imparare le "mosse giuste", ma è meno severa nel farlo:

La modalità Media è un plug-in Vim che limita i movimenti dei personaggi, ma non li disabilita completamente. Per impostazione predefinita, la modalità media consentirà solo due movimenti consecutivi in ​​termini di carattere.


1

Ho avuto lo stesso problema, quindi ho digitato :help hardmodeLo ed ecco che ho trovato

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

A proposito, sono uno dei principianti di VIM che hanno trovato questo plugin estremamente utile poiché mi ha davvero allontanato dal mouse.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.