¿Cómo puedo eliminar del disco el archivo abierto actual desde vim? Sería bueno cerrar también el búfer.
Veo que puedes usar NERDTree para eso , pero yo no uso este complemento.
¿Cómo puedo eliminar del disco el archivo abierto actual desde vim? Sería bueno cerrar también el búfer.
Veo que puedes usar NERDTree para eso , pero yo no uso este complemento.
Usar una herramienta externa como rm (1) está bien, pero Vim también tiene su propia delete()
función para eliminar archivos. Esto tiene la ventaja de ser portátil.
:call delete(expand('%'))
Una forma alternativa de expresar esto es :call delete(@%)
, que usa el %
registro (archivo actual) (sugerencia de @accolade).
Para purgar por completo el búfer actual, tanto la representación del archivo en el disco como el búfer Vim, agregue :bdelete
:
:call delete(expand('%')) | bdelete!
Probablemente desee mapear esto de acuerdo con sus preferencias.
nnoremap rm :call delete(expand('%')) \| bdelete!<CR>
. Es posible que desee agregar su respuesta.r
comando! Mejor prefija su mapeo con<Leader>...
.nnoremap <C-Del> :call delete(expand('%'))<CR>
pero no cierro el búfer en caso de que ocurra por accidente; entonces todavía tienes la oportunidad de guardarlo.:call delete(@%)|q!
← Variante corta (si no quieres mapearla). (El búfer permanece:ls
y se puede reactivar de:b
esta manera; conserva el nombre del archivo y las opciones del búfer, pero no el contenido del archivo).:call delete(@%)|bd!
y usar:ls!
con:b
para revivir.Eche un vistazo a Eliminar archivos con un comando Vim . La sección Comentarios debe tener lo que está buscando:
Alternativamente, puede simplemente emitir un comando de shell para eliminar el archivo actual:
fuente
!rm %
, ¿hay alguna manera de evitar la advertencia cuando vim regrese al búfer?%
) con citas:!rm "%"
.%
(filepath (" filename " en terminología vim) como se invocó originalmente, potencialmente relativo, por ejemplo, solo el nombre del archivo) en lugar de%:p
(filepath absoluto), corre un pequeño riesgo de eliminar un archivo con el mismo nombre en otro directorio en su lugar, si te has olvidado de que:cd
estuviste allí. Por lo tanto, recomiendo usarlo en%:p
lugar de%
si lo asigna de todos modos.A veces, un complemento puede ser una solución atractiva incluso para un problema simple. En este caso tenemos suerte ya que hay eunuch.vim del todopoderoso Tim Pope.
En sus propias palabras, eunuch.vim proporciona
Perfecto. Tiene lo que necesitamos, además de algunas herramientas adicionales si estamos en un sistema UNIX.
El comando que busca es
Nuevamente, vuelva a asignarlo si lo necesita mucho, por ejemplo
:nnoremap <Leader>rm :Remove!<CR>
.fuente
mv
,mkdir
,find
, etc. muy recomendable.Me gusta poder eliminar archivos desde dentro de vim, pero también estoy paranoico acerca de eliminar accidentalmente un trabajo importante que, por una razón u otra, aún no está bajo el control de versiones. Encuentro útil combinar la información anterior de @glts y @accolade con esta respuesta sobre cómo usar el
confirm
comando para solicitar antes de salir de vim.Al juntarlos, agregué una función a my
~/.vimrc
, que solicita antes de eliminar el archivo y cerrar el búfer, y lo asigné a una combinación de teclas:Si pulsa una tecla menos que yo, puede agregarlo
<CR>
a la primera líneay solo tienes que pulsar volver una vez.
fuente
expand('%:p')
lugar de@%
cuando lo escriba de todos modos. (Aunque me halaga que hayas incorporado mi pista :) el beneficio de la brevedad es marginal en un guión. Más importante%:p
:) expandirá el nombre del archivo a una ruta absoluta completa (que puede que ya sea o no). Con solo%
corre un pequeño riesgo de eliminar un archivo con el mismo nombre en otro directorio en su lugar, si se ha olvidado de que está:cd
allí.Puedes hacerlo con dos pasos:
guardar como un archivo nuevo
: w nuevo nombre de archivo
eliminar el archivo antiguo
! rm nombre de archivo antiguo
fuente
Esta puede ser una opinión impopular, pero su explorador de árbol de archivos (Netrw / NerdTree) será la forma más sencilla y segura de eliminar un archivo. Incluso si OP no usa NerdTree, el complemento integrado Netrw funcionará igual de bien.
fuente