Je suis novice en Vim. J'essaie de comprendre le comportement de cette fonction documentée :
*:w_c* *:write_c*
:[range]w[rite] [++opt] !{cmd}
Execute {cmd} with [range] lines as standard input
(note the space in front of the '!'). {cmd} is
executed like with ":!{cmd}", any '!' is replaced with
the previous command |:!|.
J'ai essayé ce qui suit :
- Ouvrir vim
- passez en mode insertion et tapez le texte 'foo'.
- Entrez la commande ex
:w ! touch
Je m'attendais à ce que cela crée un fichier nommé 'foo', comme le fait de taper 'touch foo' dans le shell. Au lieu de cela, j'obtiens cette erreur :
:write ! touch
usage:
touch [-A [-][[hh]mm]SS] [-acfhm] [-r file] [-t [[CC]YY]MMDDhhmm[.SS]] file ...
shell returned 1
C'est comme s'il envoyait un tampon vide à touch
. J'ai essayé d'enregistrer le fichier pour voir si cela faisait une différence, mais ce n'est pas le cas. Je suis en train de lire le livre "Practical Vim" qui donne cet exemple :
:write ! sh
exécutera le contenu du tampon comme des commandes shell. Si je change foo
a echo foo
et exécuter cette commande, j'obtiens le comportement attendu :
:w ! sh
foo
Merci d'avance pour toute aide.