Existe-t-il un moyen de renommer un fichier ouvert dans Emacs? Pendant que je le regarde? Quelque chose comme enregistrer sous, mais l'original devrait disparaître.
237
Essayez cette fonction du .emacs de Steve Yegge :
;; source: http://steve.yegge.googlepages.com/my-dot-emacs-file (defun rename-file-and-buffer (nouveau-nom) "Renomme à la fois le tampon actuel et le fichier visité par NEW-NAME." (interactif "sNouveau nom:") (let ((nom (nom-tampon)) (nom de fichier (nom-fichier-tampon))) (si (pas le nom de fichier) (message "Le tampon '% s' ne visite pas un fichier!" nom) (if (get-buffer new-name) (message "Un tampon nommé '% s' existe déjà!" nouveau-nom) (progn (rename-file nom de fichier nouveau-nom 1) (nouveau nom du tampon de renommage) (nom-de-fichier-ensemble-nouveau-nom) (set-buffer-modified-p nil))))))
Jetez un oeil à cette page, il y a une autre fonction connexe vraiment utile, appelée "move-buffer-file".
(setq uniquify-buffer-name-style 'forward)
sens si vous avez un tampon nomméusers\index.html
(car vous avez déjà un autre tampon pourposts\index.html
) le changement de nom échouera(set-buffer-modified-p nil)
semble inutile. Si vous avez appelérename-file-and-buffer
un tampon modifié puis tenté de le tuer, il le ferait avec plaisir sans vous avertir des modifications non enregistrées.Oui, avec le
dired
mode, vous pouvez:C-x d
ouvrir diredRET
pour sélectionner le répertoire du fichier actuelC-x C-j
(dired-jump
au nom du fichier actuel, en Dired)R
pour renommer le fichier (oudired-do-rename
).q
pour revenir au tampon de fichiers (renommé)Le renommage équivaut à un shell
mv
, mais il mettra également à jour tous les tampons ouverts, et contrairement àmv
cela, il ne changera pas les accès et les heures de modification du fichier dans le système de fichiers.la source
C-x C-j
n'est pas lié par défaut pour moi. Faire d'M-x load-library RET dired-x RET
abord le rend lié.C-x C-j
non lié est de le faireM-x dired-jump
la première fois. Il se chargera automatiquementdired-x
(ce qui entraînera égalementC-x C-j
sa définition à partir de ce moment).Juste pour être complet, puisque certaines personnes peuvent visiter cette page en pensant qu'elles obtiendront une réponse pour la fonction "enregistrer sous" d'Emacs, c'est Cx Cw pour un fichier ouvert.
la source
File > Save as...
Mon préféré est celui de Magnars (of emacs rocks screencasts fame.)
Contrairement aux autres alternatives, vous n'avez pas à taper le nom à partir de zéro - vous obtenez le nom actuel à modifier.
Merci à James Yang pour une version correcte.
la source
Voici une version plus robuste adaptée de stevey.
la source
Voici une autre version, assez robuste et compatible VC:
Vous pouvez en lire plus ici .
la source
Si vous utilisez Spacemacs, vous obtenez ce comportement gratuitement car il est livré avec une implémentation de
rename-current-buffer-file
(basée sur magnars) qui, par défaut, est liée àSPC-f-R
.https://github.com/syl20bnr/spacemacs/blob/bd7ef98e4c35fd87538dd2a81356cc83f5fd02f3/layers/%2Bdistributions/spacemacs-base/funcs.el#L294
la source
Il existe un moyen très simple, vous appuyez sur la commande Mx et tapez vc-rename-file , après cela il vous suffit de sélectionner votre fichier actuel dans le répertoire, puis de choisir le nouveau nom. Le buff contenant le fichier modifié sera actualisé.
Source: https://www.gnu.org/software/emacs/manual/html_node/emacs/VC-Delete_002fRename.html
la source
basé sur la version de magnars, j'ai modifié comme ci-dessous, corrigé la partie du nom de fichier INIT:
la source
Il peut être réalisé par copie. shift + c sur le fichier et emacs vous demandera d'indiquer un nom pour le chemin d'accès, y compris le nom du fichier, vous devez donc simplement fournir le nouveau nom et entrer ... bien sûr, vous devez supprimer l'ancien.
la source