В javascript мы можем заменить все автономные синглы i на i0:
i
i0
str = 'if (i < 10 && i1 > 0) { life++; i-- }' str.replace(/(?<=\W)i(?=\W)/g, 'i0') // => if (i0 < 10 && i1 > 0) { life++; i0-- }
Как это сделать в vim?
Нет, вы не можете сделать это в JavaScript (пока).Взгляд в прошлое - очень недавняя особенность;очевидно, только Chrome поддерживает это сейчас?
Ваше регулярное выражение в любом случае нарушено: оно не соответствует i в начале или конце строки.
Правильное регулярное выражение в любом случае не требует упреждающего просмотра: /\bi\b/ (\b является границей слова)
/\bi\b/
\b
Это было для JavaScript;в vim это \<i\> (\< = начало слова, \> = конец слова)
\<i\>
\<
\>
Тем не менее, vim поддерживает просмотр вперед / назад: \W\@<=i\W\@= (или альтернативно \W\zsi\ze\W)
\W\@<=i\W\@=
\W\zsi\ze\W