¿Es posible cambiar el nombre del archivo que estoy editando desde Vim? Actualmente lo que hago es salir de Vim, cambiar el nombre del archivo y abrirlo desde Vim nuevamente.
¿Es posible cambiar el nombre del archivo que estoy editando desde Vim? Actualmente lo que hago es salir de Vim, cambiar el nombre del archivo y abrirlo desde Vim nuevamente.
Respuestas:
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'.
:saveas
guarda su nuevo archivo y lo abre en un nuevo búfer. Pero no elimina el archivo anterior.
Yo uso tpope / vim-eneuch para los :Move
archivos.
: Mover: cambie el nombre de un búfer y el archivo en el disco simultáneamente.
:w
o :saveas
es que perderá el permiso de ejecución si estaba editando un script. netrw
Renombrar mantendrá los permisos.
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
:edit %:p:h
también parece funcionar.
:E
también abrirá netrw
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 .vimrc
archivo 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>
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.