Ich habe eine Datei testfile.xml, die ich mit Vim öffnen und im Befehlsmodus löschen möchte
Kommentare
-
:!rm testfile.xml
? - zum Löschen von Inhalten: unix.stackexchange.com/questions/161821/…
-
vi
ist kein Tool zum Löschen von Dateien.rm
undfind
sind ebenso Sicherungswerkzeuge. - Diese Frage passt besser zur Vi- und Vim-Site vi.stackexchange.com
Antwort
Es gibt viele Möglichkeiten:
-
Verwenden der Intercative-Shell in vim
Im Editor –
:sh rm textfile.xml
-
Verwenden von Bang (!)
Wie von DopeGhoti vorgeschlagen –
:!rm textfile.xml
-
Von diesem Link .
Fügen Sie diesen hinzu Ihre
~/.vimrc
command! -complete=file -nargs=1 Remove :echo "Remove: "."<f-args>"." ".(delete(<f-args>) == 0 ? "SUCCEEDED" : "FAILED")
Dann in vim
:Remove testfile.xml
-
Wieder über denselben Link in # 3
Verwenden Sie diesen Befehl:
:call delete(expand("%")) | bdelete!
Antwort
Eine andere Möglichkeit zum interaktiven Löschen von Dateien ist die Verwendung von
:E
oder
:Ex
zum Beispiel (Ploring) des Dateiverzeichnisses. Dort haben Sie ein interaktives Fenster, das Sie führt. Wenn Sie den Eintrag ausgewählt haben, den Sie löschen möchten, verwenden Sie
Shift-D
und bestätigen Sie mit
y return
So sieht es oben in meinem Fenster im Explorer-Modus aus:
" ============================================================================ " Netrw Directory Listing (netrw v140) " C:\Users\cbkrd\Desktop " Sorted by name " Sort sequence: [\/]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$ " Quick Help: <F1>:help -:go up dir D:delete R:rename s:sort-by x:exec " ============================================================================
Kommentare
-
:E
führte zuE464: Ambiguous use of user-defined command
, aber:Ex
funktionierte einwandfrei.
Antwort
So löschen Sie die Datei vorübergehend
:!rm %
%
ist die aktuell geöffnete Datei
Strg + Z , stoppt den Prozess
mit ls
prüfen, Datei nicht mehr auf der Festplatte
fg
bringt die Datei auf vim zurück
Sie können es mit regulären vim-Befehlen speichern.
Antwort
Wie Yash feststellt: Es gibt viele Wege. Aber die kürzeste,
:echo delete(@%)
, erscheint nur versteckt, nur am Ende von Yashs Link:
Ich verstehe nicht, warum Sie all diese Befehle und Funktionen verwenden würden.
Warum nicht
:echo delete(filename)
? Wenn Sie den Datei- und Löschpuffer löschen möchten, was meiner Meinung nach sehr selten vorkommt, können Sie:echo delete(@%)
schreiben, und wenn erfolgreich –:bw!
.
Mit echo
(anstelle von call
) Sie sehen das Ergebnis direkt, 0 oder -1.
:!rm %
von @Justin ist wahrscheinlich dasselbe, aber es gibt einen Bildschirmschalter und den Nachricht „nicht mehr verfügbar“ – mit delete()
ist es flüssiger.
Und ich verstehe nicht, was rm
filtert hier …
Die ganze Idee ist meistens sinnvoll, wenn Sie eine Reihe von Dateien sortieren möchten:
vim $(find -size -100c -type f)
Wenn Sie einige dieser kleinen Dateien löschen / behalten möchten, können Sie sie :n[ext]
durchgehen und direkt löschen Die :echo delete(@%)
sollte möglicherweise nur vorübergehend zugeordnet werden, da dies gefährlich ist. Ich habe eine Hilfedatei verloren und umbenannt ein anderer, während er mit „%“ experimentiert.