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 ?

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.


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ś.


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.


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ą.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.