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.
:saveas
menyimpan file baru Anda dan membukanya di buffer baru. Tetapi itu tidak menghapus file lama.
Saya menggunakan tpope / vim-eneuch ke :Move
file.
: Pindahkan: Ganti nama buffer dan file pada disk secara bersamaan.
:w
atau :saveas
adalah bahwa itu akan kehilangan izin eksekusi jika Anda mengedit skrip. netrw
Ganti 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:h
juga sepertinya berhasil.
:E
juga 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 .vimrc
file 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.