Я хочу подсчитать количество вхождений строки под курсором. Я намерен сделать это с помощьюКак указать строку под курсором в Vim?
:%s/pattern/&/gn
команда. Итак, как мне указать строку под курсором вместо pattern
?
Я хочу подсчитать количество вхождений строки под курсором. Я намерен сделать это с помощьюКак указать строку под курсором в Vim?
:%s/pattern/&/gn
команда. Итак, как мне указать строку под курсором вместо pattern
?
Вы можете вставить текущую строку через регистр выражения . Для буквального матча, включите регулярное выражение очень nomagic режим (\V
), и избежать каких-либо обратной косой черты и разделитель в строке:
:%s/\V<C-r>=escape(getline('.'), '/\')<CR>/&/gn
В зависимости от того, что вы хотите посчитать точно, вам может понадобиться на якорь (\^...\$
в очень номическом режиме).
Вместо прямой установки через <C-r>
вы также можете построить команду через :execute
. Это больше подходит для функции.
:execute '%s/\V' . escape(getline('.'), '/\') . '/&/gn'
Среднее значение для _yank_ текущей строки (' Y' или 'yy') и использовать ее как':% s/\ V
Я согласен с этим. Как эти решения проще, чем yanking, а затем указав регистр с помощью '
Я бы не набирал их повторно. Если бы я нуждался в этом чаще, я бы, естественно, создал для него сопоставление или команду. Вы не сказали нам, что вы используете это для ... –
Если вы ищете консервированные плагин решения, мой SearchPosition plugin может рассчитывать вхождения. С его помощью V<A-m>
покажет сводку следующим образом:
On sole match in this line, 8 following, 2 in previous lines; total 10 for /this line\n/
Я обычно делаю '% w! Sort | уникальный -dc | less' или '%! sort | unique -c' и undo – sehe