Corto, seguro, sin complemento:
:sav new_name
:!rm <C-R># // or !del <C-R># for windows
control+ R, #se expandirá instantáneamente a un archivo alternativo (ruta previamente editada en la ventana actual) antes de presionar Enter. Eso nos permite revisar qué es exactamente lo que vamos a eliminar. El uso de tubería |
en tal caso no es seguro, ya que si sav
falla por algún motivo, #
todavía apuntará a otro lugar (o nada). Eso significa !rm #
o delete(expand(#))
puede eliminar un archivo completamente diferente! Hágalo a mano con cuidado o use un buen script (se mencionan en muchas respuestas aquí).
Educativo
... o intente construir una función / comando / script usted mismo. Comience desde algo simple como:
command! -nargs=1 Rename saveas <args> | call delete(expand('#')) | bd #
después de recargar vimrc, simplemente escriba :Rename new_filename
. ¿Cuál es el problema con este comando?
Prueba de seguridad 1: ¿Qué hace :Rename
sin argumento?
Sí, elimina el archivo oculto en '#'.
Solución: puede usar, por ejemplo. condiciones o try
declaraciones como esa:
command! -nargs=1 Rename try | saveas <args> | call delete(expand('#')) | bd # | endtry
Prueba de seguridad 1:
:Rename
(sin argumento) arrojará un error:
E471: Argumento requerido
Prueba de seguridad 2:
¿Qué pasa si el nombre será el mismo que el anterior?
Prueba de seguridad 3:
¿Qué sucede si el archivo estará en una ubicación diferente a la real?
Arreglalo tu mismo. Para facilitar la lectura, puede escribirlo de esta manera:
function! s:localscript_name(name):
try
execute 'saveas ' . a:name
...
endtry
endfunction
command! -nargs=1 Rename call s:localscript_name(<f-args>)
notas
!rm #
es mejor que !rm old_name
-> no necesitas recordar el nombre antiguo
!rm <C-R>#
es mejor que !rm #
cuando lo haces a mano -> verás lo que realmente eliminas (razón de seguridad)
!rm
generalmente no es muy seguro ... mv
a una ubicación de basura es mejor
call delete(expand('#'))
es mejor que el comando shell (independiente del sistema operativo) pero más largo de escribir e imposible de usar control+R
try | code1 | code2 | tryend
-> cuando se produce un error mientras código1, no ejecute código2
:sav
(o :saveas
) es equivalente a :f new_name | w
- ver archivo_f - y conserva el historial de deshacer
expand('%:p')
da la ruta completa de su ubicación ( %
) o la ubicación del archivo alternativo ( #
)