9
votes

S'échapper "%" dans Vim lors de la bombardement, il n'est donc pas étendu au nom de fichier?

dise que j'ai ce vimscript comme "/tmp/example.vim":

let g:input = "START; % END"
exec("! clear && echo " . escape(shellescape(g:input), "%"))

vim

0 commentaires

3 Réponses :


4
votes

Vous devez échapper correctement à "%". Donc, il devrait être: xxx


1 commentaires

L'entrée dans mon script réel n'est pas corrigée. Je pourrais utiliser Escape () pour échapper généralement à tous les "%", mais voir la fin de la question.



0
votes

Cela semble le faire:

let g:input = "START; % END"
echo system("echo " . shellescape(g:input))


2 commentaires

Si vous écartez de toute façon le texte écho, vous pouvez utiliser appel .


@echristopherson ouais, c'était juste pour voir la sortie dans l'exemple script.



10
votes

Pour une utilisation avec la commande :! , vous devez transmettre l'argument facultatif {spécial} sur shellescape () :

Lorsque l'argument {spécial} 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 ! , % , # et sera précédé par une barre oblique inverse. Cette barre oblique backslash sera retirée à nouveau par le | :! | commande. xxx


0 commentaires