Hoe kan ik het huidige bestand in vim verwijderen?

Hoe kan ik het huidige geopende bestand vanuit vim van de schijf verwijderen? Zou leuk zijn om ook de buffer te sluiten.

Ik zie dat je er NERDTree daarvoor kunt gebruiken, maar ik gebruik geen deze plug-in.


Antwoord 1, autoriteit 100%

Het gebruik van een externe tool zoals rm(1) is prima, maar Vim heeft ook zijn eigen delete()functie voor het verwijderen van bestanden. Dit heeft het voordeel dat het draagbaar is.

:call delete(expand('%'))

Een alternatieve manier om dit uit te drukken is :call delete(@%), dat de %(huidig ​​bestand) registreren (tip van @accolade).

Om de huidige buffer volledig te wissen, zowel de bestandsweergave op de schijf als de Vim-buffer, voegt u :bdelete:

:call delete(expand('%')) | bdelete!

U wilt dit waarschijnlijk in kaart brengen volgens uw voorkeuren.


Antwoord 2, autoriteit 84%

Bekijk Bestanden verwijderen met een Vim-opdracht. De sectie Opmerkingenmoet bevatten wat u zoekt:

In principe zal Rm het huidige bestand verwijderen; RM verwijdert het huidige bestand en sluit de buffer (zonder op te slaan) in één keer af.

U kunt ook gewoon een shell-opdracht geven om het huidige bestand te verwijderen:

:!rm %

Antwoord 3, autoriteit 23%

Soms kan een plug-in zelfs voor een eenvoudig probleem een ​​aantrekkelijke oplossing zijn. In dit geval hebben we geluk want er is eunuch.vim door de almachtige Tim Pope.

In zijn eigen woorden eunuch.vimbiedt

Vim sugar voor de UNIX-shell-commando’s die dit het meest nodig hebben. Verwijder of hernoem tegelijkertijd een buffer en het onderliggende bestand. Laad een findof een locatein de quickfix-lijst. En zo verder.

Perfect. Het heeft wat we nodig hebben, plus wat extra tools als we op een UNIX-systeem werken.

Het commando dat je zoekt is

:Remove!

Nogmaals, wijs het opnieuw toe als je het veel nodig hebt, b.v. :nnoremap <Leader>rm :Remove!<CR>.


Antwoord 4, autoriteit 5%

Ik vind het prettig om bestanden vanuit vim te kunnen verwijderen, maar ik ben ook paranoïde over het per ongeluk verwijderen van belangrijk werk dat om de een of andere reden nog niet onder versiebeheer staat. Ik vind het handig om de eerdere informatie van @glts en @accolade te combineren met dit antwoordover het gebruik van de confirmopdracht om te vragen voordat u vim afsluit.

Door deze samen te voegen, heb ik een functie toegevoegd aan mijn ~/.vimrc, die vraagt ​​voordat het bestand wordt verwijderd en de buffer wordt gesloten, en toegewezen aan een toetsencombinatie:

nnoremap <Leader>d. :call DeleteFileAndCloseBuffer()
fun! DeleteFileAndCloseBuffer()
  let choice = confirm("Delete file and close buffer?", "&Do it!\n&Nonono", 1)
  if choice == 1 | call delete(expand('%:p')) | q! | endif
endfun

Als je één toetsaanslag minder paranoïde bent dan ik, kun je <CR>toevoegen aan de eerste regel

nnoremap <Leader>d. :call DeleteFileAndCloseBuffer()<CR>

en je hoeft maar één keer op Return te drukken.


Antwoord 5

Je kunt het in twee stappen doen:

  1. opslaan als een nieuw bestand

    :w nieuwe bestandsnaam

  2. verwijder het oude bestand

    ! rm oude bestandsnaam


Antwoord 6

Dit is misschien een onpopulaire mening, maar uw bestandsboomverkenner (Netrw/NerdTree) zal de eenvoudigste en veiligste manier zijn om een bestand te verwijderen. Zelfs als OP NerdTree niet gebruikt, werkt de ingebouwde plug-in Netrw net zo goed.

Other episodes