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ü sav
herhangi 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 try
ifade şö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)
!rm
genellikle çok güvenli değildir ... mv
bir çö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 | w
bkz. file_f - ve geri alma geçmişini korur
expand('%:p')
konumunuzun ( %
) veya alternatif dosyanın ( #
) tüm yolunu verir