Apakah mungkin untuk mengubah nama file yang saya edit dari dalam Vim? Saat ini yang saya lakukan adalah keluar dari Vim, ganti nama file dan buka dari Vim lagi.
Apakah mungkin untuk mengubah nama file yang saya edit dari dalam Vim? Saat ini yang saya lakukan adalah keluar dari Vim, ganti nama file dan buka dari Vim lagi.
Jawaban:
Anda dapat menyimpan file dengan nama yang berbeda menggunakan :w. Tetapi operasi ini tidak akan menghapus file lama dan file 'lama' tetap ada di buffer Anda, jadi setiap perubahan akan diterapkan ke file 'lama' Anda.
:saveasmenyimpan file baru Anda dan membukanya di buffer baru. Tetapi itu tidak menghapus file lama.
Saya menggunakan tpope / vim-eneuch ke :Movefile.
: Pindahkan: Ganti nama buffer dan file pada disk secara bersamaan.
:watau :saveasadalah bahwa itu akan kehilangan izin eksekusi jika Anda mengedit skrip. netrwGanti nama akan menjaga izin.
Anda dapat pindah ke Netrw dan mengganti nama file di sana.
Jika file yang Anda edit ada di direktori saat ini, maka lakukan:
:edit .
Navigasikan ke file, tekan R, dan ubah nama. Tekan Enteruntuk mengedit file.
Namun ada peringatan: buffer asli tetap ada dalam daftar buffer. Jika Anda beralih ke sana, itu kosong.
Jika file yang Anda edit berada di direktori yang berbeda, Anda dapat mengubah ke direktori file dengan:
:cd %:p:h
Jika Anda tidak ingin mengubah direktori untuk seluruh sesi Vim tetapi hanya untuk buffer saat ini, maka Anda dapat melakukannya:
:lcd %:p:h
:edit %:p:hjuga sepertinya berhasil.
:Ejuga akan membuka netrw
Saya telah menggunakan plugin Rename2 untuk ini selama bertahun-tahun. Itu mengubah nama buffer saat ini, dan file di disk:
:Rename {newname}
EDIT: Saya menemukan ini .vimrcfile di github :
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>
Cara terbaik adalah menggunakan :Move, seperti yang dikatakan OrangTux. Untuk kelengkapan, Anda juga dapat melakukan perintah terminal di vi editor menggunakan bang ( !) dalam mode perintah.
:!mv {current_file} {new_name}
:e {new_name}
Namun, metode ini tidak menghapus buffer lama dari daftar buffer Anda.