par exemple, supposons que je l'ai fait
:let foo=pattern
et maintenant je veux effectuer Ggrep patter
mais utiliser une variable foo
au lieu de la patter
chaîne littérale .
:echo foo
sorties pattern
, mais
:Ggrep foo
cherche juste foo
METTRE À JOUR:
construire une chaîne de commande puis exécuter: exécuter dessus n'est pas une solution, c'est un hack. Et cela rompt avec toutes les valeurs de variables non triviales.
Ggrep
(majuscule G?)?Réponses:
Il ne s'agit pas de variable, mais peut-être que la commande abrégée vim peut aider. Essayez depuis la ligne de commande:
ensuite
Il complètera 'foo' à votre 'pattern'.
la source
echo foo
. Oppsecho pattern
qui n'est pas une variable. c'est un piratage et une erreur.qu'en est-il de:
la source
let xyz = tabpagenr()
alorstabnext xyz
. Le langage de script de Vim est aussi imparfait que son environnement modal est impeccable.Si vous n'aimez pas la
:exe
solution, vous pouvez "lire" le contenu d'une variable dans la ligne de commande en utilisant le=
registre d'expression. Par exemple, tapez:Ggrep
puis appuyez sur Ctrl- rpuis tapez=foo
et appuyez sur Enter. En supposant que la variablefoo
contienne "pattern", votre ligne de commande devrait maintenant ressembler à:Cela a l'avantage que vous pouvez voir la commande réelle qui sera exécutée, et même la modifier avant d'appuyer Enterune deuxième fois.
Voir:
la source