Ответы:
Если я что-то упустил, Вим уже делает это. Если я выделю какой-нибудь текст с помощью мыши или набрав v
и переместив курсор, я увижу внизу экрана
- VISUAL - 12
где число справа - это количество выделенных символов. Это работает только в том случае, если выделение находится в одной строке, в противном случае отображается количество строк.
Вы также можете визуально выбрать некоторую область текста и тип, g Ctrl-Gкоторый покажет количество выбранных строк, слов и байтов.
set showcmd
в свой, vimrc
чтобы включить его.
Vim переключается между отображением количества символов и количества строк для визуализируемого текста в зависимости от того, что и как вы визуализируете (vim 7.4 исправлен до сентября 2015 года)
V will display line count
v$ will display character count
Если вы визуализируете более одной строки, отображается только количество строк.
g-CTRL-G displays 'byte count' which seems to be 'char count' +1 per line
v
переключается с количества символов на число строк, если выделение охватывает несколько строк. Однако g CTRL-G
делает работу хорошо.
:function VisualLength()
: exe 'normal "xy'
: echo "Visual: " . strlen(@x) . "\n"
: exe 'normal gv'
:endfunction
:map ,q "xy:call VisualLength()<CR>
Сначала вы дергаете текущий выбор (в буфер x)
Затем вы отображаете длину этого буфера: strlen(@x)
( - VISUAL - отображаемое в строке состояния скрывает это, поэтому мы должны добавить новую строку)
Выделите предыдущий визуальный диапазон: gv
Это не учитывает, был ли визуальный режим линейным, символьным или блочным, но этого достаточно для большинства случаев.
По вашему скриншоту я вижу, что вы работаете в Windows, поэтому этот ответ может вам не сильно помочь. Но для других ...
Недостаточно используемая (IMO) особенность Vim - позволить внешним командам выполнять тяжелую работу.
В этом случае, если вы находитесь в UNIX-подобной системе, вы можете использовать wc
команду для этого.
Самый простой способ - заменить выделенный текст выводом команды, набрав (с выделенным текстом):
:!wc
(затем нажмите ввод).
Это будет показано в вашей командной строке как:
'<,'>!wc
После прочтения информации вы можете отменить, u
чтобы вернуться к тому, с чего начали.
Примечание. Эта обработка выполняется только для целых строк . Если вам нужны частичные строки, я думаю, @ garyjohn's g_CTRL-G
- ваш лучший выбор .
Вы можете избежать необходимости отмены, вместо этого запустив:
:w !wc
Это «записывает» выбранные строки в стандартный ввод команды, и вывод команды будет отображаться в новом временном буфере, оставляя исходный нетронутым. Смотрите :help :write_c
для получения дополнительной информации.
Примечание: я получил :write_c
информацию от: /programming/1237780/vim-execute-shell-command-without-filtering
Теперь в целом:
Этот пример wc
довольно прост, но вы можете представить, насколько это мощный подход. В UNIX уже есть много команд для обработки текста, и вы можете использовать их в Vim довольно легко, не трогая Vimscript (yech).
Кроме того, любая написанная вами программа командной строки, которая работает со stdin / stdout, теперь может быть полезна не только для вашего терминала, но и для Vim.
Например, я запускаю tidy
и json-format
изнутри vim делаю файлы, на которые смотрю, более читабельными.
Вы можете сделать то же самое в Windows, но в Windows нет такого богатого набора встроенных команд. Вы всегда можете установить GNUWin32 или аналогичный, чтобы получить эти преимущества.
Для программного способа в vimscript это работало для меня, когда выбор ограничен одной строкой:
let amount = virtcol("'>") - virtcol("'<")
(Использование virtcol(..)
вместо так col(..)
, чтобы оно работало, как ожидалось, когда :set ve=all
активно.)