GNU/Linux >> Linux Esercitazione >  >> Linux

Come unire la riga successiva quando una riga corrisponde a un'espressione regolare per l'intero documento in Vi?

Ho linee come

abcdefgjoin!
abcdef
no join
abcdefgjoin!

Se una riga corrisponde a regex ^a.+g$ poi vorrei che si unissero, quindi sarebbe:

abcdefgjoin!
abcdef
no join
abcdefgjoin!

C'è un modo per farlo in VIM ?

Risposta accettata:

In modalità normale, J (distinto da j , che sposta il cursore in basso di una riga) viene utilizzato per unire una riga a quella direttamente sotto di essa. Tuttavia, per impostazione predefinita, aggiunge uno spazio alla fine della prima riga; per ottenere il risultato desiderato (unire le righe senza inserire uno spazio aggiuntivo), si dovrebbe usare gJ .

Per utilizzare i comandi in modalità normale in modalità ex (che inserisci premendo : mentre in modalità normale), è necessario utilizzare il normal comando. Vedi :h normal entro vim. Quindi, per lavorare con la riga successiva che corrisponde al modello, si dovrebbe usare (nota che per impostazione predefinita, devi sfuggire a + per farlo funzionare con la regex di vim, una conseguenza del mantenimento della compatibilità con l'antico motore regex di vi originale):

:/^a.\+g$/normal gJ

Per lavorare su ogni riga che corrisponde al modello, si userebbe il :global comando (vedi :h :g all'interno di vim) in questo modo:

:global/^a.\+g$/normal gJ

O, più concisamente:

:g/^a.\+g$/norm gJ

È anche possibile utilizzare il comando ex join (vedi :h :join ) per ottenere la stessa cosa con una digitazione leggermente inferiore (il ! alla fine, in questo caso, dice a join di non inserire uno spazio alla fine della prima riga).

:g/^a.\+g$/join!

Linux
  1. 8 suggerimenti per la riga di comando di Linux

  2. Suggerimenti Bash per tutti i giorni dalla riga di comando

  3. Come creare un database in MySQL utilizzando la riga di comando

  4. Come fare in modo che sudo ricordi la password più a lungo

  5. Debian:come prevedere quando uscirà la prossima versione di Debian?

4 Strumenti di markdown per la riga di comando di Linux

Come utilizzare Ranger per la navigazione dei file dalla riga di comando

Come ripulire i tuoi dati dalla riga di comando

3 gestori di password per la riga di comando di Linux

Come cercare file dalla riga di comando di Linux

Come cancellare il numero di riga in Vim durante la copia?