Existe-t-il un moyen de faire fonctionner le symbole spécial %
avec les noms de chemin sur la ligne de commande? Par exemple, je voudrais faire:
:diffsplit Path\to\other\directory\%
Pour que je puisse @:
comparer rapidement des fichiers du même nom. Cependant, cela ouvre juste un nouveau tampon appelé %
.
Bien sûr, je pourrais faire:
:exe 'diffsplit Path\to\other\directory\'.expand('%')
Mais c'est lourd car je ne peux pas tabuler des répertoires complets lors de la saisie de la commande.
Existe-t-il une autre meilleure façon de procéder?
Voici une question connexe , mais elle ne répond pas exactement à ma situation.
Edit: Juste pour clarifier, je voudrais pouvoir réutiliser la commande exactement pour différents fichiers. Par conséquent, une solution qui remplit simplement automatiquement le fichier actuel dans la ligne de commande ne fonctionnera pas. La même commande doit fonctionner pour différents noms de fichiers.
la source
%
, il remplira le nom de fichier, mais quand je veux réutiliser cette ligne, l'ancien nom de fichier sera toujours présent. Je voudrais que le% insère dynamiquement le nom de fichier actuel, quel qu'il soit à ce moment-là sans avoir à le retaper.:diffsplit Path/to/other/directory/%:t
Réponses:
Les caractères spéciaux (voir
:h cmdline-special
) et les modificateurs de nom de fichier (voir:h filename-modifiers
) sont développés sur la ligne de commande, donc:la source
Il s'avère donc que c'est un problème Windows stupide. Le remède à cela est d'utiliser simplement des barres obliques dans le nom du chemin. c'est à dire
:diffsplit Path/to/other/directory/%
fonctionne très bien.J'ai résolu cela sur mon système en utilisant l'option
set shellslash
qui utilise par défaut des barres obliques, même sous Windows.la source
%
, et est le séparateur de chemin par défaut sous Windows. Vim ne sait pas à quoi vous pensiez.directory\\%
mais cela ne fonctionnait toujours pas. IDK, mais je suppose que cela n'a pas d'importance car les barres obliques résolvent le problème.Je ne sais pas si cela vous convient:
Encore une frappe de votre original, le
<C-r>
, afin de remplir la%
valeur du registre.la source
@:
de futurs fichiers car il "code en dur" le nom du fichier actuel.:Mydiff /path/to/there/
pour que le chemin puisse être complété par tabulation. il suffit de passer ceci à votre commande / fonction avecexec