dise que j'ai ce vimscript comme "/tmp/example.vim":
let g:input = "START; % END"
exec("! clear && echo " . escape(shellescape(g:input), "%"))
3 Réponses :
Vous devez échapper correctement à "%". Donc, il devrait être:
L'entrée dans mon script réel n'est pas corrigée. Je pourrais utiliser Escape () code> pour échapper généralement à tous les "%", mais voir la fin de la question.
Cela semble le faire:
let g:input = "START; % END"
echo system("echo " . shellescape(g:input))
Si vous écartez de toute façon le texte écho, vous pouvez utiliser appel code>.
@echristopherson ouais, c'était juste pour voir la sortie dans l'exemple script.
Pour une utilisation avec la commande Lorsque l'argument :! code>, vous devez transmettre l'argument facultatif {spécial} code> sur shellescape () code>:
{spécial} code> est présent et c'est un non-zéro
Numéro ou une chaîne non vide (| non-zéro-arg |), alors spécial
éléments tels que ! code>, % code>, # code> et :! Code> |
commande. p>
blockQuote>