Vim içinden düzenlediğim dosyayı yeniden adlandırmak mümkün müdür? Şu anda yaptığım şey Vim'den çıkmak, dosyayı yeniden adlandırmak ve tekrar Vim'den açmak.
Vim içinden düzenlediğim dosyayı yeniden adlandırmak mümkün müdür? Şu anda yaptığım şey Vim'den çıkmak, dosyayı yeniden adlandırmak ve tekrar Vim'den açmak.
Yanıtlar:
Dosyayı kullanarak farklı bir adla kaydedebilirsiniz :w
. Ancak bu işlem eski dosyayı kaldırmaz ve 'eski' dosya arabelleğinizde kalır, bu nedenle herhangi bir değişiklik 'eski' dosyanıza uygulanır.
:saveas
yeni dosyanızı kaydeder ve yeni bir tamponda açar. Ancak eski dosyayı silmez.
Kullandığım tpope / vim-eneuch için :Move
dosyaları.
: Taşı: Bir arabellek ve dosyayı aynı anda diskte yeniden adlandırın.
:w
veya :saveas
bir senaryo düzenliyorsanız yürütme iznini kaybedecek olmasıdır. netrw
Yeniden adlandır, izinleri koruyacaktır.
Netrw'e bırakabilir ve oradaki dosyayı yeniden adlandırabilirsiniz.
Düzenlemekte olduğunuz dosya geçerli dizindeyse, şunları yapın:
:edit .
Dosyaya gidin, tuşuna basın Rve ismi değiştirin. EnterDosyayı düzenlemek için basın .
Yine de bir uyarı var: orijinal arabellek arabellek listesinde kalır. Geçerseniz, boş.
Düzenlemekte olduğunuz dosya farklı bir dizindeyse, dosya dizini ile şu şekilde değiştirebilirsiniz:
:cd %:p:h
Dizinin tamamını tüm Vim oturumu için değiştirmek istemiyorsanız, yalnızca geçerli arabellek için değiştirmek istiyorsanız, bunun yerine şunları yapabilirsiniz:
:lcd %:p:h
:edit %:p:h
da iş gibi görünüyor.
:E
netrw da açacak
Bunun için Rename2 eklentisini yıllardır kullanıyorum . Hem geçerli arabelleği hem de diskteki dosyayı yeniden adlandırır:
:Rename {newname}
EDIT: Bu github bir .vimrc
dosya buldum :
function! RenameFile()
let old_name = expand('%')
let new_name = input('New file name: ', expand('%'), 'file')
if new_name != '' && new_name != old_name
exec ':saveas ' . new_name
exec ':silent !rm ' . old_name
redraw!
endif
endfunction
map <leader>n :call RenameFile()<cr>
:Move
OrangTux’un dediği gibi en iyi yol kullanmak . Tamamlanmak için !
komut modundaki bir bang ( ) komutunu kullanarak vi editörlerinde terminal komutları da gerçekleştirebilirsiniz .
:!mv {current_file} {new_name}
:e {new_name}
Ancak, bu yöntem eski arabelleği arabellek listenizden kaldırmaz.