หากคุณเปิดไฟล์ที่คุณไม่ได้รับอนุญาตให้เขียนเป็นกลุ่มแล้วตัดสินใจว่าคุณจำเป็นต้องเปลี่ยนไฟล์คุณสามารถเขียนการเปลี่ยนแปลงของคุณได้โดยไม่ต้องออกจาก vim โดยที่:w !sudo tee %
ฉันไม่เข้าใจวิธีการทำงานนี้ คุณช่วยกรุณาตัดออกได้ไหม
ฉันเข้าใจ:w
ส่วนมันเขียนบัฟเฟอร์ปัจจุบันไปยังดิสก์โดยสมมติว่ามีชื่อไฟล์ที่เชื่อมโยงอยู่ใช่ไหม
ฉันยังเข้าใจ!
ว่าsudo tee
คำสั่งใดที่เรียกใช้งานและ%
แสดงถึงเนื้อหาบัฟเฟอร์ปัจจุบันใช่ไหม
แต่ก็ยังไม่เข้าใจว่ามันใช้งานได้อย่างไร
:!command
เป็นตัวกรอง (cf.:h !
) ในขณะที่:w !command
ไม่ได้เป็นเพียงแค่ดำเนินการcommand
กับไฟล์ปัจจุบันเป็นstdin
(cf.:h :w_c
) หากต้องการปัญญา::w !sed /./d
ไม่เปลี่ยนเนื้อหาของบัฟเฟอร์ปัจจุบัน แต่สูตรย่อมไม่ถูกต้องด้วยเหตุผลอื่นจะต้องมีการหลบหนีออก:%
:exec 'w !sudo tee ' . shellescape(expand('%', 1))
คำสั่งเดิมไม่สามารถใช้งานได้พูดชื่อไฟล์ด้วยช่องว่าง