¿Cómo debo cambiar el nombre de mi archivo actual en Vim?
Por ejemplo:
- Estoy editando
person.html_erb_spec.rb
- Me gustaría cambiarle el nombre a
person.haml_spec.rb
- Me gustaría continuar editando
person.haml_spec.rb
¿Cómo haría para hacer esto, elegantemente?
Program Files (x86)
. Cada vez que se necesita trabajar con este directorio, se debe incluir entre comillas. Lo cual es mucho.Se llama al comando
:saveas
, pero desafortunadamente no eliminará su archivo anterior, tendrá que hacerlo manualmente. ver:help saveas
para más información.EDITAR:
La mayoría de las instalaciones de vim tienen un explorador de archivos integrado, que puede usar para tales operaciones. Intente
:Explore
en modo comando (en realidad lo asignaría a una tecla de función, es muy útil). Puede cambiar el nombre de los archivosR
o eliminarlos conD
, por ejemplo. Pero presionar<F1>
el explorador le dará una mejor visión general.fuente
Si usa git y ya tiene el complemento tpope fugitive.vim , simplemente:
Esta voluntad:
Si su archivo aún no se agregó a un repositorio de git, primero agréguelo:
fuente
:Gmove
requiere la ruta relativa para el nuevo nombre de archivo. Una buena manera de hacerlo es escribir lo:Gmove <ctrl-r>%
que agrega la ruta / nombre de archivo actual.Lo estoy haciendo con el complemento NERDTree:
entonces presione m
Para cambiar el nombre, puede elegir
(m)ove the current node
y cambiar el nombre del archivo. También hay opciones como eliminar, copiar, mover, etc.fuente
:w newname
- para crear una copia.:e#
.:!rm oldname
.En Windows, el tercer paso opcional cambia un poco:
:!del oldname
.fuente
:f newname
2) guardarlo:w
3) (opcionalmente)!rm oldname
. La ventaja es que se conserva su historial de deshacer.:saveas
es mejor en ese sentido, @rampion, y hace lo que escribió @kynan.Si el archivo ya está guardado:
Ejemplo:
Requisitos de permiso:
Guardar como:
Para Windows sin verificar
fuente
Lo recomendaría
:Rename
del eunuco de tpope para esto.También incluye un montón de otros comandos útiles.
El comando Renombrar se define de la siguiente manera actualmente (consulte el repositorio para ver si hay actualizaciones):
fuente
También puedes hacerlo usando netrw
El comando explorar abre netrw en el directorio del archivo abierto
Mueva el cursor sobre el archivo que desea renombrar:
Escriba el nuevo nombre, presione enter, presione y.
fuente
Corto, seguro, sin complemento:
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 sisav
falla por algún motivo,#
todavía apuntará a otro lugar (o nada). Eso significa!rm #
odelete(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:
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:Prueba de seguridad 1:
:Rename
(sin argumento) arrojará un error: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:
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 mejorcall delete(expand('#'))
es mejor que el comando shell (independiente del sistema operativo) pero más largo de escribir e imposible de usar control+Rtry | 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 deshacerexpand('%:p')
da la ruta completa de su ubicación (%
) o la ubicación del archivo alternativo (#
)fuente
fuente
call delete(expand('#'))
Hay una función en .vimrc de Gary Bernhardt que maneja esto.
fuente
El registro
%
contiene el nombre del archivo actual.'%:h'
muestra el directorio 'head' que contiene el archivo actual, por ejemplo:%:h
devuelve/abc/def
cuando la ruta completa de su archivo esabc/dev/my.txt
fuente
¿Qué tal esto (mejorado por la sugerencia de Jake):
fuente
:exe "!mv % newfilename" | e newfilename
Vim tiene una
rename
función, pero desafortunadamente no retiene el historial.La forma agnóstica más fácil del sistema operativo para cambiar el nombre de un archivo sin perder el historial sería:
expand('#:p')
devuelve la ruta completa del archivo anterior.Úselo
:bd #
si también desea eliminar el archivo anterior de la lista de búfer.O crea un complemento
Si desea utilizar un comando rápido para cambiar el nombre del archivo, agregue un nuevo archivo en ~ / .vim / plugin con el siguiente contenido:
El comando
Rename
lo ayudará a cambiar rápidamente el nombre de un archivo.fuente
Hay un complemento visualmente más grande llamado vim-eunuch por Tim Pope que incluye una función de cambio de nombre, así como algunas otras ventajas (eliminar, buscar, guardar todo, chmod, sudo edit, ...).
Para cambiar el nombre de un archivo en vim-eunuch:
:Move filename.ext
En comparación con rename.vim:
:rename[!] filename.ext
Guarda algunas teclas :)
fuente
Para cambiar el nombre del archivo existente sin usar complementos, debe usar el comando
Este comando le permite explorar archivos en el directorio, eliminarlos o cambiarles el nombre. de lo que debe navegar al archivo necesario en el explorador que escribir el
R
comando que le permitirá cambiar el nombre del archivofuente
No sé si este es el método "más fácil", pero suponiendo que ya haya guardado su archivo (: w) invocaría el shell (: sh) y haría un simple cp foo foo.bak Para volver al editor use Ctrl-D / Salir. Lista útil de comandos del editor vi en este enlace
fuente
También puede usar: f seguido de: w
fuente
Este pequeño script no es perfecto (el retorno de carro adicional que tienes que presionar) pero hace el trabajo.
fuente
Otra forma es usar netrw, que es una parte nativa de vim.
Luego hay opciones para eliminar, renombrar, etc.
Aquí hay un mapa de teclas para abrir netrw en la carpeta del archivo que está editando:
fuente
:sav newfile | !rm #
Tenga en cuenta que no elimina el archivo antiguo de la lista de búfer. Si eso es importante para usted, puede usar lo siguiente en su lugar:
:sav newfile | bd# | !rm #
fuente