Lubię pisać tutoriale i artykuły na forum programowania, które często odwiedzam. To forum ma limit znaków na post. W przeszłości używałem Notepad ++ do pisania postów, dzięki czemu liczba znaków na żywo jest wyświetlana na pasku stanu. Zaczynam więcej używać gVim i naprawdę nie chcę w tym momencie wracać do Notepad ++, ale bardzo przydatne jest, aby ta liczba znaków się liczyła. Jeśli przejdę liczbę, zwykle kończę wklejanie posta do Notepad ++, aby zobaczyć, kiedy przyciąłem wystarczająco, aby przekroczyć limit.
Widziałem sugestie, które :set ruler
mogłyby pomóc, ale daje to tylko liczbę znaków poprzez bieżący indeks kolumny w bieżącym wierszu. Byłoby świetnie, gdybym nie używał podziałów akapitów, ale jestem pewien, że zgodziłbyś się, że czytanie kilku tysięcy znaków w jednym akapicie nie jest wygodne.
Przeczytałem pomoc i pomyślałem, że rulerformat
to zadziała, ale po przejrzeniu używanego statusline
formatu nie zobaczyłem niczego, co dałoby liczbę znaków dla bieżącego bufora.
Widziałem, że istnieją wtyczki, które to dodają, ale wciąż zanurzam palce w gVimie i nie jestem pewien, czy chcę załadować losowe wtyczki, zanim zrozumiem, co robią. Wolałbym użyć czegoś wbudowanego do vim, ale jeśli nie istnieje, to nie istnieje.
Co powinienem zrobić, aby osiągnąć swój cel? Jeśli dotyczy wtyczki, czy jej używasz i jak dobrze działa?
g CTRL-G
Nie wiedziałem, że to istnieje. Miły!! [...] %
?sugeruje, że możesz albo wykonać próbę zastępczą ala
(który następnie podaje liczbę dopasowanych znaków) lub że masz ochotę
strlen()
na wizualnie zaznaczony tekst:(„jest nienazwanym rejestrem)
ponieważ możesz wywołać wyrażenie w linii statusu w
%{myfunc()}
ten sposób, może to być dobry punkt wyjścia. liczenie przez cały czas może być trochę czasochłonne, ponieważ musiałbyś zaznaczyć cały tekst, a następnie szarpać go, ale być może pokazanie liczby bajtów w rejestrze-jest już dla ciebie odpowiednie. jeśli naprawdę chcesz znać liczbę znaków w buforze: po prostu wizualnie zaznacz WSZYSTKIE teksty w buforze i przeciągnij je, więc rozwiązaniem byłoby:co daje liczbę znaków w rejestrze „(która jest identyczna z liczbą bajtów, jeśli wybierzesz i zszarpiesz bieżący bufor).
źródło
g<CTRL-g>
metoda z zaakceptowanej odpowiedzi.Rozszerzenie odpowiedzi mrucci:
Możesz używać
wc
w systemie Linux bez konieczności wcześniejszego zapisywania pliku, kierując dane:w
wyjściowe polecenia w następujący sposób:i możesz zmapować to na coś, o czym wspomniał mrucci.
źródło
daje Ci
co jest również dobrym obejściem problemu. wystarczy przejść do końca bufora za pomocą, Ga liczba bajtów pokazana w linii statusu to liczba znaków (oczywiście nieprawda w przypadku znaków wielobajtowych). wróć do miejsca, z którego przybyłeś ctrlo.
źródło
set statusline+=\ %o\ %N
(co ciekawe, nie działa ono np. Dla elementu „t S”) . Jeśli więc zobaczysz, że linia statusu nie uległa zmianie, oznacza to, że musisz wykonaćset laststatus=2
. Dla mnie zastąpił on istniejącą przezroczystą linię statusu nową, będącą jednolitą czernią i posiadającą tylko element „liczba bajtów”.Jeśli masz zwyczaj używania: w, aby zapisać plik, za każdym razem, gdy to robisz, status zgłasza liczbę zapisanych znaków. Na przykład na końcu tego zdania zrobiłem: w (tak, używam gvima do napisania tej notatki) i napisałem: napisano 245C.
źródło
Możesz dołączyć wyrażenie, aby wyświetlić liczbę bajtów bufora w linii statusu za pomocą:
Lub możesz zmienić zmienną opcji bezpośrednio, aby uniknąć ucieczki:
źródło
...%{ line2byte(line(\"$\")+1))-1 }
aby zawierał znaki ostatniego wiersza w liczbie. Takie podejście nie będzie jednak poprawnie liczyć znaków wielobajtowych.Obejście Używałem, dopóki nie zaakceptowałem odpowiedzi mrucci:
Dowiedziałem się przez przypadek, że kiedy: w, aby zapisać plik, polecenie wyświetla liczbę zapisanych bajtów. Jest to mniej więcej liczba postaci, więc do tej pory było wystarczająco blisko. Podoba mi się również odpowiedź mrucciego, być może nawet bardziej niż ta, ponieważ zawiera ona także liczbę słów.
źródło
Jeśli przechowujesz kopię pliku swojego tekstu, po prostu napisz tekst na dysk - liczba znaków jest wyświetlana domyślnie.
Jeśli nie chcesz, aby plik, wystarczy zapisać tekst
/dev/null
::w!/dev/null
.Możesz także
wc
policzyć swoje postacie::%!wc -c
- ale nie zapomnij nacisnąć, Uaby przywrócić tekst.Jeśli potrzebujesz tego często, po prostu przypisz te polecenia do sekwencji klawiszy:
:map #wc :w!/dev/null^[
- zwróć uwagę, że^[
należy je wprowadzić jako Ctrl+ V Esc.Jako pierwszy wskaźnik rozmiaru tekstu po prostu włącz numery linii; przyznał: to wymaga trochę arytmetyki umysłowej ;-)
źródło
Po otrzymaniu tego pytania i przeczytaniu odpowiedzi (dzięki mrucci) dodałem te linie do mojego pliku inicjującego .vimrc.
Pozostawiam to vimowi: pomóż użytkownikom dowiedzieć się, co robią.
Osobiście uważam, że warto zacząć od mapowania Vima; lub, ponieważ rzadko używam ich jako pierwszej postaci polecenia.
źródło