É possível renomear o arquivo que estou editando no Vim? Atualmente, o que faço é sair do Vim, renomear o arquivo e abrir a partir do Vim novamente.
É possível renomear o arquivo que estou editando no Vim? Atualmente, o que faço é sair do Vim, renomear o arquivo e abrir a partir do Vim novamente.
Respostas:
Você pode salvar o arquivo com um nome diferente usando :w
. Mas essa operação não removerá o arquivo antigo e o arquivo 'antigo' permanecerá no seu buffer, portanto, quaisquer alterações serão aplicadas ao seu arquivo 'antigo'.
:saveas
salva seu novo arquivo e o abre em um novo buffer. Mas não exclui o arquivo antigo.
Eu uso o tpope / vim-eneuch nos :Move
arquivos.
: Mover: renomeie um buffer e o arquivo no disco simultaneamente.
:w
ou :saveas
é que ela perderá a permissão de execução se você estiver editando um script. netrw
Renomear manterá as permissões.
Você pode ir para o Netrw e renomear o arquivo lá.
Se o arquivo que você está editando estiver no diretório atual, faça:
:edit .
Navegue até o arquivo, pressione Re altere o nome. Pressione Enterpara editar o arquivo.
Há uma ressalva: o buffer original permanece na lista de buffers. Se você mudar para ele, está vazio.
Se o arquivo que você está editando estiver em um diretório diferente, você poderá mudar para o diretório do arquivo com:
:cd %:p:h
Se você não quiser alterar o diretório para toda a sessão do Vim, mas apenas para o buffer atual, poderá fazer:
:lcd %:p:h
:edit %:p:h
também parece funcionar.
:E
também abrirá netrw
Estou usando o plug-in Rename2 há anos. Renomeia o buffer atual e o arquivo no disco:
:Rename {newname}
EDIT: Encontrei este .vimrc
arquivo no github :
function! RenameFile()
let old_name = expand('%')
let new_name = input('New file name: ', expand('%'), 'file')
if new_name != '' && new_name != old_name
exec ':saveas ' . new_name
exec ':silent !rm ' . old_name
redraw!
endif
endfunction
map <leader>n :call RenameFile()<cr>
A melhor maneira é usar :Move
, como disse o OrangTux. Para completar, você também pode executar comandos de terminal nos editores do vi usando um bang ( !
) no modo de comando.
:!mv {current_file} {new_name}
:e {new_name}
No entanto, esse método não remove o buffer antigo da sua lista de buffers.