J'utilise la dernière version de vim / gvim (8.0.118), mais j'ai remarqué ce problème dans le passé, avec d'autres versions.
J'ai créé un fichier nommé fizzbuzz.java
(en dehors de gvim) et l' ai ouvert dans un nouvel onglet dans gvim sur mon PC Windows 7 au travail, en utilisant le menu contextuel de mon gestionnaire de fichiers. Après avoir fermé l'onglet, en utilisant :x
, j'ai découvert que je devais renommer le fichier FizzBuzz.java
pour correspondre au nom de la classe que j'ai écrite, ce que j'ai fait en dehors de gvim.
Cependant, lorsque je suis allé le rouvrir dans la même instance de gvim, en utilisant à nouveau le menu contextuel de mon gestionnaire de fichiers, il revient à la casse d'origine, et quand je le ferme avec :x
, il l'enregistre comme tel, de sorte que j'ai dû renommer à nouveau le fichier. Ce n'est qu'après avoir supprimé le tampon et actualisé la liste des tampons dans le menu que j'ai pu obtenir que gvim reconnaisse correctement le nouveau boîtier du nom de fichier.
Cela ne se produit pas dans gvim 7.4 sous Linux (PCLinuxOS)
Existe-t-il un moyen plus simple pour que gvim reconnaisse et conserve le changement de casse d'un nom de fichier sous Windows, sans redémarrer gvim?
la source
I created a file named fizzbuzz.java
vous l'avez créé manuellement dans votre explorateur ou utilisé:e fizzbuzz.java
?After closing the file
voulez-vous dire la fermeture du tamponfizzbuzz.java
avec:bd
?I had to rename it to FizzBuzz.java
dans votre explorateur, pas avec:saveas
?it reverts to the original casing, and saves it as such
où le voyez-vous avec le nom d'origine?so that I had to rename the file again
encore comment l'avez-vous renommé?refreshing the buffer list in the menu
quel menu?:f %
.Réponses:
Pourquoi cela se produit
Lorsque vous fermez le fichier avec
:x
, il enregistre le tampon et ferme la fenêtre / l'onglet, mais Vim n'oublie pas le fichier. Si vous exécutez la:ls
commande après l'avoir fait, vous verrez que le tampon est toujours là.Ensuite, lorsque vous rouvrez le fichier, Vim remarquera qu'il a déjà un tampon avec le "même" nom de fichier (car votre système de fichiers respecte la casse
fizzbuzz.java
maisFizzBuzz.java
ne respecte pas la casse et est équivalent en ce qui concerne l'identité du fichier), et réutiliser le tampon, avec le nom de fichier en minuscule.La solution
Pour éviter cela, au lieu de simplement fermer la fenêtre, vous devez dire à Vim de supprimer complètement le tampon, en utilisant la
:bwipeout
commande. Cela supprime complètement le tampon de Vim, et donc lorsque vous le rouvrez, il le traite comme un tout nouveau tampon et utilise le nom de fichier en majuscule du système de fichiers.Une solution alternative
Notez que cela
:bwipeout
a d' autres effets . S'il s'agit d'un problème, vous pouvez utiliser à la place la solution de contournement suggérée par Antony dans les commentaires , qui est d'autoriser Vim à ouvrir le fichier en utilisant le nom de fichier en minuscule, puis de renommer le tampon pour faire correspondre le nom en majuscule avec le:file {name}
commander:la source
Fermez complètement vim et rouvrez le fichier manuellement (c'est-
:edit FileName.ext
à- dire au lieu de:MRU
), en vous assurant qu'il n'y a pas de noms mal placés dans le chemin.Je viens de résoudre un problème similaire où mon nom de fichier dans vim était en minuscule, mais le chemin réel était en majuscule et Fugitive n'a pas pu trouver le fichier en minuscule pour une raison quelconque. Il semblait persister même après avoir relancé vim et ouvert le fichier.
Le problème était en fait que le plug-in MRU que j'utilisais (CtrlP) avait réussi à stocker le nom de fichier en minuscules, donc après avoir redémarré vim, lorsque j'ai tapé manuellement
:e UpperCaseFileName.type
, au lieu de parcourir le fichier MRU via un plug-in, il a utilisé le chemin correct.la source
lowercase.cpp
et souhaitez l'ouvrirLowerCase.cpp
. C'est probablement un bug mais c'est la même solution.