Проблема в первую очередь вызвана путаницей в отношении роли &
в строке замены.Строка замены - , а не в обычном порядке, хотя в ней есть некоторые специальные символы, такие как &
.Вы можете прочитать о роли &
в строке замены здесь: :h sub-replace-special
.
Я подозреваю, что основная проблема для OP - не обязательно вводить дополнительные обратные слеши, а скорее вспоминать, когда нужен обратный слеш, а когда нет,Одним из обходных путей может быть использование «выражений замены», если вы не уверены.(См. :h sub-replace-expression
.) Это требует помещения `\ = 'в строку замены, но для некоторых людей это может дать вам более естественный контроль над тем, что заменяется, так как помещение строкового литерала в одинарные кавычки даст вам строку замены, которую вы хотите,Например, эта замена делает то, что хочет OP:
:s/</\='<'/g