Gibt es eine Möglichkeit, das spezielle Symbol %
mit Pfadnamen in der Befehlszeile arbeiten zu lassen? Zum Beispiel möchte ich tun:
:diffsplit Path\to\other\directory\%
Damit kann ich @:
schnell gleichnamige Dateien vergleichen. Dies öffnet jedoch nur einen neuen Puffer namens %
.
Natürlich könnte ich tun:
:exe 'diffsplit Path\to\other\directory\'.expand('%')
Dies ist jedoch umständlich, da ich beim Eingeben des Befehls keine vollständigen Verzeichnisse auflisten kann.
Gibt es einen anderen besseren Weg, dies zu tun?
Hier ist eine verwandte Frage , die meine Situation jedoch nicht genau anspricht.
Bearbeiten: Zur Verdeutlichung möchte ich den Befehl genau für verschiedene Dateien wiederverwenden können. Eine Lösung, die die aktuelle Datei in der Befehlszeile einfach automatisch ausfüllt, funktioniert also nicht. Der gleiche Befehl muss für verschiedene Dateinamen funktionieren .
quelle
%
, wird der Dateiname gefüllt, aber wenn ich diese Zeile wiederverwenden möchte, ist der alte Dateiname weiterhin vorhanden. Ich möchte, dass% den aktuellen Dateinamen dynamisch einfügt, unabhängig davon, was gerade passiert, ohne ihn erneut eingeben zu müssen.:diffsplit Path/to/other/directory/%:t
Antworten:
Sonderzeichen (siehe
:h cmdline-special
) und Dateinamenmodifikatoren (siehe:h filename-modifiers
) werden in der Befehlszeile erweitert.quelle
Es stellt sich also heraus, dass es sich um ein dummes Windows-Problem handelt. Abhilfe schafft einfach die Verwendung von Schrägstrichen im Pfadnamen. dh
:diffsplit Path/to/other/directory/%
funktioniert gut.Ich habe dies auf meinem System behoben, indem ich die Option verwendet habe,
set shellslash
die standardmäßig auch unter Windows Schrägstriche verwendet.quelle
%
, als auch ist das Standardpfadtrennzeichen unter Windows. Vim kann nicht sagen, was du vorhast.directory\\%
aber das funktionierte immer noch nicht. IDK, aber ich denke, es spielt keine Rolle, da Schrägstriche das Problem lösen.Ich weiß nicht, ob das für dich in Ordnung ist:
Nur noch ein Tastendruck auf Ihr Original, das
<C-r>
, um den%
Registerwert zu füllen .quelle
@:
für zukünftige Dateien, da der aktuelle Dateiname "hart codiert" wird.:Mydiff /path/to/there/
folgt ein, damit der Pfad auf der Registerkarte vervollständigt werden kann. Übergeben Sie dies einfach an Ihren Befehl / Ihre Funktion mitexec