Vimscript (vim 8.1.511):
normal gg
if search('^<p>[^A-Z“<]', 'Wc') > 0
echon "\n:: Line " . line('.') . ' ' . getline('.')
endif
normal gg
" call setpos('.', [0,1,1,0])
if search('[a-z,;]</p>$', 'Wc') > 0
echon "\n:: Line " . line('.') . ' ' . getline('.')
endif
Бег на этом:
<p>Abc for</p>
<p>abc for.</p>
и вывод всегда второй echon
, ничего до этого никогда не показывается.
Комментируя 2-й normal gg
и раскомментируя call setpos('.', [0,1,1,0])
, скрипт работает как положено.
Насколько я понимаю, normal gg
переходит к первому непустому символу в 1-й строке, в данном случае так же, как call setpos('.', [0,1,1,0])
.
Еще более запутанным является то, что раскомментирование обеих строк также не сработает.
Мое понимание неверно? Я в полном замешательстве.