Jak mogę usunąć z dysku aktualnie otwarty plik z poziomu vima? Byłoby miło również zamknąć bufor.
Widzę, że możesz do tego użyć NERDTree , ale nie używam tej wtyczki.
Jak mogę usunąć z dysku aktualnie otwarty plik z poziomu vima? Byłoby miło również zamknąć bufor.
Widzę, że możesz do tego użyć NERDTree , ale nie używam tej wtyczki.
Używanie zewnętrznego narzędzia, takiego jak rm (1) jest w porządku, ale Vim ma również własną delete()
funkcję usuwania plików. Ma to tę zaletę, że jest przenośny.
:call delete(expand('%'))
Alternatywnym sposobem wyrażenia tego jest :call delete(@%)
użycie %
rejestru (bieżącego pliku) (wskazówka @accolade).
Aby całkowicie wyczyścić bieżący bufor, zarówno reprezentacja pliku na dysku, jak i bufor Vima, dodaj :bdelete
:
:call delete(expand('%')) | bdelete!
Prawdopodobnie będziesz chciał mapować to zgodnie ze swoimi preferencjami.
nnoremap rm :call delete(expand('%')) \| bdelete!<CR>
. Możesz dodać swoją odpowiedź.r
polecenia! Lepiej prefiksuj swoje mapowanie<Leader>...
.nnoremap <C-Del> :call delete(expand('%'))<CR>
ale nie zamykam bufora na wypadek, gdyby stało się to przez przypadek; wtedy nadal masz szansę go zapisać.:call delete(@%)|q!
← Krótki wariant (jeśli nie chcesz go mapować). (Bufor pozostaje:ls
i można go przywrócić w:b
ten sposób; zachowuje nazwę pliku i opcje bufora, ale nie zawartość pliku.):call delete(@%)|bd!
i używać:ls!
z,:b
aby ożywić.Spójrz na Usuń pliki za pomocą polecenia Vima . Sekcja Komentarze powinna zawierać to, czego szukasz:
Alternatywnie możesz po prostu wydać polecenie powłoki, aby usunąć bieżący plik:
źródło
!rm %
, czy jest sposób na uniknięcie ostrzeżenia, gdy vim wróci do bufora?%
) z cytatami:!rm "%"
.%
(filepath (" filename " w terminologii vima) jak pierwotnie wywołane, potencjalnie względne, np. Tylko nazwa pliku) zamiast%:p
(bezwzględna ścieżka pliku), ryzykujesz usunięcie pliku o tej samej nazwie w innym katalogu, jeśli zapomniałeś, że:cd
tam się wydałeś. Dlatego zdecydowanie zalecam używanie%:p
zamiast,%
jeśli i tak je mapujesz.Czasami wtyczka może być atrakcyjnym rozwiązaniem nawet w przypadku prostego problemu. W tym przypadku mamy szczęście, ponieważ istnieje eunuch.vim wszechmogącego Tima Pope'a.
Własnymi słowami eunuch.vim zapewnia
Idealny. Ma to, czego potrzebujemy, a także kilka dodatkowych narzędzi, jeśli pracujemy w systemie UNIX.
Polecenie, którego szukasz, to
Ponownie, przemapuj go, jeśli bardzo go potrzebujesz, np
:nnoremap <Leader>rm :Remove!<CR>
.źródło
mv
,mkdir
,find
, itd. Bardzo polecam.Lubię móc usuwać pliki z poziomu vima, ale mam też paranoję na punkcie przypadkowego usuwania ważnej pracy, która z jakiegoś powodu nie jest jeszcze pod kontrolą wersji. Uważam, że przydatne jest połączenie poprzednich informacji z @glts i @accolade z tą odpowiedzią, jak używać
confirm
polecenia do wyświetlania monitu przed zamknięciem vima.Składając je razem, dodałem do my funkcję
~/.vimrc
, która wyświetla monity przed usunięciem pliku i zamknięciem bufora, i zamapowałem ją na kombinację klawiszy:Jeśli jesteś o jedno naciśnięcie klawisza mniej paranoikiem niż ja, możesz dołączyć
<CR>
do pierwszej liniii wystarczy raz nacisnąć klawisz powrotu.
źródło
expand('%:p')
zamiast@%
skryptu i tak. (Chociaż pochlebia mi, że uwzględniłeś moją wskazówkę :), korzyść zwięzłości jest marginalna w scenariuszu. Co ważniejsze%:p
:) rozszerzy nazwę pliku do pełnej ścieżki bezwzględnej (którą może już być, ale nie musi). Po prostu%
ryzykujesz usunięcie pliku o tej samej nazwie w innym katalogu, jeśli zapomniałeś, że:cd
tam edytujesz.Możesz to zrobić w dwóch krokach:
zapisz jako nowy plik
: w nowa nazwa pliku
usuń stary plik
! rm stara nazwa pliku
źródło
Może to być niepopularna opinia, ale eksplorator drzewa plików (Netrw / NerdTree) będzie najprostszym i najbezpieczniejszym sposobem na usunięcie pliku. Nawet jeśli OP nie używa NerdTree, wbudowana wtyczka Netrw będzie działać równie dobrze.
źródło