Umgang mit Dateinamen ohne Berücksichtigung der Groß- und Kleinschreibung unter Windows


8

Ich verwende das neueste vim / gvim (8.0.118), habe dieses Problem jedoch in der Vergangenheit bei anderen Versionen festgestellt.

Ich habe eine Datei mit dem Namen fizzbuzz.java(außerhalb von gvim) erstellt und sie in einem neuen Tab in gvim auf meinem Windows 7-PC bei der Arbeit über das Kontextmenü meines Dateimanagers geöffnet. Nachdem :xich die Registerkarte mit geschlossen hatte , stellte ich fest, dass ich die Datei umbenennen musste FizzBuzz.java, um mit dem Namen der Klasse übereinzustimmen, die ich außerhalb von gvim geschrieben hatte.

Wenn ich es jedoch in derselben Instanz von gvim erneut öffnete und wieder das Kontextmenü meines Dateimanagers verwendete, wurde das ursprüngliche Gehäuse wiederhergestellt, und wenn ich es mit schließe :x, wird es als solches gespeichert , sodass ich es musste Benennen Sie die Datei erneut um. Erst nachdem ich den Puffer gelöscht und die Pufferliste im Menü aktualisiert hatte, konnte ich gvim veranlassen, das neue Gehäuse des Dateinamens korrekt zu erkennen.

Dies ist in gvim 7.4 unter Linux (PCLinuxOS) nicht der Fall.

Gibt es eine einfachere Möglichkeit, gvim zu erkennen und die Änderung des Gehäuses eines Dateinamens unter Windows beizubehalten, ohne gvim neu zu starten?


1
Ich kann Ihr Problem nicht reproduzieren, aber Ihr Wortlaut ist nicht präzise, ​​sodass ich möglicherweise etwas falsch mache: I created a file named fizzbuzz.javaSie haben es manuell in Ihrem Explorer erstellt oder verwendet :e fizzbuzz.java? After closing the fileMeinst du das Schließen des Puffers fizzbuzz.javamit :bd? I had to rename it to FizzBuzz.javain deinem Entdecker, nicht mit :saveas? it reverts to the original casing, and saves it as suchwo siehst du es mit dem ursprünglichen Namen? so that I had to rename the file againWie hast du es wieder umbenannt? refreshing the buffer list in the menuWelches Menü?
Statox

Die Frage wurde aktualisiert, um Antworten auf Ihre Fragen hinzuzufügen. Erstellt und umbenannt die Datei außerhalb von gvim. Das Originalgehäuse wird in der Statusleiste angezeigt, wenn ich die Datei in gvim mit meinem Dateimanager erneut öffne.
Herb Wolfe

Danke für die Bearbeitung. Nach Ihrem Workflow kann ich dieses Problem immer noch nicht reproduzieren. Ich denke, es ist ein seltsames Verhalten, da der Dateiname vollständig vom Betriebssystem verarbeitet wird ... Ich hoffe, jemand kann Ihnen helfen :)
statox

2
Ja, vim scheint den ursprünglichen Namen wiederzuverwenden, da er sich an den Puffer erinnert. Versuchen Sie es als Problemumgehung :f %.
Antony

@ Anthony, wenn Sie das als Antwort hinzufügen möchten, werde ich es akzeptieren.
Herb Wolfe

Antworten:


1

Warum passiert das?

Wenn Sie die Datei mit schließen :x, speichert es die Puffer und schließt das Fenster / Tab, aber Vim ist nicht über die Datei vergessen. Wenn Sie den :lsBefehl danach ausführen , sehen Sie, dass der Puffer noch vorhanden ist.

Wenn Sie die Datei dann erneut öffnen, wird Vim feststellen, dass sie bereits einen Puffer mit dem "gleichen" Dateinamen enthält (da Ihr Dateisystem die Groß- und Kleinschreibung bewahrt, die Groß- und Kleinschreibung nicht berücksichtigt fizzbuzz.javaund FizzBuzz.javain Bezug auf die Identität der Datei gleichwertig ist). und verwenden Sie den Puffer mit dem Dateinamen in Kleinbuchstaben erneut.

Die Lösung

Um dies zu verhindern, müssen Sie Vim anweisen, den Puffer mithilfe des :bwipeoutBefehls vollständig zu verwerfen, anstatt nur das Fenster zu schließen . Dadurch wird der Puffer vollständig aus Vim entfernt. Wenn Sie ihn erneut öffnen, wird er als völlig neuer Puffer behandelt und der Dateiname in Großbuchstaben aus dem Dateisystem verwendet.

Eine alternative Problemumgehung

Beachten Sie, dass :bwipeouthat einige andere Effekte . Wenn dies ein Problem darstellt, können Sie stattdessen die von Antony in den Kommentaren vorgeschlagene Problemumgehung verwenden , mit der Vim die Datei mit dem Dateinamen in Kleinbuchstaben öffnen und den Puffer dann umbenennen kann, um den Namen in Großbuchstaben mit dem Namen abzugleichen :file {name}Befehl:

:f %

0

Schließen Sie vim vollständig und öffnen Sie die Datei manuell (dh :edit FileName.extanstelle von :MRU), um sicherzustellen, dass der Pfad keine falsch umhüllten Namen enthält.

Ich habe gerade ein ähnliches Problem gelöst, bei dem mein Dateiname in vim in Kleinbuchstaben geschrieben war, der tatsächliche Pfad jedoch in Großbuchstaben geschrieben war und Fugitive die Datei in Kleinbuchstaben aus irgendeinem Grund nicht finden konnte. Es schien zu bestehen, selbst nachdem ich vim neu gestartet und die Datei geöffnet hatte.

Das Problem war tatsächlich, dass das von mir verwendete MRU-Plugin (CtrlP) es geschafft hatte, den Dateinamen in Kleinbuchstaben zu speichern. Nach dem Neustart von vim verwendete ich bei der manuellen Eingabe :e UpperCaseFileName.typeden richtigen Pfad, anstatt die MRU-Datei über ein Plugin zu durchsuchen .


Ich verwende kein MRU-Plugin. Es scheint, dass es sich um ein internes Pufferproblem handelt.
Herb Wolfe

Es ist das gleiche Problem, Sie haben die Datei geöffnet lowercase.cppund möchten sie öffnen LowerCase.cpp. Es ist wahrscheinlich ein Fehler, aber es ist die gleiche Lösung.
TankorSmash
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.