Odpowiedzi:
O ile mi czegoś nie brakuje, Vim już to robi. Jeśli zaznaczę jakiś tekst za pomocą myszy lub wpisując v
i przesuwając kursor, widzę u dołu ekranu
- WIZUALNE - 12
gdzie liczba po prawej to liczba wyróżnionych znaków. Działa to tylko wtedy, gdy zaznaczenie jest w jednym wierszu, w przeciwnym razie pokazuje liczbę wierszy.
Możesz także wizualnie wybrać region i typ tekstu, g Ctrl-Gktóry pokaże liczbę wybranych wierszy, słów i bajtów.
set showcmd
do swojego, vimrc
aby go włączyć.
Vim przełącza się między wyświetlaniem liczby znaków a liczbą wierszy dla wyświetlanego tekstu w zależności od tego, co i jak wizualizujesz (vim 7.4 załatany do września 2015)
V will display line count
v$ will display character count
Jeśli wizualizujesz więcej niż jedną linię, wyświetla tylko liczbę linii
g-CTRL-G displays 'byte count' which seems to be 'char count' +1 per line
v
przełączanie z liczby znaków na liczbę wierszy, jeśli zaznaczenie obejmuje wiele linii. Jednak g CTRL-G
dobrze się spisuje.
:function VisualLength()
: exe 'normal "xy'
: echo "Visual: " . strlen(@x) . "\n"
: exe 'normal gv'
:endfunction
:map ,q "xy:call VisualLength()<CR>
Najpierw szarpniesz bieżący wybór (do bufora x)
Następnie wyświetlasz długość tego bufora: strlen(@x)
( - VISUAL - wyświetlany w wierszu stanu przesłania to, więc musimy dodać nowy wiersz)
Podkreśl poprzedni zakres wizualny: gv
Nie uwzględnia to, czy trybem wizualnym był tryb liniowy, znakowy czy blokowy, ale w większości przypadków wystarcza.
Z twojego zrzutu ekranu widzę, że korzystasz z systemu Windows, więc ta odpowiedź może ci nie pomóc. Ale dla innych ...
Niedostatecznie używana (IMO) funkcja Vima polega na tym, że zewnętrzne polecenia wykonują ciężkie podnoszenie.
W tym przypadku, jeśli korzystasz z systemu typu UNIX, możesz to zrobić za pomocą wc
polecenia.
Najprostszym sposobem jest zastąpienie zaznaczonego tekstu wynikiem polecenia, wpisując (z zaznaczonym tekstem):
:!wc
(następnie naciśnij enter).
To pokaże w linii poleceń jako:
'<,'>!wc
Po przeczytaniu informacji możesz cofnąć, u
aby wrócić do miejsca rozpoczęcia.
Uwaga: Przetwarzanie odbywa się tylko na całych liniach . Jeśli chcesz częściowe linie, myślę, że @ garyjohn's g_CTRL-G
jest najlepszym wyborem .
Możesz uniknąć konieczności cofania, uruchamiając zamiast tego:
:w !wc
Spowoduje to „zapisanie” wybranych wierszy do standardowego wejścia polecenia, a wynik polecenia zostanie wyświetlony w nowym buforze tymczasowym, pozostawiając oryginał niezmieniony. Zobacz :help :write_c
więcej informacji.
Uwaga: Mam :write_c
informacje od: /programming/1237780/vim-execute-shell-command-without-filtering
Teraz bardziej ogólnie:
Ten przykład z wc
jest dość uproszczony, ale możesz sobie wyobrazić, jak to jest potężne podejście. W systemie UNIX dostępnych jest już wiele poleceń przetwarzania tekstu i można ich używać w Vimie dość łatwo, bez konieczności dotykania Vimscript (yech).
Co więcej, każdy napisany przez ciebie program wiersza poleceń, który zajmuje się stdin / stdout, może teraz przynieść korzyści nie tylko na twoim terminalu, ale także w Vimie.
Uważam się na przykład za uruchomionego tidy
i json-format
od wewnątrz vima, aby pliki, na które patrzę, były bardziej czytelne.
Możesz zrobić to samo w systemie Windows, ale system Windows nie ma wbudowanego tak bogatego zestawu poleceń. Jednak zawsze możesz zainstalować GNUWin32 lub podobny, aby uzyskać te korzyści.
Dla programowego sposobu w vimscript działało to dla mnie, gdy wybór jest ograniczony do jednego wiersza:
let amount = virtcol("'>") - virtcol("'<")
(Używanie virtcol(..)
zamiast col(..)
, aby :set ve=all
działało zgodnie z oczekiwaniami, gdy jest aktywne).