vim
Comandi in modalità normale (modifica)
Ricerca…
Introduzione: nota rapida sulla modalità normale
In modalità normale, comandi possono essere inseriti da combinazioni di tasti diretti (digitando u per annullare l'ultima modifica, per esempio). Questi comandi hanno spesso equivalenti in modalità 'ex', cui si accede digitando due punti:, che vi porterà in un buffer sola riga nella parte inferiore della finestra di Vim.
Nella modalità 'ex', dopo aver digitato i due punti si digita un nome di comando o la sua abbreviazione seguita da Invio per eseguire il comando. Così,: undo
Inserire compie la stessa cosa che direttamente digitando u in modalità normale.
Puoi vedere che i comandi diretti saranno spesso più veloci (una volta appreso) rispetto ai comandi "ex" per la modifica semplice, ma per completezza, laddove possibile nella documentazione che segue, se entrambi sono disponibili per l'uso, verranno mostrati entrambi.
La maggior parte di questi comandi può anche essere preceduta da un conteggio mediante il prefisso o l'intercalatura di un numero: digitando 3dd in modalità normale, ad esempio, vengono eliminate tre righe (a partire dalla posizione corrente del cursore).
Annulla e ripristina di base
Disfare
Comando | : | Descrizione |
---|---|---|
u | u , undo | Annulla la modifica più recente |
5U | Annullare le cinque modifiche più recenti (utilizzare qualsiasi numero) |
Tieni presente che in Vim, la "modifica più recente" varia in base alla modalità in cui ti trovi. Se inserisci la modalità di inserimento ( i ) e digiti un intero paragrafo prima di tornare alla modalità normale ( Esc ), l' intero paragrafo è considerato il cambiamento più recente.
Rifare
Comando | : | Descrizione |
---|---|---|
Ctrl-R | red , redo | Ripristina la modifica annullata più recente |
2Ctrl-R | Ripristina le due modifiche annullate più recenti (utilizza qualsiasi numero) |
C'è un altro modo per annullare e ripetere le modifiche in Vim che viene gestito in modo leggermente diverso. Quando si annulla un cambiamento con la u, si attraversano il backup dei nodi su un 'albero' delle modifiche, e premendo Ctrl-R passeggiate indietro quei nodi in ordine. (L'albero di annullamento è un argomento separato ed è troppo complesso da trattare qui.)
Puoi anche usare U (vale a dire le lettere maiuscole) per rimuovere tutte le ultime modifiche su una singola riga (la linea in cui sono state apportate le ultime modifiche). Questo non attraversa i nodi dell'albero nello stesso modo in cui tu . L'utilizzo di U in realtà conta come un cambiamento stesso - un altro nodo in avanti sull'albero - in modo che se si preme U una seconda volta immediatamente dopo il primo, si comporterà come un comando Ripeti.
Ognuno ha i suoi usi, ma u / : undo
dovrebbe riguardare i casi più semplici.
Ripeti l'ultima modifica
Il comando Ripeti, eseguito con il tasto punto o punto ( . ), È più utile di quanto non appaia prima. Una volta imparato, ti troverai a usarlo spesso.
Comando | : | Descrizione |
---|---|---|
. | Ripeti l'ultima modifica | |
10. | Ripeti l'ultima modifica 10 volte |
Quindi, per un esempio molto semplice, se apporti una modifica alla riga 1 digitando i I
Esc, con il seguente risultato:
1 I made a mistake
2 made a mistake
3 made a mistake
Il cursore si troverà nella posizione 1 della riga 1 e tutto ciò che devi fare per correggere le due righe successive è premere j. due volte - cioè, j per spostarsi lungo una linea e . ripetere l'ultimo cambiamento, che era l'aggiunta I
. Non è necessario tornare alla modalità di inserimento due volte per correggere tali linee.
Diventa molto più potente quando viene utilizzato per ripetere i macro .
Copia, taglia e incolla
In Vim, queste operazioni sono gestite in modo diverso da quello a cui potresti essere abituato in quasi tutti gli altri editor moderni o word processor ( Ctrl-C , Ctrl-X , Ctrl-V ). Per capire, devi conoscere un po 'di registri e movimenti.
Nota: questa sezione non coprirà la copia e il taglio in modalità visiva o lo yanking della portata in quanto questi non rientrano nell'ambito della modalità normale e dell'editing di base.
registri
Vim utilizza il concetto di registri per gestire lo spostamento del testo all'interno del programma stesso. Windows ha un unico appunto per questo scopo, che è analogo a un singolo registro in Vim. Quando copi, taglia e incolla in Vim, ci sono modi per usare un flusso di lavoro di editing altrettanto semplice (in cui non devi pensare ai registri), ma ci sono anche possibilità molto più complesse.
Un registro è mirato per l'input / output di un comando mediante il prefisso del comando con " e un nome di lettera minuscola.
Proposte
Un movimento in Vim è un comando che sposta la posizione del cursore altrove. Quando copia, taglia e incolla in modalità normale, le possibilità di selezione del testo per il movimento sono limitate dalla tua conoscenza dei movimenti. Alcuni saranno illustrati di seguito.
Copia e taglio
I comandi di base di copia e taglio sono basati su y ('yank', per copia) e d ('cancella', per tagliare). Vedrai le somiglianze nella seguente tabella.
Comando | : | Descrizione |
---|---|---|
y {movimento} | Copia ("yank") testo indicato dal movimento nel registro predefinito | |
aa | Copia la riga corrente nel registro predefinito, in linea | |
Y | Copia la riga corrente nel registro predefinito (sinonimo di yy ) | |
"ayiw | Copia la parola su cui si trova il cursore nel registro 'a' | |
20" byy | Copia venti righe, a partire dal cursore, nel registro 'b' | |
d {movimento} | Taglia (cancella) il testo indicato dal movimento nel registro predefinito | |
dd | Taglia la linea corrente nel registro predefinito, in linewise | |
D | Taglia dal cursore alla fine della riga nel registro predefinito (NON è un sinonimo di dd ) | |
"adiw | Taglia la parola su cui si trova il cursore nel registro 'a' | |
20" BDD | Taglia venti righe, a partire dal cursore, nel registro 'b' |
Nota: quando qualcosa viene copiato o tagliato a linewise , il comportamento di incollamento mostrato di seguito posizionerà il testo prima o dopo la linea corrente (anziché il cursore). Gli esempi seguono per chiarire.
incollare
Esistono diversi modi per incollare in Vim, a seconda di ciò che stai cercando di realizzare.
Comando | : | Descrizione |
---|---|---|
p | Incolla ciò che si trova nel registro predefinito dopo il cursore | |
P | Incolla ciò che si trova nel registro predefinito prima del cursore | |
"ap | Incolla il contenuto del registro 'a' dopo il cursore | |
"cp | Incolla il contenuto del registro "c" prima del cursore |
Quindi, come posso eseguire un taglio e una pasta davvero semplice?
Se ho il seguente testo:
1 This line should be second
2 This line should be first
Posso fare il più semplice copia e incolla posizionando il mio cursore da qualche parte sulla riga 1 e digitando ddp . Ecco i risultati:
1 This line should be first
2 This line should be second
Quello che è successo? dd 'Taglia' la prima riga (linewise) nel registro di default - che conterrà solo una cosa alla volta, come gli appunti di Windows - e p incolla la riga dopo quella corrente, che è appena cambiata a causa del comando dd .
Ecco un esempio non proprio semplice. Ho bisogno di spostare un paio di parole. (Questo è inventato e non necessario, ma puoi applicare questo principio a pezzi più grandi di codice.)
1 These words order out are of
Posso ripetere w per arrivare alla "o" nella parte anteriore di "order" (o b se ho appena digitato e ho realizzato il mio errore).
Quindi "adaw per mettere" ordine "nel registro" a ".
Poi w per arrivare al 'a' in 'sono'.
A seguito di questo, vorrei digitare "bdaw to put" sono "nel registro" b ". Ora ho visualizzato questo:
1 These words out of
Per essere chiari, ora 'ordina' è nel registro 'a' e 'are' è nel registro 'b', come due distinti appunti.
Per sistemare correttamente le parole, digito b per arrivare a "o" in "out", quindi "bP to put" sono "dal registro" b "di fronte a" out ":
1 These words are out of
Ora scrivo A per arrivare alla fine della riga, seguito da Space Esc (supponendo che non ci sia spazio dopo "of") e "ap per mettere" ordine "a cui appartiene.
1 These words are out of order
Completamento
Il completamento può essere utilizzato per abbinare le parole utilizzate in un documento. Quando si digita una parola, Ctrl pe Ctrl n corrisponderà a parole simili precedenti o successive nel documento.
Questo può anche essere combinato con la modalità Ctrl-X per completare intere linee. Ad esempio, scrivi qualcosa come:
This is an example sentence.
quindi vai alla riga successiva e inizia a digitare la stessa frase:
Thi
e poi premi Ctrl p che risulterà in:
This
Ora ancora in modalità di inserimento, premi Ctrl x Ctrl p e quindi la parola successiva sarà completata con conseguente risultato:
This is
Continua a premere Ctrl x Ctrl p fino a completare l'intera riga.
Se sai che vuoi completare un'intera riga digita questo:
This is an example sentence.
quindi sul prossimo tipo di linea:
Thi
e premi x Ctrl l per completare la linea.
Se il completamento in corso è un nome file, Ctrl x Ctrl f può essere utilizzato per completare tale directory. Genere:
~/Deskt
quindi premi Ctrl x Ctrl f e:
~/Desktop
sarà completato (se in quella posizione). Ctrl x Ctrl f può quindi essere utilizzato ripetutamente per elencare i file nel desktop.