Windowsでの大文字と小文字を区別しないファイル名の扱い


8

私は最新のvim / gvim(8.0.118)を使用していますが、他のバージョンで過去にこの問題に気づきました。

fizzbuzz.java(gvimの外で)という名前のファイルを作成し、ファイルマネージャーのコンテキストメニューを使用して、Windows 7 PCの職場でgvimの新しいタブで開きました。タブを閉じた後、を使用して:x、自分が作成しFizzBuzz.javaたクラスの名前と一致するようにファイルの名前をに変更する必要があることを発見しました。これは、gvimの外部で行いました。

ただし、gvimの同じインスタンスで再度開くと、ファイルマネージャーのコンテキストメニューを再び使用すると、元のケーシングに戻り、で閉じると:x、そのように保存されるので、ファイルの名前をもう一度変更します。バッファを削除し、メニューのバッファリストを更新した後でないと、gvimでファイル名の新しい大文字と小文字を正しく認識できませんでした。

これはLinux(PCLinuxOS)上のgvim 7.4では発生しません

Windowsでgvimを再起動せずにgvimに認識させ、ファイル名の大文字と小文字の変更を保持する簡単な方法はありますか?


1
問題を再現できませんが、言葉遣いが正確ではないため、何か見落としている可能性がありI created a file named fizzbuzz.javaます。エクスプローラーで手動で作成したか、使用しました:e fizzbuzz.javaか?After closing the fileあなたはバッファfizzbuzz.javaを閉じることを意味し:bdますか?I had to rename it to FizzBuzz.javaエクスプローラではなく、:saveasit reverts to the original casing, and saves it as such元の名前でどこに表示されますか?so that I had to rename the file againもう一度、どのように名前を変更しましたか?refreshing the buffer list in the menuどのメニュー?
statox

質問を更新して、質問に対する回答を追加しました。gvim外でファイルを作成し、名前を変更しました。ファイルマネージャーを使用してgvimでファイルを再度開くと、元のケーシングがステータスバーに表示されます。
ハーブウルフ

編集ありがとうございます。あなたのワークフローに従っても、私はまだこの問題を再現できません。ファイル名は完全にOSによって処理されるため、これは奇妙な動作だと思います...誰かがあなたを助けることができることを願っています:)
statox

2
ええ、vimはバッファを記憶しているため、元の名前を再利用しているようです。回避策として、を試してください:f %
アントニー

@Antony回答として追加したい場合は受け付けます。
Herb Wolfe

回答:


1

なぜこれが起こるのか

でファイルを:x閉じると、バッファが保存され、ウィンドウ/タブが閉じますが、Vimはファイルを忘れませ。実行:ls後にコマンドを実行すると、バッファーがまだ残っていることがわかります。

その後、あなたはときに、ファイルを再度開いて、Vimは(ファイルシステムはケース・保存が、大文字と小文字を区別しないで、ので、それはすでに「同じ」ファイル名でバッファを持っていることに気づくだろうfizzbuzz.javaFizzBuzz.java、ファイルのアイデンティティに関して等価です)、そして、小文字のファイル名でバッファを再利用します。

ソリューション

これを防ぐには、単にウィンドウを閉じるのではなく、:bwipeoutコマンドを使用してバッファを完全に破棄するようにVimに指示する必要があります。これにより、Vimからバッファーが完全に削除されます。そのため、バッファーを再度開くと、完全に新しいバッファーとして扱われ、ファイルシステムの大文字のファイル名が使用されます。

代替の回避策

他に:bwipeoutいくつかの影響あることに注意してください。これらが問題である場合は、代わりにコメントAntonyによって提案された回避策を使用できます。これにより、Vimは小文字のファイル名を使用してファイルを開くことができますが、大文字の名前と一致するようにバッファーの名前を変更します:file {name}コマンド:

:f %

0

vimを完全に閉じ、ファイルを手動で(つまりの:edit FileName.ext代わりに:MRU)再度開き、パスに大文字と小文字の区別がないことを確認します。

vimでのファイル名が小文字である同様の問題を解決しましたが、実際のパスは大文字であり、Fugitiveは何らかの理由で小文字のファイルを見つけることができませんでした。vimを再起動してファイルを開いた後も、この状態が続くようです。

問題は、私が使用していたMRUプラグイン(CtrlP)が小文字のファイル名を格納することに成功したため、vimを再起動した後、手動でを入力したときに:e UpperCaseFileName.type、プラグイン経由でMRUファイルを経由する代わりに、正しいパスを使用しました。


MRUプラグインを使用していません。内部バッファの問題のようです。
ハーブウルフ

同じ問題です。ファイルをで開いておりlowercase.cpp、を開きたいのですLowerCase.cpp。おそらくバグですが、同じ解決策です。
TankorSmash
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.