Meus arquivos têm nomes de arquivos longos e uma parte do nome do arquivo é uma data e um número de versão. Muitas vezes, eu gostaria de salvar o arquivo no buffer usando quase o mesmo nome, basta alterar o número da versão ou a data.
Isso seria muito mais fácil, se eu tivesse um comando que coloque o nome do arquivo do buffer atual no anel de interrupção, para que eu possa abrir um arquivo, digite C-x C-w
(gravar arquivo), puxe o nome atual com Cy, altere-o e salve isto.
Estou usando o Emacs 24.3 no Windows e 24.4 no Linux. Eu tenho que usar nomes de arquivos diferentes e não git por várias razões. Ficaria feliz se este comando funcionasse com o AUCTeX / LaTeX como modo principal.
Editar 1:
Cometi um erro: não quero digitar C-x C-f
(= localizar arquivo), mas C-x C-w
(= escrever arquivo). Eu corrigi isso acima.
Edição 2:
Encontrou uma pergunta e resposta duplicadas: /unix//a/45381 Mas não há resposta melhor!
Edição 3:
Aqui: http://www.gnu.org/software/emacs/manual/html_node/elisp/File-Name-Components.html é uma função que seleciona a parte "não-diretório" do nome do arquivo:
Função: nome-do-arquivo-nome-do-subdiretório nome-do-arquivo
This function returns the nondirectory part of filename. (file-name-nondirectory "lewis/foo") ⇒ "foo" (file-name-nondirectory "foo") ⇒ "foo" (file-name-nondirectory "lewis/") ⇒ ""
Se eu soubesse cigano ...
Respostas:
Não há necessidade de fazer tudo isso.
Simplesmente:
C-x C-w
. Você será solicitado a fornecer um novo nome de arquivo.M-n
e o nome do arquivo atual será inserido para você.RET
para salvar o arquivo com esse novo nome.Você ainda terá o arquivo original. Se você quiser voltar, basta visitá-lo novamente com
C-x C-f
.fonte
ido
, façaC-f
primeiro e depoisM-n
.Copiando o nome do arquivo no buffer atual
Aqui está uma função que eu uso no blog de Cameron Desautels que copia o nome do arquivo de buffer atual e o exibe em minibuffer.
Renomeando o nome do arquivo no buffer atual
Magnar Sveen implementou a função abaixo em um de seus blogs que renomeia convenientemente o buffer atual de uma só vez. Não foi o que você pediu, mas achei que poderia estar relacionado ao seu caso de uso.
fonte
(buffer-file-name)
para(file-name-nondirectory (buffer-file-name))
na primeira função para obter o nome do arquivo sans directory.