Como posso renomear o arquivo que estou editando?


Respostas:


35

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'.

:saveassalva seu novo arquivo e o abre em um novo buffer. Mas não exclui o arquivo antigo.

Eu uso o tpope / vim-eneuch nos :Movearquivos.

: Mover: renomeie um buffer e o arquivo no disco simultaneamente.


Uma desvantagem :wou :saveasé que ela perderá a permissão de execução se você estiver editando um script. netrwRenomear manterá as permissões.
wisbucky 12/09

11

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

2
Digitar direto :edit %:p:htambém parece funcionar.
Mladen Jablanović

:Etambém abrirá netrw
wisbucky 12/09

6

Estou usando o plug-in Rename2 há anos. Renomeia o buffer atual e o arquivo no disco:

:Rename {newname}

EDIT: Encontrei este .vimrcarquivo 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>

3

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.