Adesso uso VIM con regolarità, ma non uso mai il comando punto (.) Per ripetere l'azione precedente. Continuo a leggere su quanto sia fantastico ma non vedo mai esempi del mondo reale che abbiano senso per me e il modo in cui io codifico in VIM. Quali sono alcuni esempi reali che mostrano quanto sia fantastico il comando punto (.)?Qualcuno può spiegarmi perché il comando punto (.) È così utile in VIM?
risposta
Ecco alcune azioni che eseguo con il comando punto:
- Più semplice di quanto
:%s/\<word\>/replacement/gc
è*
sulla parola, quindicereplacement<esc>
e quindi ripeteren.
. Questo è bello se hai due o tre occorrenze della tua parola.Se si dispone di più parole che si desidera sostituire, quindi passare alla parola successiva, ha colpito*
e di nuovon.
- Quando voglio sinistra allineare alcuni blocchi:
<Ctrl-V>jjj<.....
o inserire spazi nella parte anteriore:<ctrl-v>jjjI<space><esc>....
- dopo
dd
odw
, il comando dot cancellerà un'altra linea/parola
una cosa magica che accade con il comando punto è che se si ripete un comando che utilizza un registro numerato, userà il prossimo registro numerato (vedi :help redo-register
).
Spiegazione: Se è stato effettuato il dd
su 9 righe e si desidera ripristinarle nell'ordine in cui sono state eliminate, eseguire: "1P........
. Nota che i registri da 1 a 9 sono l'anello di cancellazione di Vim. "1P
inserirà prima del cursore l'ultimo testo cancellato, "2P
inserirà quindi il testo cancellato precedente e così via.
grazie a questi due sono piuttosto buoni. – rhinoinrepose
Ooh, stavo cercando qualcosa di simile per velocizzare la ricerca e la sostituzione. Così tante volte ho trovato qualcosa e poi voglio cambiarlo e altri lo apprezzano rapidamente. Grazie per quello. –
Io uso dw....
abbastanza spesso per eliminare una serie di parole senza doverle prima contare mentalmente. In questo esempio, 5dw
è un numero inferiore di caratteri, ma penso di essere circa 3ms più veloce utilizzando il comando punto per ripetere semplicemente il delete word
per il conteggio.
Modifica Stavo proprio facendo un po 'di editing e ho realizzato che c'è un'altra situazione che uso il comando punto una buona dose. Immagino che ci sia un modo molto più semplice di gestire questo tipo di cose in Vim, ma il comando punto aiuta nelle situazioni seguenti e simili. Di seguito è riportato un esempio di "Ho fatto qualcosa una volta, ora voglio ripeterlo un paio di volte." Stavo scrivendo un nuovo test (in C) e dovevo incorporare una costante di stringa che rappresenta uno script SQL che ho copiato da un altro posto. Lo script originale multilinea (7 righe) non era racchiuso tra virgolette doppie, quindi l'ho fatto:
- Incollare lo script direttamente nel codice (7 nuove righe nel file).
- Posizionare il cursore sulla prima nuova riga.
- hospaziospaziospaziospazio"esc per inserire spazi e un preventivo di apertura sulla riga corrente.
- j. sei volte per aggiungere apertura preventivo per ogni riga aggiuntiva
- Ri-posizione sulla prima riga del testo incollato.
- Un\n"esc per mettere un carattere di avanzamento riga e citare la chiusura sulla linea di corrente.
- j. sei volte di nuovo per mettere la citazione di chiusura le restanti righe
L'ultimo esempio potrebbe essere più semplice con Visual Block: vai all'inizio dello script. Usa 'Ctrl-v' o' Ctrl-q' per richiamare la selezione del blocco. Premi '6j' per andare all'ultima riga. Premi '$' per selezionare fino alla fine della riga. Digita 'I"
@pydave: È fantastico. Ho pensato che probabilmente ci fosse un modo più veloce. Sto usando SlickEdit con l'emulazione vim, e quel trucco non funziona per me (ma potrebbe essere perché sto usando una versione precedente). Ci sono alcuni problemi con l'emulazione vim che non mi piacciono, ma la funzionalità di tagging in SlickEdit è veramente buona e rende le poche peculiarità che ne valgono la pena. –
in un altro modo: ':, + 6s /.*/" & \\ n "' o 'V6j: s /.*/" & \\ n "' ('&' nella parte di sostituzione viene sostituito con il modello abbinato). – Benoit
Come la recensione precedente, io uso spesso durante l'eliminazione:
dw...
dd...
E quando ripetere un'azione su più linee:
iSomeText:[Esc]j.j.j.
È come un esempio classico. Ma perché non fare "yy" e la "p" un sacco di volte? – rhinoinrepose
Bene, questo non funziona per i comandi che usano più tasti, come 'iSomeText [Esc]' o 'cereplacement [Esc]' (da altra risposta). Nel caso di 'p', hai ragione, ripeti semplicemente il' p'. – paulmelnikow
Per l'ultimo esempio, a volte è possibile utilizzare la selezione dei blocchi per selezionare una colonna per alcune righe e utilizzare I o A. Come "Ctrl + vjjjISomeTextEsc". Ottimo uso del punto però. –
do_something();
do_another();
third_option();
Ora, con il cursore nella prima riga: A<bs><cr>{<cr><cr>}<cr>
. Ora ha colpito j.j.
e
do_something()
{
}
do_another()
{
}
third_option()
{
}
miei esempi più comuni stanno cambiando il valore del rientro del testo
>%...
o semplicemente ri-fare una particolare modifica di testo come l'inserimento (char *)
di fronte a diverse variabili:
i(char *)<Esc>jjjwwww.jjjbb.
(o altro)
Tutto il altre risposte forniscono buoni esempi, voglio solo aggiungere che dot
è fantastico perché in un certo senso è una macro automatica per l'ultima combinazione di tasti che è solo una chiave di distanza.
Mentre le macro sono grandi, sono un po 'macchinose da usare, mentre lo dot
è sempre disponibile, anche se meno potente.
Per me il comando punto era inizialmente o meno fino a quando non ho iniziato a registrare macro con qualsiasi frequenza. Il trucco per registrare macro utili è rappresentare il problema come passi ripetibili. A volte il punto è l'unica cosa che farà o almeno renderà il problema molto più facile.
Inoltre, l'uso del comando punto ti costringerà a utilizzare determinati comandi che potresti non aver avuto bisogno prima, ad esempio: cw ct; ci "ca) poiché collassano l'eliminazione/modifica del testo in una" azione "ripetibile per punto.
Inoltre, oltre al punto c'è anche; che uso molto meno frequentemente ma quando lo faccio è molto utile che ripete l'ultimo movimento del testo. Non è utile per cose come w e b ma per cose come f; è un bel piccolo trucco.
Quando è necessario convertire questo:
instance Movable Position where
(x,y) --> Left = (x-1,y)
(x,y) --> Right = (x+1,y)
(x,y) --> Up = (x,y-1)
(x,y) --> Down = (x,y+1)
in questo:
instance Movable Position where
Position(x,y) --> Left = Position(x-1,y)
Position(x,y) --> Right = Position(x+1,y)
Position(x,y) --> Up = Position(x,y-1)
Position(x,y) --> Down = Position(x,y+1)
usereste selezione del blocco visiva per la sinistra 'Posizione' e un punto per il diritto.
- 1. Qualcuno può spiegarmi il polimorfismo?
- 2. Qualcuno può spiegarmi i numpy.indices()?
- 3. qualcuno può spiegarmi @MapsId in ibernazione?
- 4. Qualcuno può spiegarmi le pinze rotanti?
- 5. Qualcuno può spiegarmi quantificatori possessivi? (Espressioni regolari)
- 6. Qualcuno può spiegarmi cosa sta facendo il metodo GetCardinality?
- 7. Qualcuno può spiegarmi collection_select in termini chiari e semplici?
- 8. Qualcuno può spiegarmi questo codice Python veramente di base?
- 9. Qualcuno può spiegarmi la funzione pack() in PHP?
- 10. Qualcuno potrebbe spiegarmi ASP.NET MVC?
- 11. Qualcuno può spiegarmi, a lungo, come utilizzare i contenitori IOC?
- 12. qualcuno può spiegarmi cosa fanno effettivamente le chiavi primarie?
- 13. Qualcuno può spiegarmi la sintassi del routing di asp.net?
- 14. Qualcuno può spiegarmi la seguente espressione di Haskell
- 15. Qualcuno può spiegarmi perché awk's sub()/gsub() funziona in questo modo?
- 16. Perché è utile Monnal Identity?
- 17. Vim cosa è l'uso del punto esclamativo al comando sostituto
- 18. Vim Repeat punto (".") Buffer di comando?
- 19. Qualcuno potrebbe spiegarmi questo codice decoratore?
- 20. Perché match.call è utile?
- 21. In termini più semplici, qualcuno può spiegarmi la differenza tra JAAS, JACC e JASPIC?
- 22. Perché RAII è così chiamato?
- 23. Actionscript 3: Qualcuno può spiegarmi il concetto di variabili e metodi statici?
- 24. Perché è così in Crossfilter?
- 25. Perché è così difficile convertire XML in pdf?
- 26. Perché il gradle 2.0 è così lento?
- 27. Perché getline è così incoerente?
- 28. Perché il caricamento proc è così lento?
- 29. In Slick 3.0, perché è utile il nuovo Streaming?
- 30. Perché non è così pigro
Ho usato vi da prima che esistesse Vim e ho usato il. comando un bel po ', ma non ho mai sentito nessuno entusiasmare di quanto sia fantastico. Forse non sto leggendo le fan page giuste. –
Recentemente ho iniziato a leggere 'Practical Vim di Drew Neil'. Il libro inizia con il concetto di. operatore, e cerca di farti capire perché pensarlo può essere vantaggioso per la tua produttività. Magari dai un'occhiata. – eugenevd