2011-02-06 9 views
6

Sono uno sviluppatore esperto sulla piattaforma Windows e sto cercando di insegnarmi come usare Vim. Sono abbastanza bravo con le espressioni regolari e capisco i principi su come usare Vim. Tuttavia, ho un problema specifico, e anche se ho una soluzione, mi sembra che dovrebbe esserci uno migliore.Learning Vim: il modo migliore per rimuovere lo spazio tra le parole

Ho un file che contiene una riga simile al seguente:

CODE<tab><tab>Lorem ipsum dolor sit amet 

Ci potrebbe essere un numero variabile di <tab> o <space> caratteri tra CODE e Lorem. Supponendo che il cursore sia sopra la 'C' di CODE in modalità normale, quello che voglio essere in grado di fare è trovare una combinazione di tasti che produrrà il seguente output e lasciare il cursore tra la 'E' di CODE e lui 'L 'di Lorem in modalità di inserimento.

CODELorem ipsum dolor sit amet 

La mia soluzione curent è quello di utilizzare la seguente sequenza di tasti:

wd?\s\+<ritorno>

Questo funziona, ma ci si sente illogico di dribblare la cosa che voglio eliminare prima che io possa eliminarlo. Mi sento come dovrei spostare alla fine di CODE e cancellare in avanti. Mi rendo conto che potrebbe essere semplicemente un idioma Vim di cui non sono a conoscenza. Potrei anche mancare totalmente un pezzo chiave della conoscenza di Vim.

Qual è il modo migliore per raggiungere il mio obiettivo?

risposta

15

eldw lo farà.

  • e - andare avanti fino alla fine della parola
  • l - mossa 1 carattere a destra
  • dw - eliminare tutti gli spazi vuoti

Se il vostro il cursore si trova nel mezzo di alcuni spazi bianchi, diw eliminerà gli spazi bianchi a sinistra ea destra del cursore. (Se è da qualche parte nel mezzo di una parola, eliminerà la parola.)

+1

Grazie, Matt.Inizialmente pensavo che fosse così, ma ho appeso il fatto che "l" sposta il cursore alla fine del punto di tabulazione, piuttosto che alla posizione immediatamente successiva a "CODICE". Ora che ci provo, ha un senso. Penso che evidenzi ciò che stavo pensando: imparare Vim non riguarda solo i comandi, ma richiede anche l'uso di alcuni idiomi. –

+0

@Damian: Certo, ci sono delle belle regolarità in tutto vi/vim, sto ancora ottenendo un controllo su di loro personalmente :-) –

+2

dopo un po 'più di sperimentazione, penso che la sequenza di tasti che stavo cercando fosse 'elcw'. Questo mi lascia in modalità di inserimento, pronto per aggiungere il mio testo sostitutivo. Eccezionale! Grazie ancora. –

4

Alcune alternative:

:s/\s\+// 
e xx 
elxx 
eldtL 
f<tab>xx 
eldw 
+0

Grazie per i suggerimenti, Ross. Stavo cercando di usare questa sequenza in uno snipet, quindi uno o due dei tuoi suggerimenti non funzioneranno perché tengono conto del layout e del contenuto esatti che variano da riga a linea nel mio file. Grazie per i suggerimenti su altre cose che non sapevo in precedenza. –

Problemi correlati