Portanto, o principal problema com o seu comando é que usando |
você está dividindo-o em vários comandos, sendo o primeiro nnoremap
, mas a partir do segundo, uma série de silent!
de comandos com substituições, que estão sendo executadas no momento em que seu .vimrc
está sendo originado, em vez de se tornar parte do comando.
Usar \|
ou <bar>
deve resolver isso.
A segunda questão é que nnoremap
espera um comando no modo normal, então pega o silent!
e executa o comando s
(substitute), que substitui o caractere sob o cursor por ilent! ...
, que não é o que você quer ... Você precisa de um :
extra antes do primeiro silent!
para saber como entrar no modo de comando.
E terceiro, seu último comando %s/;$<CR>
não está muito bem formado, você precisa de dois /
s adicionais para completá-lo. Estou assumindo que sua intenção é retirar todos os ;
s no final das linhas, então %s/;$//
é o que eu estou supondo que você queira aqui. (Eu também notei que você pulou um silent!
lá, talvez por omissão? Eu estou adicionando aqui, apenas no caso.)
Colocando tudo junto:
nnoremap ;; :silent! :%s/\s\+$//e \| silent! :%s/\(\n\n\)\n\+// \| silent! :%s#\($\n\s*\)\+\%$## \| silent! :%s/;$//<CR>