2010-01-12 6 views
6

Devo aggiungere una personalità VIM a un IDE. Non ho mai usato VIM per più delle modifiche di base e sono ora sopraffatto dalla complessità della struttura di comando.C'è qualche schema dietro i molti comandi VIM?

Esiste una struttura generale per la combinazione di spostamenti di conteggi e comandi di inserimento/eliminazione? Non riesco a vedere il legno per gli alberi.

risposta

17

Ebbene, v'è ovviamente una matrice di posizioni dito dietro h, j, k, l.

Il fatto che ^ va al all'inizio di una riga e $ va fino alla fine è modellato sulla sintassi comune espressioni regolari.

Ctrl-F e Ctrl-B pagina avanti e indietro, e questo è abbastanza intuitivo.

i inserti (prima) e un accodamento (dopo il cursore). Allo stesso modo,
I inserti all'inizio della riga e A si aggiunge alla fine.

> e < trattino e outdent, rispettivamente. Anche questo è intuitivo.

Ma nel complesso, molti degli altri comandi si trovano su qualsiasi chiave lasciata – è difficile trovare una mappatura intuitiva tra le lettere dell'alfabeto e i comandi di un editor.

I conteggi di ripetizione vengono sempre immessi prima di un comando, e per lo più ripetono il comando più volte, ma in alcuni casi fanno qualcosa di intelligente ma analogo.

Penso che il segreto per non impazzire su vi sia iniziare con solo una manciata di comandi.Ho un sacco di colleghi che non sanno fare altro che

  • spostare il cursore con i tasti freccia (non c'è bisogno di utilizzare h, j, k, l);
  • inserto con i, cancellare con Del (non c'è bisogno di utilizzare x);
  • eliminare una linea con dd
  • uscire dalla modalità di input con Esc
  • via di VI con : x (uscita) o q! (quit, e buttare via i miei cambiamenti!)

Perché io sono molto più intelligenti, i comandi addizionali che conosco e uso sono:

  • Vai all'inizio del file con gg, il fondo con G.
    Posso andare a un numero di riga specificato con (numero linea) G.
  • copiare una linea con y (yank), incollarlo con p
  • cambio una parola con cw, il resto della linea con C
  • cancellare una parola con dw, il resto della linea con d
  • volte mi utilizzare . per ripetere l'ultimo comando o u (annulla) se ho incasinato.

Quando si ha l'occasione di utilizzare altri comandi, è possibile insegnarli a se stessi uno per uno, se necessario.

+0

+1 Ben spiegato! – richsage

0

Ci sono molti tutorial interessanti e interessanti. Un esempio è

http://blog.interlinked.org/tutorials/vim_tutorial.html

Ma la struttura ampia che la maggior parte di loro sarebbe darvi è

  1. Ci sono due modi principali per la modifica - la modalità di comando e modalità di inserimento. È possibile passare dalla modalità di inserimento alla modalità di comando utilizzando il tasto.
  2. È possibile eseguire comandi in modalità comando digitando un singolo tasto o una sequenza di tasti.
  3. I comandi possono aiutare a raggiungere una grande varietà di cose cancellazione di linee - dd yanking (copia di linee) - aa linee incollando al di sotto della linea corrente - p linee incollando al di sopra della linea di corrente - P (e così on)

    La maggior parte dei comandi in modalità comando può essere preimpostata da un "conteggio" per indicare il numero di volte che il comando deve essere eseguito. Ad esempio, 3dd eliminerebbe tre righe.

    Un set di comandi in modalità comando consente di passare alla modalità di inserimento. Questo è spiegato di seguito.

  4. Esistono diversi modi per accedere alla modalità di inserimento dalla modalità di comando. Tra questi vi sono (i-insert al cursore, I-insert all'inizio della riga, o -inserisce una riga sotto, O-insert una riga sopra, a-append, A-append alla fine della riga

il riferimento rapido a

http://www.andy-roberts.net/misc/vim/vim.pdf

vi aiuterà a capire l'importanza di "contare"

2

Penso che la caratteristica che meglio definisce VIM rispetto ad altri editor è la sua vasta gamma di comandi di movimento. Colpisce la prima cosa da imparare a utilizzare pienamente VIM i tasti freccia il meno possibile, e pensa al testo in termini di "blocchi" come "una frase" "un tag" "una parola" "un gruppo di parentesi".

Supponiamo di avere function foo($bar, $fooz) modificare i parametri semplicemente posizionando il cursore ovunque all'interno delle parentesi e premendo ci) (mnemonico: cambia staffa interna). Lo stesso schema si applica ad altri comandi: yank(), delete (d) e così via.

So che questo non spiega l'intera "filosofia VIM" ma combinare i comandi in modalità normale con la grande quantità di modificatori di movimento è ciò che mi ha fatto davvero vedere la luce.

Problemi correlati