Existe uma maneira de renomear um arquivo aberto no Emacs? Enquanto eu estou vendo? Algo como salvar como, mas o original deve desaparecer.
237
Tente esta função no arquivo .emacs de Steve Yegge :
;; fonte: http://steve.yegge.googlepages.com/my-dot-emacs-file (renomear arquivo-renomear-e-buffer (novo nome) "Renomeia o buffer atual e o arquivo que está visitando para NEW-NAME." (interativo "sNew name:") (let ((nome (nome do buffer))) (nome do arquivo (nome do arquivo-buffer))) (se (não o nome do arquivo) (mensagem "Buffer '% s' não está visitando um arquivo!" nome) (if (get-buffer new-name) (mensagem "Um buffer denominado '% s' já existe!" new-name) (progn (renomeie o arquivo nome do arquivo novo nome 1) (renomear-buffer novo nome) (nome do arquivo visitado-conjunto nome-novo) (conjunto-tampão-modificado-p nil))))))
Dê uma olhada nessa página, há outra função relacionada realmente útil, chamada "move-buffer-file".
(setq uniquify-buffer-name-style 'forward)
significado se você tiver um buffer nomeadousers\index.html
(porque você já possui outro buffer paraposts\index.html
) a renomeação falhará(set-buffer-modified-p nil)
parece desnecessário. Se você chamasserename-file-and-buffer
um buffer modificado e tentasse matá-lo, ele o faria feliz sem avisar sobre alterações não salvas.Sim, com o
dired
modo, você pode:C-x d
abrir diredRET
para selecionar o diretório do arquivo atualC-x C-j
(dired-jump
para o nome do arquivo atual, em Dired)R
renomear o arquivo (oudired-do-rename
).q
para voltar ao buffer de arquivo (renomeado)A renomeação é equivalente a um shell
mv
, mas também atualiza os buffers abertos e, ao contráriomv
, não altera os tempos de acesso e modificação no arquivo no sistema de arquivos.fonte
C-x C-j
não está vinculado por padrão para mim. FazerM-x load-library RET dired-x RET
primeiro o torna vinculado.C-x C-j
não estiver ligada, é apenas fazerM-x dired-jump
na primeira vez. Ele será carregado automaticamentedired-x
(o que também faráC-x C-j
com que seja definido a partir deste ponto).Apenas para completar, já que algumas pessoas podem visitar esta página pensando que receberão uma resposta para o recurso "salvar como" do Emacs, que é o Cx Cw para um arquivo aberto.
fonte
File > Save as...
O meu favorito é o de Magnars (da fama dos screencasts de rochas do emacs ).
Ao contrário das outras alternativas, você não precisa digitar o nome do zero - é necessário modificar o nome atual.
Obrigado a James Yang pela versão correta.
fonte
Aqui está uma versão mais robusta adaptada de stevey.
fonte
Aqui está outra versão, bastante robusta e com conhecimento de VC:
Você pode ler mais sobre isso aqui .
fonte
Se você estiver usando o Spacemacs , obterá esse comportamento gratuitamente, pois ele vem com uma implementação
rename-current-buffer-file
(baseada em magnares) à qual, por padrão, está vinculadaSPC-f-R
.https://github.com/syl20bnr/spacemacs/blob/bd7ef98e4c35fd87538dd2a81356cc83f5fd02f3/layers/%2Bdistributions/spacemacs-base/funcs.el#L294
fonte
Existe uma maneira muito fácil: você pressiona o comando Mx e , em seguida, digite vc-rename-file , depois basta selecionar o arquivo atual no diretório e escolher o novo nome. O buff que possui o arquivo alterado será atualizado.
Fonte: https://www.gnu.org/software/emacs/manual/html_node/emacs/VC-Delete_002fRename.html
fonte
com base na versão magnars, modifiquei como abaixo, corrigi a parte do nome do arquivo INIT:
fonte
Pode ser conseguido por cópia. shift + c no arquivo e o emacs solicitará que você indique um nome para o caminho, incluindo o nome do arquivo, para que você apenas forneça o novo nome e insira ... é claro, você deve excluir o antigo.
fonte