Как я могу заставить (g) Vim отображать счетчик символов текущего файла?

Мне нравится писать учебные руководства и статьи для форума программирования, который я часто посещаю. Этот форум имеет символьный предел по почте. Я использовал Блокнот ++ в прошлом для записи сообщений, и это проводит живой подсчет символов в строке состояния. Я начинаю использовать gVim больше, и я действительно не хочу возвращаться к Блокноту ++ в этой точке, но очень полезно иметь этот счетчик символов. Если я пробегаюсь через количество, я обычно заканчиваю тем, что вставил сообщение в Блокнот ++, таким образом, я вижу, когда я обрезал достаточно для получения пределом.

Я видел предложения это :set ruler помог бы, но это только дает счетчик символов через индекс текущего столбца на текущей строке. Это было бы большим, если бы я не использовал концы абзаца, но я уверен, что Вы согласились бы, что чтение нескольких тысяч символов в одном абзаце не удобно.

Я считал справку и думал это rulerformat работал бы, но после просмотра statusline формат, который это использует, я не видел ничего, что дает счетчик символов для текущего буфера.

Я видел, что существуют плагины, которые добавляют это, но я все еще опускаю пальцы ног в gVim, и я не уверен, что хочу загрузить случайные плагины, прежде чем я пойму то, что они делают. Я предпочел бы использовать что-то, встроил к энергии, но если она не существует, она не существует.

Что я должен сделать для выполнения моей цели? Если это включает плагин, Вы используете его и как хорошо это работает?

86
задан 07.06.2010, 19:26

6 ответов

Пресса g CTRL-G в нормальном режиме для отображения некоторой статистики по курсору и файлу.

Если Вы находитесь в Linux, можно использовать wc -m получить счетчик символов в текущем файле

:!wc -m %

Так как это не обновляется в режиме реального времени, возможно, Вы хотите отобразить эту команду на что-то как:

map <F4> :!wc -m %<CR>
140
ответ дан 07.12.2019, 08:01
:help count-items

предлагает, что Вы могли или сделать пробный прогон крыла замены

:%s/./&/gn

(который затем сообщает количество подобранных символов), или что Вы делаете воображение strlen() на визуально выделенном тексте:

:echo strlen(@")

(" регистр без имени),

так как можно назвать выражение в statusline как %{myfunc()} это могло бы быть хорошей начальной точкой. подсчет все время мог быть немного трудоемким, так как необходимо будет выбрать целый текст и затем дергать его, но возможно показ числа байтов в "-регистр уже хорошо для Вас. если Вы действительно хотите знать количество символов в буфере: просто визуально выберите ВЕСЬ текст в буфере и дергайте его. таким образом решение было бы:

 :set statusline=%{strlen(@")}

который дает Вам количество символов в "-регистр (который идентичен числу байтов, если Вы выбираете и дергаете текущий буфер).

24
ответ дан 07.12.2019, 08:01
:help statusline

дает Вам

o N   Byte number in file of byte under cursor, first byte is 1.
      Mnemonic: Offset from start of file (with one added)

который является также хорошим обходным решением для Вашей проблемы. просто пойдите в конец буфера с G, и число байта, показанное в Вашем statusline, является количеством символов (не верный с многобайтовыми символами, конечно). возвратитесь туда, где Вы произошли из с ctrlo.

6
ответ дан 07.12.2019, 08:01

Можно добавить выражение для отображения bytecount буфера в statusline с:

:set statusline+=\ %{\ line2byte(line(\"$\")+1)-1\ }B

Или можно заменить переменную опции непосредственно для предотвращения всего этого выхода:

:let &statusline .= ' %{ line2byte(line("$")+1)-1 }B'
3
ответ дан 07.12.2019, 08:01

Если Вы сохраняете копию файла своего текста, просто запишите свой текст в диск - счетчик символов отображен по умолчанию.

Если Вы не хотите сохранять файл, просто сохраните свой текст к /dev/null: :w!/dev/null.

Можно также позволить wc считайте свои символы: :%!wc -c - но не забывайте поражать U для восстановления текста.

Если Вы часто нуждаетесь в этом, просто отображаете эти команды на сочетание клавиш: :map #wc :w!/dev/null^[ - обратите внимание что ^[ должен быть введен как Ctrl+V Esc.

Как первый индикатор размера текста, просто включите номера строки; допущенный: этому нужна некоторая умственная арифметика ;-)

0
ответ дан 07.12.2019, 08:01

Обходное решение, которое я использовал, пока я не принял ответ mrucci:

Я узнал случайно что когда я: w, чтобы сохранить файл, команда производит число записанных байтов. Это - более или менее счетчик символов, таким образом, это было достаточно близко до сих пор. Мне действительно нравится ответ mrucci также, возможно больше, чем этот, потому что он перебрасывается парой слов количество также.

0
ответ дан 07.12.2019, 08:01

Теги

Похожие вопросы