Come posso contare il numero di parole in un file durante la modifica del file in VIM


21

So che posso usare wcper contare caratteri, parole e righe di file dalla riga di comando .

C'è un modo in cui posso contare il numero di parole mentre sono in vim ?

Risposte:


22

Puoi contare parole e linee all'interno viusando viil proprio contatore:

Premere ge quindi CTRL- g. Quindi la linea di fondo appare ad esempio così:

Col 1 of 11; Line 1 of 106; Word 1 of 344; Byte 1 of 2644

Oppure usa viil metodo per chiamare i comandi della shell:

:w !wc -w

Questo prima chiama il :wcomando save ( ) e poi wc -wmostra l'output. Esempio:

:w !wc -w
344

Press ENTER or type command to continue

Premere Enterper tornare a vi.


In realtà è una descrizione errata del :w !<cmd>costrutto. Scrive il buffer corrente su una pipe connessa al comando. Non è promessa alcuna scrittura separata del buffer corrente su un file. Tuttavia, fa ciò che la domanda ha posto.
mcepl,

1

Puoi anche provare :!wc %in Vim, anche se conta la dimensione del file su disco, non ciò che è nel buffer di Vim. Questo può o meno essere quello che volevi.


Questo conta ciò che è sul disco (se non altro), non ciò che è nel buffer - quindi se hai modificato il contenuto del buffer dall'ultimo salvataggio o non lo hai salvato, otterrai un conteggio errato (o anche un errore se stai creando un file).
Stephen Kitt,

Per contro Stephen, questa è una soluzione corretta a "Come posso contare il numero di parole in un file durante la modifica del file in vim", mentre la risposta accettata in senso stretto non lo è (anche se è ambiguo cosa si intendesse o se contasse ).
Michael Homer,

Divertente che sia simile (meno la -wbandiera per limitare l'output solo a parole) a una risposta di eliminazione del 2014 di D_Bye (che apparentemente lo ha auto-cancellato).
Jeff Schaller

0

Plugin come vim-airline possono fornire conteggi di parole per un file (e selezioni) come parte di una barra di stato.


Questa risposta non è solo link. Non ho incluso le specifiche di nessun particolare plugin, perché (come dici tu) particolari plugin potrebbero diventare obsoleti.
Patrick Sanan,

Sono corretto. Tuttavia, in futuro direi che dovresti provare a includere passaggi pertinenti per implementare la soluzione che stai presentando. Grazie!
kemotep

0

Per coloro che vogliono contare il numero di parole in un determinato pezzo di testo (non l'intero file), utilizzare \S\+regexp.

  1. Seleziona il testo di interesse (modalità visiva)
  2. :s/\S\+//gn

Risultato. Vim ti mostrerà qualcosa del genere:10 matches on 1 line

Quando premi :in modalità visiva, vim antepone il tuo comando con il '<,'>quale significa applicare il comando contro il testo selezionato.

\S\+ cattura le parole, ovvero gruppi di caratteri separati da spazi bianchi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.