Wie bringe ich netrw (in Vim) dazu, den absoluten Pfad zu verwenden?
-
09-12-2019 - |
Frage
Ich habe Vim73 unter Windows und versuche, Dateien über den Dateibrowser zu verschieben.
Es wurde mir eine Fehlermeldung angezeigt, dass „move“ nicht ausführbar sei (siehe dieser Beitrag).Nach einigem Debuggen stellte ich fest, dass das Problem bei mir lag vim73\autoload\netrw.vim
Datei.Ich habe den Befehl zum Verschieben zum Laufen gebracht, aber es gibt noch ein anderes Problem – offenbar das Verzeichnis, in dem ich suche :Ex
ist nicht mein aktuelles Arbeitsverzeichnis, also das mv.exe
Der Befehl (von UnxUtils) kann die Quelle oder das Ziel nicht finden.
Die Zeile von netrw, die die Probleme verursacht, ist diese:
let ret= system(g:netrw_localmovecmd." ".shellescape(fname)." ".shellescape(s:netrwmftgt))
Ich habe versucht, das einzupacken shellescape()
Funktionen in expand()
, aber das schien nicht zu helfen.
Irgendeine Idee, wie ich den absoluten Pfad für die Quelle und die Ziele ermitteln kann?
Lösung 2
Nun, wie sich herausstellt, wenn sich Ihr Cursor auf dem befindet ..
In der Dateiliste wird davon ausgegangen, dass es sich um ein Verzeichnis handelt.
Alles, was ich wirklich tun musste, war, den Cursor in den Bannerbereich zu bewegen, bevor ich es versuchte mt
- oder mt
aus dem übergeordneten Verzeichnis.
Hoppla!
Andere Tipps
Anstatt nach dem absoluten Weg zu suchen, würde ich mich festlegen g:netrw_keepdir
bis 0 für Sie arbeiten?Es ist nicht genau das, was Sie wollen (was meiner Meinung nach darin besteht, das vim-CWD zu nehmen und es auf netrw anzuwenden, statt umgekehrt), aber wenn Sie damit einverstanden sind, netrw zum Verwalten Ihres vim-CWD zu verwenden, funktionieren Ihre Befehle möglicherweise einfach wie es ist.
Bearbeiten:Ansehen :help netrw-c
für die ausführliche Erklärung.Der c
Der Befehl in netrw könnte ausreichen.