:help sub-replace-expression
(выделено мной)
Когда замещающая строка начинается с "\ =", остаток интерпретируется как выражение.
Вы не можете делать то, что хотите;замещающая строка является либо подвыражением (когда оно начинается с \=
), либо литералом (если это не так).
Вместо этого вам нужно переписать подвыражение, чтобы объединить строку программным путем (:help expr-.
):
:let n=[0] | %s/|-\n|/\="BLABLA".map(n,'v:val+1')[0]/g
[0]
для получения содержимого массива, созданного с помощью map
, необходимо по двум причинам: замена на массив приведет к нежелательному переводу строки и сделает невозможной конкатенацию со строкой.
Для вашего примера, однако, это может не понадобиться, если вы не вводите какую-либо строку, кроме числа - то есть, если вам не нужно это пространство (:help /\zs
):
:let n=[0] | %s/|-\n|\zs/\=map(n,'v:val+1')[0]/g
Конечно, вы можете комбинировать их, чтобы получить идеальное демо-увлажненное решение для вашей конкретной ситуации:
:let n=[0] | %s/|-\n|\zs/\=" ".map(n,'v:val+1')[0]/g