it-swarm.com.de

Wie kann ich die aktuelle Datei in vim löschen?

Wie kann ich die aktuell geöffnete Datei in vim von der Festplatte löschen? Wäre schön, auch den Puffer zu schließen.

Ich sehe dich kann NERDTree dafür verwenden , aber ich benutze dieses Plugin nicht.

75
fotanus

Die Verwendung eines externen Tools wie rm (1) ist in Ordnung, aber Vim hat auch ein eigenes delete() = Funktion zum Löschen von Dateien. Dies hat den Vorteil, dass es portabel ist.

:call delete(expand('%'))

Eine alternative Möglichkeit, dies auszudrücken, ist :call delete(@%), wobei das % (aktuelle Datei) -Register verwendet wird (Tipp von @accolade).

Fügen Sie :bdelete hinzu, um den aktuellen Puffer, sowohl die Dateidarstellung auf der Festplatte als auch den Vim-Puffer, vollständig zu leeren:

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

Wahrscheinlich möchten Sie dies nach Ihren Wünschen abbilden.

86
glts

Schauen Sie sich Löschen von Dateien mit einem Vim-Befehl an. Der Abschnitt Kommentare sollte das haben, wonach Sie suchen:

Grundsätzlich löscht Rm die aktuelle Datei; RM löscht die aktuelle Datei und verlässt den Puffer (ohne zu speichern) auf einmal.

Alternativ können Sie auch einen Shell-Befehl eingeben, um die aktuelle Datei zu entfernen:

:!rm %
73
David Cain

Manchmal kann ein Plugin auch für ein einfaches Problem eine attraktive Lösung sein. In diesem Fall haben wir Glück, denn es gibt eunuch.vim beim Allmächtigen Tim Pope.

In eigenen Worten eunuch.vim liefert

Vim sugar für die UNIX-Shell-Befehle, die es am dringendsten brauchen. Löschen oder benennen Sie einen Puffer und die zugrunde liegende Datei gleichzeitig um. Laden Sie ein find oder ein locate in die Quickfix-Liste. Und so weiter.

Perfekt. Es hat das, was wir brauchen, und einige zusätzliche Tools, wenn wir auf einem UNIX-System arbeiten.

Der gesuchte Befehl lautet

:Remove!

Ordnen Sie es erneut zu, wenn Sie es häufig benötigen, z. :nnoremap <Leader>rm :Remove!<CR>.

24
glts

Ich mag es, Dateien aus vim heraus zu löschen, aber ich bin auch paranoid, wenn ich versehentlich wichtige Arbeiten lösche, die aus dem einen oder anderen Grund noch nicht der Versionskontrolle unterliegen. Ich finde es nützlich, die vorherigen Informationen aus @glts und @accolade mit dieser Antwort zu kombinieren, um zu erfahren, wie der Befehl confirm zum Auffordern vor dem Beenden von vim verwendet wird.

Ich habe diese zusammengefügt und meinem ~/.vimrc Eine Funktion hinzugefügt, die vor dem Löschen der Datei und dem Schließen des Puffers angezeigt und einer Tastenkombination zugeordnet wird:

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

Wenn Sie einen Tastendruck weniger paranoid sind als ich, können Sie <CR> An die erste Zeile anhängen

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

und müssen nur einmal die Eingabetaste drücken.

3
joelostblom

Sie können dies in zwei Schritten tun:

  1. lösche die alte Datei

    ! rm alter Dateiname

  2. delete the old file

    ! rm oldfilename

0
Ranger Way