Bagaimana saya bisa mengganti nama file yang saya edit?


Jawaban:


35

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.


Satu kelemahan :watau :saveasadalah bahwa itu akan kehilangan izin eksekusi jika Anda mengedit skrip. netrwGanti nama akan menjaga izin.
wisbucky

11

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

2
Mengetik lurus :edit %:p:hjuga sepertinya berhasil.
Mladen Jablanović

:Ejuga akan membuka netrw
wisbucky

6

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>

3

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.