Ik heb een bestand testfile.xml dat ik met Vim wil openen en verwijderen in commandomodus
Reacties
Antwoord
Er zijn veel manieren:
-
De intercative shell in vim gebruiken
Wanneer in de editor –
:sh rm textfile.xml
-
Bang (!) gebruiken
Zoals DopeGhoti suggereerde –
:!rm textfile.xml
-
Van deze link .
Voeg dit toe aan uw
~/.vimrc
command! -complete=file -nargs=1 Remove :echo "Remove: "."<f-args>"." ".(delete(<f-args>) == 0 ? "SUCCEEDED" : "FAILED")
Dan, in vim,
:Remove testfile.xml
-
Opnieuw vanaf dezelfde link in # 3
Gebruik deze opdracht:
:call delete(expand("%")) | bdelete!
Answer
Een andere manier om interactief bestanden te verwijderen is door
:E
of
:Ex
om bijvoorbeeld de bestandsmap te verkennen. Daar heb je een interactief venster dat je zal begeleiden. Zodra u het item heeft geselecteerd dat u wilt verwijderen, gebruikt u
Shift-D
bevestig met
y return
Zo ziet het er bovenaan in mijn venster in verkennermodus uit:
" ============================================================================ " 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 " ============================================================================
Reacties
-
:E
resulteerde inE464: Ambiguous use of user-defined command
, maar:Ex
werkte prima.
Antwoord
Om het bestand tijdelijk te verwijderen
:!rm %
%
is het momenteel geopende bestand
Ctrl + Z , stopt het proces
controleer met ls
, bestand staat niet meer op de schijf
fg
brengt het bestand terug in vim
je kunt het opslaan met gewone vim-commandos
Answer
Zoals Yash zegt: er zijn er veel manieren. Maar de kortste,
:echo delete(@%)
verschijnt alleen verborgen, alleen aan het einde van de link van Yash:
Ik begrijp niet waarom je al die commandos en functies zou gebruiken.
Waarom niet
:echo delete(filename)
? Of, als je het bestand en de wisbuffer wilt verwijderen, wat volgens mij zeer zelden gebeurt, kun je:echo delete(@%)
schrijven, en als dit lukt –:bw!
.
Met echo
(in plaats van call
) zie je het resultaat direct, 0 of -1.
:!rm %
door @Justin is waarschijnlijk hetzelfde, maar er is een schermschakelaar en de “niet langer beschikbaar” bericht – met delete()
is het soepeler.
En ik begrijp niet wat rm
is filtert hier …
Het hele idee is vooral logisch als je een aantal bestanden wilt sorteren:
vim $(find -size -100c -type f)
Als je enkele van deze kleine bestanden wilt verwijderen / behouden, kun je :n[ext]
door ze heen en ze direct verwijderen . De :echo delete(@%)
mag misschien maar tijdelijk in kaart worden gebracht, omdat het gevaarlijk is. Ik ben een helpbestand kwijtgeraakt en heb de naam gewijzigd een ander, terwijl je experimenteert met “%”.
:!rm testfile.xml
?vi
is geen tool om bestanden te verwijderen,rm
enfind
zijn ook back-uptools.