Wie kann ich die aktuell geöffnete Datei aus vim von der Festplatte löschen? Wäre schön auch den Puffer zu schließen.
Ich sehe, dass Sie NERDTree dafür verwenden können , aber ich verwende dieses Plugin nicht.
Wie kann ich die aktuell geöffnete Datei aus vim von der Festplatte löschen? Wäre schön auch den Puffer zu schließen.
Ich sehe, dass Sie NERDTree dafür verwenden können , aber ich verwende dieses Plugin nicht.
Die Verwendung eines externen Tools wie rm (1) ist in Ordnung, aber Vim verfügt auch über eine eigene delete()
Funktion zum Löschen von Dateien. Dies hat den Vorteil, tragbar zu sein.
:call delete(expand('%'))
Eine alternative Möglichkeit, dies auszudrücken, ist :call delete(@%)
die Verwendung des %
Registers (aktuelle Datei) (Tipp von @accolade).
Um den aktuellen Puffer vollständig zu löschen, fügen Sie sowohl die Dateidarstellung auf der Festplatte als auch den Vim-Puffer hinzu :bdelete
:
:call delete(expand('%')) | bdelete!
Sie möchten dies wahrscheinlich nach Ihren Wünschen zuordnen.
nnoremap rm :call delete(expand('%')) \| bdelete!<CR>
. Vielleicht möchten Sie Ihre Antwort hinzufügen.r
Befehl nicht brechen ! Stellen Sie Ihrem Mapping besser ein Präfix voran<Leader>...
.nnoremap <C-Del> :call delete(expand('%'))<CR>
aber ich schließe den Puffer nicht, falls es versehentlich passiert. dann haben Sie noch eine Chance, es zu speichern.:call delete(@%)|q!
← Kurze Variante (wenn Sie sie nicht zuordnen möchten). (Der Puffer bleibt in:ls
und kann auf:b
diese Weise wiederbelebt werden; er behält die Dateinamen- und Pufferoptionen bei, aber nicht den Dateiinhalt.):call delete(@%)|bd!
und die Verwendung:ls!
mit:b
wieder zu beleben.Schauen Sie sich Dateien mit einem Vim-Befehl löschen an . Der Kommentarbereich sollte das enthalten, wonach Sie suchen:
Alternativ können Sie einfach einen Shell-Befehl ausgeben, um die aktuelle Datei zu entfernen:
quelle
!rm %
es eine Möglichkeit, die Warnung zu vermeiden, wenn vim zum Puffer zurückkehrt?%
) mit Anführungszeichen umgeben :!rm "%"
.%
Wenn nur (Dateipfad (" Dateiname " in der vim-Terminologie)) wie ursprünglich aufgerufen, möglicherweise relativ, z. B. nur der Dateiname) anstelle von%:p
(absoluter Dateipfad) verwendet wird, besteht ein geringes Risiko, dass stattdessen eine gleichnamige Datei in einem anderen Verzeichnis gelöscht wird. wenn du vergessen hast hast du dort:cd
ed. Daher empfehle ich dringend,%:p
anstatt zu verwenden,%
wenn Sie es trotzdem zuordnen.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 vom allmächtigen Tim Pope.
In seinen eigenen Worten bietet eunuch.vim
Perfekt. Es hat das, was wir brauchen, sowie einige zusätzliche Tools, wenn wir auf einem UNIX-System arbeiten.
Der Befehl, den Sie suchen, ist
Ordnen Sie es erneut zu, wenn Sie es häufig benötigen, z
:nnoremap <Leader>rm :Remove!<CR>
.quelle
mv
,mkdir
,find
etc. empfehlen.Ich mag es, Dateien aus vim heraus löschen zu können, aber ich bin auch paranoid, wenn ich versehentlich wichtige Arbeiten lösche, die aus dem einen oder anderen Grund noch nicht unter Versionskontrolle stehen. Ich finde es nützlich, die vorherigen Informationen von @glts und @accolade mit dieser Antwort zu kombinieren, wie der
confirm
Befehl zum Auffordern verwendet werden kann, bevor vim beendet wird.Als ich diese zusammenstellte, fügte ich meinem eine Funktion hinzu
~/.vimrc
, die vor dem Löschen der Datei und dem Schließen des Puffers zur Eingabe auffordert, und ordnete sie einer Tastenkombination zu:Wenn Sie einen Tastendruck weniger paranoid sind als ich, können Sie
<CR>
an die erste Zeile anhängenund müssen nur einmal die Eingabetaste drücken.
quelle
expand('%:p')
anstatt@%
es trotzdem zu schreiben. (Obwohl ich geschmeichelt bin, dass Sie meinen Hinweis aufgenommen haben :) Der Vorteil der Kürze ist in einem Skript marginal. Noch wichtiger ist,%:p
dass :) den Dateinamen auf einen vollständigen absoluten Pfad erweitert (der möglicherweise bereits vorhanden ist oder nicht). Mit nur%
Ihnen besteht ein geringes Risiko, stattdessen eine gleichnamige Datei in einem anderen Verzeichnis zu löschen, wenn Sie vergessen haben, dass Sie dort bearbeitet:cd
haben.Sie können dies in zwei Schritten tun:
als neue Datei speichern
: w neuer Dateiname
Löschen Sie die alte Datei
! rm alter Dateiname
quelle
Dies mag eine unpopuläre Meinung sein, aber Ihr Dateibaum-Explorer (Netrw / NerdTree) wird der einfachste und sicherste Weg sein, eine Datei zu löschen. Auch wenn OP NerdTree nicht verwendet, funktioniert das eingebaute Plugin Netrw genauso gut.
quelle