¿Cómo puedo cambiar el nombre del archivo que estoy editando?


Respuestas:


35

Puede guardar el archivo con un nombre diferente usando :w. Pero esta operación no eliminará el archivo antiguo y el archivo 'antiguo' permanece en su búfer, por lo que cualquier cambio se aplicará a su archivo 'antiguo'.

:saveasguarda su nuevo archivo y lo abre en un nuevo búfer. Pero no elimina el archivo anterior.

Yo uso tpope / vim-eneuch para los :Movearchivos.

: Mover: cambie el nombre de un búfer y el archivo en el disco simultáneamente.


Una desventaja de :wo :saveases que perderá el permiso de ejecución si estaba editando un script. netrwRenombrar mantendrá los permisos.
wisbucky

11

Puede ir a Netrw y cambiar el nombre del archivo allí.

Si el archivo que está editando está en el directorio actual, haga lo siguiente:

:edit .

Navegue hasta el archivo, presione Ry cambie el nombre. Presione Enterpara editar el archivo.

Sin embargo, hay una advertencia: el búfer original permanece en la lista de búferes. Si lo cambias, está vacío.

Si el archivo que está editando está en un directorio diferente, puede cambiar al directorio del archivo con:

:cd %:p:h

Si no desea cambiar el directorio para toda la sesión de Vim, sino solo para el búfer actual, puede hacer lo siguiente:

:lcd %:p:h

2
Escribir directamente :edit %:p:htambién parece funcionar.
Mladen Jablanović

:Etambién abrirá netrw
wisbucky

6

He estado usando el complemento Rename2 para esto durante años. Cambia el nombre del búfer actual y el archivo en el disco:

:Rename {newname}

EDITAR: Encontré esto un .vimrcarchivo en 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

La mejor manera es usar :Move, como dijo OrangTux. Para completar, también puede ejecutar comandos de terminal en editores vi usando bang ( !) en modo comando.

:!mv {current_file} {new_name}
:e {new_name}

Sin embargo, este método no elimina el búfer antiguo de su lista de búferes.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.