Поскольку вы написали функцию, вам не нужно так командовать командами. (Цепочная команда вроде этого также не делает то, что вы ожидаете.)
Глобальная команда не может быть разделена полосой. Вместо этого он работает d | :%s/$/\/!/g
на каждой строке с [A-Z]
. Это, очевидно, неправильно. Чтобы исправить это, вам просто нужно запустить заменяющую команду после глобальной команды (что и было предусмотрено). Поскольку есть две строки с заглавными буквами, замена выполняется дважды. Таким образом, вы получаете /!/!
, добавляя конец каждой строки.
Таким образом, должна быть фиксированная функция.
function PrepareDic()
g/[A-Z]/d
%s/$/\/!/g
endfunction
Если вы действительно хотите использовать панель для разделения команд вам необходимо пройти глобальное к exec
. Однако это не обязательно.
exec 'g/[A-Z]/d' | %s/$/\/!/g