Kısa, güvenli, eklenti olmadan:
:sav new_name
:!rm <C-R># // or !del <C-R># for windows
control+ R, tuşuna basmadan önce #anında alternatif bir dosyaya (geçerli pencerede önceden düzenlenmiş yol) genişler Enter. Bu, tam olarak neyi sileceğimizi incelememizi sağlar. |Böyle bir durumda boru kullanmak güvenli değildir , çünkü savherhangi bir nedenle başarısız olursa #, yine de başka bir yere (veya hiçbir şeye) işaret etmez. Bu tamamen farklı dosya anlamına gelir !rm #veya delete(expand(#))silebilir! Bu yüzden dikkatli bir şekilde elle yapın veya iyi bir senaryo kullanın (burada birçok cevapta belirtilmiştir).
eğitici
... veya kendiniz bir işlev / komut / komut dosyası oluşturmayı deneyin. Sth simple gibi başlayın:
command! -nargs=1 Rename saveas <args> | call delete(expand('#')) | bd #
vimrc yeniden yüklendikten sonra sadece yazın :Rename new_filename. Bu komutla ilgili sorun nedir?
Güvenlik testi 1::Rename Tartışma olmadan ne yapar ?
Evet, '#' içinde gizli olan dosyayı siler!
Çözüm: örn. koşullar veya tryifade şöyle:
command! -nargs=1 Rename try | saveas <args> | call delete(expand('#')) | bd # | endtry
Güvenlik testi 1:
:Rename (bağımsız değişken olmadan) bir hata verir:
E471: Tartışma gerekli
Güvenlik testi 2:
İsim öncekiyle aynı olacaksa ne olur?
Güvenlik testi 3:
Dosya gerçek dosyadan farklı bir konumda olursa ne olur?
Kendiniz düzeltin. Okunabilirlik için bu şekilde yazabilirsiniz:
function! s:localscript_name(name):
try
execute 'saveas ' . a:name
...
endtry
endfunction
command! -nargs=1 Rename call s:localscript_name(<f-args>)
notlar
!rm #daha iyidir !rm old_name-> eski adı hatırlamanıza gerek yoktur
!rm <C-R>#!rm #elle ne zaman yaptığınızdan daha iyi -> gerçekten neyi kaldırdığınızı göreceksiniz (güvenlik nedeni)
!rmgenellikle çok güvenli değildir ... mvbir çöp kutusuna daha iyi
call delete(expand('#'))kabuk komutundan (OS agnostik) daha iyidir ancak yazılması daha uzundur ve kullanımı imkansızdır control+R
try | code1 | code2 | tryend -> kod1 sırasında hata oluştuğunda, kod2'yi çalıştırmayın
:sav(veya :saveas), :f new_name | wbkz. file_f - ve geri alma geçmişini korur
expand('%:p')konumunuzun ( %) veya alternatif dosyanın ( #) tüm yolunu verir