ฉันจะออกจากโหมดอ่านอย่างเดียวใน Vim ได้อย่างไร


38

ฉันเปิดไฟล์ในโหมดอ่านอย่างเดียว มีวิธีออกจากโหมดอ่านอย่างเดียวหรือไม่


ข้อ จำกัด ในโหมดอ่านอย่างเดียวที่รบกวนคุณคืออะไร หากเป็นเพียงว่าคุณต้องการเขียนไฟล์แม้ว่าคุณจะเปิดอ่านอย่างเดียวก็ตามการเพิ่มคำสั่งลง!ในwคำสั่งจะทำตามที่ไมเคิลระบุไว้
Bananguin

1
@ user1129682 เป็นเพียงความไม่สะดวกในการจำที่จะใส่เครื่องหมายอัศเจรีย์wทุกครั้งที่ฉันต้องการบันทึก heh
ผิด

คำตอบ:


43

คุณสามารถทำได้:

:set noro

ซึ่งจะยกเลิกการตั้งค่าสถานะอ่านอย่างเดียว แต่หากไฟล์ต้นแบบยังไม่สามารถเขียนได้โดยคุณกลุ่มที่ยังคงไม่สามารถเขียนลงไปได้


วิธีการย้อนกลับนี้และกลับไปอ่านอย่างเดียว?
Louis Hong

2
@LouisHong :set roมากได้อย่างง่ายดาย:
ฟิลิป Kearns

1
นี่คือที่สมบูรณ์แบบสำหรับถ้าคุณเปิดไฟล์ที่เขียนได้viewแต่ตัดสินใจที่จะแก้ไข
wisbucky

9

คุณสามารถเรียกใช้chmodจากภายในกลุ่ม:

:!chmod +w %

!หมายถึงเรียกใช้คำสั่งเชลล์และ%เป็นชื่อไฟล์ปัจจุบัน คุณสามารถบังคับให้เขียนไฟล์:

:w!

3

นอกเหนือจากคำตอบของ Michael Mrozekคุณสามารถเพิ่มบรรทัดลงในของคุณ.vimrcที่อนุญาตให้คุณเขียนลงในไฟล์ที่คุณไม่ได้เปิดไว้โดยได้รับอนุญาตจากผู้ดูแล:

" Allows writing to files with root priviledges
cmap w!! w !sudo tee % > /dev/null

หากไฟล์เป็นแบบอ่านอย่างเดียวคุณต้องป้อน:w!!เท่านั้นคุณจะได้รับแจ้งให้ใส่รหัสผ่านของคุณจากนั้นไฟล์นั้นจะถูกเขียนลงไปสำเร็จ


2

ในขณะ:set noroที่ทำงานมันจะไม่ตรวจสอบว่าไฟล์ถูกเปิดโดยอินสแตนซ์ที่เป็นกลุ่มอื่นหรืออัปเดตไฟล์หากมีการเปลี่ยนแปลงจากภายนอก

เพื่อให้สามารถแก้ไขและตรวจสอบไฟล์ swap (ซึ่งเป็นค่าเริ่มต้นเปิดไฟล์ด้วย vim) เพียงใช้คำสั่งแก้ไข (: ช่วยแก้ไข):

:e

หมายเหตุหากไฟล์ถูกจัดการตั้งแต่นั้น (แม้อยู่ด้านนอกของ vim) มันจะอัพเดตการเปลี่ยนแปลงในบัฟเฟอร์ปัจจุบัน (ซึ่งฉันพบว่าเป็นที่ต้องการตามปกติ)


1

ที่นี่ฉันไปแม้ว่าจะสายไปหน่อยบางทีคุณอาจแก้ไขข้อสงสัยของคุณอยู่แล้ว) ฉันไม่เห็นความคิดเห็นใด ๆ ในแบบที่ฉันรู้ด้วยเสียงเรียกเข้าดังนั้นฉันจึงเพิ่ม:

เมื่อคุณกำลังแก้ไขไฟล์คุณกด:wหรือ:wqและคุณจะเห็นข้อความที่น่ารำคาญ " E45 'อ่านได้อย่างเดียว' ตัวเลือกเป็นชุด (เพิ่ม! เพื่อแทนที่) "

ตั้งค่าตัวเลือกแบบอ่านอย่างเดียว E45 (เพิ่ม! เพื่อลบล้าง)

คุณสามารถพิมพ์

:w !sudo tee %

w! sudo tee%

  • w เขียนบัฟเฟอร์
  • !sudo เรียกเชลล์ด้วย sudo
  • teeเปลี่ยนเส้นทางเอาต์พุตของvim :wไปยังเอาต์พุตด้วย tee, และ
  • % เป็นชื่อไฟล์ปัจจุบัน

และนั่นควรทำเคล็ดลับ โปรดทราบว่าการดำเนินการนี้จะแจ้งให้โหลดไฟล์เป็นกลุ่มสำหรับสิ่งที่คุณต้องกด L

ป้อนคำอธิบายรูปภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.