Saya menggunakan vim / gvim terbaru (8.0.118), tetapi telah memperhatikan masalah ini di masa lalu, dengan versi lain.
Saya membuat file bernama fizzbuzz.java
(di luar gvim), dan membukanya di tab baru di gvim pada PC Windows 7 saya di tempat kerja, menggunakan menu konteks manajer file saya. Setelah menutup tab, menggunakan :x
, saya menemukan bahwa saya harus mengubah nama file FizzBuzz.java
, agar sesuai dengan nama kelas yang saya tulis, yang saya lakukan di luar gvim.
Namun, ketika saya pergi untuk membukanya kembali dalam contoh gvim yang sama, sekali lagi menggunakan menu konteks dari manajer file saya, itu kembali ke casing asli, dan ketika saya menutupnya :x
, menyimpannya seperti itu, sehingga saya harus ganti nama file lagi. Hanya setelah menghapus buffer, dan me-refresh daftar buffer dalam menu, saya bisa membuat gvim mengenali casing nama file dengan benar.
Ini tidak terjadi di gvim 7.4 di Linux (PCLinuxOS)
Apakah ada cara yang lebih mudah untuk membuat gvim mengenali, dan mempertahankan perubahan dalam casing nama file di Windows, tanpa memulai ulang gvim?
sumber
I created a file named fizzbuzz.java
Anda membuatnya secara manual di penjelajah atau digunakan:e fizzbuzz.java
?After closing the file
maksud Anda menutup bufferfizzbuzz.java
dengan:bd
?I had to rename it to FizzBuzz.java
di penjelajah Anda, bukan dengan:saveas
?it reverts to the original casing, and saves it as such
di mana Anda melihatnya dengan nama aslinya?so that I had to rename the file again
lagi bagaimana Anda menamainya kembali?refreshing the buffer list in the menu
menu yang mana?:f %
.Jawaban:
Kenapa ini terjadi?
Ketika Anda menutup file
:x
, itu menyimpan buffer dan menutup jendela / tab, tetapi Vim tidak melupakan file. Jika Anda menjalankan:ls
perintah setelah melakukannya, Anda akan melihat buffer masih ada.Kemudian, ketika Anda membuka kembali file tersebut, Vim akan melihat bahwa file tersebut sudah memiliki buffer dengan nama file yang "sama" (karena sistem file Anda mempertahankan kasus tetapi tidak peka terhadap huruf besar-kecil,
fizzbuzz.java
danFizzBuzz.java
setara dengan yang berkaitan dengan identitas file), dan menggunakan kembali buffer, dengan nama file huruf kecil.Solusinya
Untuk mencegah hal ini, alih-alih hanya menutup jendela, Anda perlu memberitahu Vim untuk membuang buffer sepenuhnya, dengan menggunakan
:bwipeout
perintah. Ini sepenuhnya menghapus buffer dari Vim, dan ketika Anda membukanya kembali, itu memperlakukannya sebagai buffer yang sama sekali baru, dan menggunakan nama file huruf besar dari sistem file.Solusi alternatif
Catatan yang
:bwipeout
memiliki beberapa efek lainnya . Jika ini adalah masalah, Anda bisa menggunakan penyelesaian yang disarankan oleh Antony di komentar , yaitu untuk memungkinkan Vim membuka file menggunakan nama file huruf kecil, tetapi kemudian ganti nama buffer untuk mencocokkan nama huruf besar dengan nama:file {name}
perintah:sumber
Tutup vim sepenuhnya, dan buka kembali file secara manual (misal
:edit FileName.ext
alih-alih:MRU
), memastikan tidak ada nama yang buruk dalam path.Saya baru saja memecahkan masalah yang sama di mana nama file saya di vim adalah huruf kecil, tetapi jalur sebenarnya adalah huruf besar, dan Buronan tidak dapat menemukan file yang lebih kecil untuk alasan apa pun. Tampaknya tetap bertahan bahkan setelah saya meluncurkan kembali vim dan membuka file.
Masalahnya sebenarnya adalah bahwa plugin MRU yang saya gunakan (CtrlP) telah berhasil menyimpan nama file huruf kecil, jadi setelah memulai ulang vim, ketika saya mengetik secara manual
:e UpperCaseFileName.type
, alih-alih melalui file MRU melalui plugin, ia menggunakan jalur yang benar.sumber
lowercase.cpp
dan ingin membukaLowerCase.cpp
. Ini mungkin bug tetapi solusi yang sama.