เป็นไปได้ไหมที่จะเปลี่ยนชื่อไฟล์ที่ฉันแก้ไขจากภายใน Vim? ปัจจุบันสิ่งที่ฉันทำคือออกจากกลุ่มเปลี่ยนชื่อไฟล์และเปิดจากกลุ่มอีกครั้ง
เป็นไปได้ไหมที่จะเปลี่ยนชื่อไฟล์ที่ฉันแก้ไขจากภายใน Vim? ปัจจุบันสิ่งที่ฉันทำคือออกจากกลุ่มเปลี่ยนชื่อไฟล์และเปิดจากกลุ่มอีกครั้ง
คำตอบ:
:w
คุณสามารถบันทึกไฟล์ภายใต้ชื่อที่แตกต่างกันโดยใช้ แต่การดำเนินการนี้จะไม่ลบไฟล์เก่าและไฟล์ 'เก่า' ยังคงอยู่ในบัฟเฟอร์ของคุณดังนั้นการเปลี่ยนแปลงใด ๆ จะถูกนำไปใช้กับไฟล์ 'เก่า' ของคุณ
:saveas
บันทึกไฟล์ใหม่ของคุณและเปิดในบัฟเฟอร์ใหม่ แต่จะไม่ลบไฟล์เก่า
ฉันใช้tpope / vim-eneuchกับ:Move
ไฟล์
: ย้าย: เปลี่ยนชื่อบัฟเฟอร์และไฟล์บนดิสก์พร้อมกัน
:w
หรือ:saveas
คือมันจะสูญเสียสิทธิ์ดำเนินการถ้าคุณแก้ไขสคริปต์ netrw
การเปลี่ยนชื่อจะเก็บสิทธิ์ไว้
คุณสามารถเลื่อนไปที่Netrwและเปลี่ยนชื่อไฟล์ที่นั่น
หากไฟล์ที่คุณแก้ไขอยู่ในไดเรกทอรีปัจจุบันให้ทำดังนี้
:edit .
นำทางไปยังไฟล์กดRและเปลี่ยนชื่อ กดEnterเพื่อแก้ไขไฟล์
มีข้อแม้อยู่ว่า: บัฟเฟอร์เดิมยังคงอยู่ในรายการบัฟเฟอร์ หากคุณเปลี่ยนมาใช้มันว่างเปล่า
หากไฟล์ที่คุณแก้ไขอยู่ในไดเรกทอรีอื่นคุณสามารถเปลี่ยนเป็นไดเรกทอรีของไฟล์ได้ด้วย:
:cd %:p:h
หากคุณไม่ต้องการเปลี่ยนไดเรกทอรีสำหรับทั้งกลุ่ม Vim แต่สำหรับบัฟเฟอร์ปัจจุบันเท่านั้นคุณสามารถทำได้แทน:
:lcd %:p:h
:edit %:p:h
ดูเหมือนว่าจะทำงาน
:E
จะเปิด netrw ด้วย
ฉันใช้ปลั๊กอิน Rename2มาหลายปีแล้ว มันเปลี่ยนชื่อทั้งบัฟเฟอร์ปัจจุบันและไฟล์บนดิสก์:
:Rename {newname}
แก้ไข: ฉันพบ.vimrc
ไฟล์นี้ใน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>
วิธีที่ดีที่สุดคือใช้:Move
OrangTux กล่าว เพื่อความสมบูรณ์คุณยังสามารถใช้คำสั่งเทอร์มินัลในตัวแก้ไข vi โดยใช้ปุ่ม ( !
) ในโหมดคำสั่ง
:!mv {current_file} {new_name}
:e {new_name}
อย่างไรก็ตามวิธีนี้ไม่ได้ลบบัฟเฟอร์เก่าออกจากรายการบัฟเฟอร์ของคุณ