Mevcut açık dosyayı vim içinden diskten nasıl silebilirim? Tamponun da kapatılması iyi olur.
Bunun için NERDTree'yi kullanabileceğinizi görüyorum , ancak bu eklentiyi kullanmıyorum.
Mevcut açık dosyayı vim içinden diskten nasıl silebilirim? Tamponun da kapatılması iyi olur.
Bunun için NERDTree'yi kullanabileceğinizi görüyorum , ancak bu eklentiyi kullanmıyorum.
Yanıtlar:
Rm (1) gibi harici bir araç kullanmak iyidir, ancak Vim'in ayrıca delete()dosyaları silmek için kendi işlevi vardır . Bunun taşınabilir olma avantajı vardır.
:call delete(expand('%'))
Bunu ifade etmenin alternatif bir yolu :call delete(@%), %(mevcut dosya) yazmacını (@accolade ile ipucu) kullanmaktır.
Geçerli arabelleği, hem diskteki dosya gösterimini hem de Vim arabelleğini tamamen temizlemek için şunu ekleyin :bdelete:
:call delete(expand('%')) | bdelete!
Muhtemelen bunu tercihlerinize göre haritalamak isteyeceksiniz.
rEmri bozmak istemiyoruz ! Eşlemenize ile daha iyi önek ekleyin <Leader>....
nnoremap <C-Del> :call delete(expand('%'))<CR>ancak yanlışlıkla olması durumunda tamponu kapatmıyorum; o zaman onu kurtarmak için hala bir şansın var.
:call delete(@%)|q!← Kısa varyant (haritalamak istemiyorsanız). (Arabellek içeride kalır :lsve bu şekilde yeniden canlandırılabilir :b; dosya adı ve arabellek seçeneklerini korur, ancak dosya içeriğini
:call delete(@%)|bd!kullanımı ve :ls!birlikte :bcanlandırmak için.
Bir Vim komutuyla dosyaları sil'e bir göz atın . Yorumlar bölüm aradığınızı olmalıdır:
Temel olarak, Rm mevcut dosyayı silecektir; RM, mevcut dosyayı silecek ve tek seferde arabelleği (kaydetmeden) çıkaracaktır.
Alternatif olarak, mevcut dosyayı kaldırmak için bir kabuk komutu verebilirsiniz:
:!rm %
!rm %, vim arabelleğe geri döndüğünde uyarıdan kaçınmanın bir yolu var mı?
%tırnak): !rm "%".
%( mutlak dosya yolu) yerine (mutlak dosya yolu) yerine sadece ( vim terminolojisinde dosya yolu ( vim terminolojisinde " dosya adı "), potansiyel olarak göreceli, örneğin sadece dosyanın adı) %:pile aynı adı taşıyan bir dosyayı başka bir dizinde silmenin küçük bir riski vardır, :cdorada olduğunu unuttuysan Bu nedenle , yine de haritalamak %:pyerine kullanmanızı şiddetle tavsiye ederim %.
Bazen bir eklenti, basit bir problem için bile çekici bir çözüm olabilir. Bu durumda , yüce Tim Pope'un hadım.vim'i olduğu için şanslıyız .
Kendi sözleriyle eunuch.vim sağlar
En çok ihtiyaç duyan UNIX kabuk komutları için Vim sugar. Aynı anda bir arabelleği ve temel alınan dosyayı silin veya yeniden adlandırın. Quickfix listesine a
findveya a yükleyinlocate. Ve bunun gibi.
Mükemmel. İhtiyacımız olan şey, artı bir UNIX sistemindeysek bazı ek araçlara sahiptir.
Aradığınız komut
:Remove!
Yine, çok ihtiyacınız varsa yeniden eşleştirin, örneğin :nnoremap <Leader>rm :Remove!<CR>.
mv, mkdir, findvb Tavsiye ederim.
Dosyaları vim içinden silebilmeyi seviyorum, ancak aynı zamanda, şu ya da bu nedenle henüz sürüm kontrolü altında olmayan önemli işleri yanlışlıkla silme konusunda da paranoyaklaşıyorum. @Glts ve @accolade'deki önceki bilgileri, vim'den çıkmadan önce komut istemi için nasıl kullanılacağına ilişkin bu yanıtla birleştirmeyi yararlı buluyorum confirm.
Bunları bir araya getirerek, ~/.vimrcdosyayı silmeden ve arabelleği kapatmadan önce soran ve bir tuş kombinasyonuyla eşleştiren bir işlev ekledim :
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
Eğer benden daha az paranoyak bir tuşa basarsanız <CR>, ilk satıra ekleyebilirsiniz .
nnoremap <Leader>d. :call DeleteFileAndCloseBuffer()<CR>
ve yalnızca bir kez return tuşuna basmanız gerekir.
expand('%:p')yerine kullanmanızı şiddetle tavsiye ederim @%. (İpucumu dahil ettiğiniz için gurur duyarken :) kısalık faydası bir senaryoda marjinaldir. Daha da önemlisi %:p:) dosya adını tam mutlak yola (zaten olabilir veya olmayabilir ) genişletir. Sadece %, :cdorada kaldığınızı unuttuysanız, bunun yerine başka bir dizindeki aynı isimli bir dosyayı silme riskiyle karşı karşıya kalırsınız .
Bunu iki adımda yapabilirsiniz:
yeni bir dosya olarak kaydet
: w yeni dosya adı
eski dosyayı sil
! rm eski dosya adı
Bu popüler olmayan bir fikir olabilir, ancak dosya ağacı gezgininiz (Netrw / NerdTree) bir dosyayı silmenin en basit ve en güvenli yolu olacaktır. OP NerdTree kullanmasa bile, yerleşik eklenti Netrw de aynı şekilde çalışacaktır.
nnoremap rm :call delete(expand('%')) \| bdelete!<CR>. Cevabınıza eklemek isteyebilirsiniz.