Jak mogę policzyć liczbę słów w pliku podczas edycji pliku w vimie

21

Wiem, że mogę używać wcdo liczenia znaków, słów i wierszy plików w wierszu polecenia .

Czy jest jakiś sposób, aby obliczyć liczbę słów w vimie ?

Michael Durrant
źródło

Odpowiedzi:

22

Możesz policzyć słowa i linie w środku viza pomocą viwłasnego licznika:

Naciśnij, ga następnie CTRL- g. Następnie dolna linia wygląda na przykład tak:

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

Lub użyj vimetody do wywołania poleceń powłoki:

:w !wc -w

To wywołuje :wnajpierw komendę save ( ), a następnie wc -wwyświetla wynik. Przykład:

:w !wc -w
344

Press ENTER or type command to continue

Naciśnij, Enteraby wrócić do vi.

chaos
źródło
To właściwie niepoprawny opis :w !<cmd>konstruktu. Zapisuje bieżący bufor w potoku podłączonym do polecenia. Nie obiecuje się oddzielnego zapisu bieżącego bufora do pliku. Niemniej jednak robi to, o co pytano.
mcepl,
1

Możesz także spróbować :!wc %w Vimie, choć liczy on rozmiar pliku na dysku, a nie to, co znajduje się w buforze Vima. To może być lub nie być to, czego chciałeś.

Pranav Suri
źródło
Liczy się to, co jest na dysku (jeśli cokolwiek), a nie to, co znajduje się w buforze - więc jeśli zmieniłeś zawartość bufora od ostatniego zapisu lub w ogóle go nie zapisałeś, otrzymasz nieprawidłową liczbę (lub nawet błąd, jeśli tworzysz plik).
Stephen Kitt
Contra Stephen, jest to poprawne rozwiązanie „Jak mogę policzyć liczbę słów w pliku podczas edycji pliku w vimie”, podczas gdy zaakceptowana odpowiedź nie jest ściśle mówiąc (chociaż nie jest jasne, co miało na myśli lub czy ma to znaczenie ).
Michael Homer
Zabawne, że jest podobny (bez -wflagi, aby ograniczyć wynik tylko do słów) do odpowiedzi na usunięcie z 2014 r. Autorstwa D_Bye (który najwyraźniej sam ją usunął).
Jeff Schaller
0

Wtyczki takie jak vim-Airlines mogą zapewniać liczbę słów dla pliku (i wybranych elementów) jako część paska stanu.

Patrick Sanan
źródło
Ta odpowiedź nie jest tylko linkiem. Nie podałem szczegółów konkretnej wtyczki, ponieważ (jak mówisz) poszczególne wtyczki mogą stać się nieaktualne.
Patrick Sanan
Poprawiono mnie. Chciałbym jednak powiedzieć, że w przyszłości powinieneś spróbować zastosować odpowiednie kroki w celu wdrożenia prezentowanego rozwiązania. Dziękuję Ci!
kemotep
0

Dla tych, którzy chcą policzyć liczbę słów w danym fragmencie tekstu (nie w całym pliku), użyj \S\+wyrażenia regularnego.

  1. Wybierz interesujący tekst (tryb wizualny)
  2. :s/\S\+//gn

Wynik. Vim pokaże ci coś takiego:10 matches on 1 line

Kiedy naciskasz :w trybie wizualnym, vim przygotowuje polecenie, '<,'>które oznacza zastosowanie polecenia do zaznaczonego tekstu.

\S\+ przechwytuje słowa, to znaczy grupy znaków oddzielone spacją.

Jurij Pozniak
źródło