การตั้งค่าและปลั๊กอินเมื่อรูต (`sudo vim`)?


15

มันน่าผิดหวังจริง ๆ เมื่อฉันต้องการแก้ไขไฟล์เป็น root และใช้sudo vim somefile.confและฉันไม่สามารถใช้การโยงคีย์และการตั้งค่าและปลั๊กอินของฉัน

มีวิธีรับการปรับแต่งทั้งหมดของฉันเมื่อฉันต้องการแก้ไขเป็น root หรือไม่?

ฉันใช้ vim-plug สำหรับปลั๊กอินของฉัน


5
ในหมายเหตุด้าน: sudo vim fileเขียนได้ดีกว่าเป็นsudo -e file(โดยคุณต้องตั้งค่าตัวแปรสภาพแวดล้อมEDITOR=vim)
lcd047

@ lcd047: คุณควรแสดงความคิดเห็นนั้นเป็นคำตอบ
static_rtti

คำตอบ:


15

แทนที่จะเปิดเป็นกลุ่มเป็นรูทคุณสามารถบันทึกเป็นรูทได้โดยเปลี่ยนเส้นทางไปยังที นี่คือตัวอย่าง:

:w !sudo tee % > /dev/null

นี่อาจเป็นประโยชน์กับนามแฝงใน. vimrc ของคุณฉันใช้:Sw:

command! -nargs=0 Sw w !sudo tee % > /dev/null

4
นี้จะเป็นประโยชน์สำหรับI did a bunch of editing and then realized I should have used sudoeditแต่สำหรับกรณีทั่วไปผมจะแนะนำให้ใช้/sudo -e sudoedit
jamessan

7

สองสิ่ง:

  1. ใช้$ sudo -e fileในการแก้ไขด้วยfile $EDITORเพิ่มexport EDITOR=/path/to/vimถ้า$EDITORยังไม่ได้ตั้งค่า

  2. Going vanilla เป็นวิธีที่ยอดเยี่ยมในการต่อสู้กับการติดปลั๊กอินของคุณ


-1 สำหรับการแนะนำการกู้คืนปลั๊กอินการติดยาเสพติด (J / K, ไม่มี downvote จริง ๆ )
Robbie Wxyz

3
หมายเหตุว่านี้ไม่ได้ทำงานเป็นกลุ่มเป็นรากเช่นsudo vimไม่ การแก้ไขจะเกิดขึ้นในฐานะผู้ใช้ปกติของคุณจากนั้น sudo จะจัดการอัปเดตไฟล์ต้นฉบับ
jamessan

หมายเหตุ: มีสองตัวเลือกที่คล้ายกับsudo: และ-E หมายถึง "preserver environment" และนี่ไม่ใช่สิ่งที่คุณต้องการ ในทางกลับกันหมายถึง "ไม่เรียกใช้คำสั่ง แต่แก้ไขไฟล์ด้วยขั้นตอนที่กำหนด" -e-E-e
iksemyonov

3

ดูเหมือนว่าสิ่งที่คุณต้องทำคือ symlink root ~/.vimrcและ~/.vim/ของคุณ

เพียงเรียกใช้เป็นราก:

ln -s /home/<user>/.vimrc /root/.vimrc
ln -s /home/<user>/.vim/ /root/.vim/

และนั่นควรทำ!

(PS ฉันคิดออกตอนนี้และอยากจะแบ่งปันกับ noobs อื่น ๆ โปรดแจ้งให้เราทราบหากมีวิธีที่ดีกว่า)


1
ซึ่งมักจะทำให้เกิดปัญหาในการที่ไฟล์ vim ที่เกี่ยวข้องบางไฟล์จะถูกเขียนเป็นรูทในโฮมไดเร็กตอรี่ของคุณและต่อมาคุณจะพบข้อผิดพลาดในการพยายามรันการกำหนดค่า vim ของคุณในฐานะผู้ใช้ของคุณเอง
Caleb

0

หากคุณรู้ล่วงหน้าว่าคุณต้องแก้ไขไฟล์ในฐานะรูทให้ใช้คำสั่งsudoedit <file>หรือsudo -e <file>ให้คุณตั้งค่าในสภาพแวดล้อมพิเศษสำหรับการทำเช่นนั้นกับการตั้งค่าตัวแก้ไขตามปกติของคุณ มีการสร้างสำเนาของไฟล์และตัวแก้ไขของคุณจะเริ่มทำงานเพื่อแก้ไข เมื่อคุณออกจากไฟล์จะถูกคัดลอกกลับไปที่ตำแหน่งเดิมในฐานะรูท

นั่นเป็นวิธีที่ปลอดภัยและแนะนำ แต่ในกรณีที่ก) คุณไม่ทราบล่วงหน้าคุณจะต้องเขียนเป็น root หรือ b) ต้องการแก้ไขและบันทึกการเปลี่ยนแปลงที่เพิ่มขึ้นในสถานที่คุณจะต้องมีสิ่งอื่น ด้วยเหตุนี้การแก้ปัญหาที่ใช้sudo tee โดย smplนั้นถูกต้องแน่นอน แต่มีการปรับปรุงเล็กน้อยที่สามารถจัดการกับเคสแบบขอบได้ ความแตกต่างในการจัดการพร้อมท์รหัสผ่าน sudo โดยเฉพาะอย่างยิ่งใน GUI กับคอนโซลอินเตอร์เฟสนั้นน่าสนใจพอสมควร

วิธีที่ง่ายกว่าในการตั้งค่านี้คือการใช้ปลั๊กอินvim-eunuch มีปัญหานี้โดยเฉพาะและสิ่งที่มีประโยชน์อื่น ๆ รวมอยู่ในแพ็คเกจมือถือ :SudoWriteการใช้งานง่ายเหมือนการเรียก ฉันยังใช้การแมปการเข้าถึงที่สะดวกขึ้นเล็กน้อย:

cmap w!! call SudoWrite()

ที่ควรจะได้รับความสามารถในการเขียนไฟล์ใด ๆ :w!!ที่เป็นรากใช้


-1

ตัวเลือกอื่นคือการเรียกใช้sudo -E vim somefile.confเพื่อแก้ไขซึ่งจะรักษาสภาพแวดล้อมของคุณดังนั้นคุณ.vimrcและปลั๊กอินจะถูกใช้


เฮ้กลอุบายดี! นั่นเป็นวิธีที่มีประโยชน์สำหรับ Vi และคำสั่งอื่น ๆ มากมาย
Robbie Wxyz

3
สิ่งนี้มีผลข้างเคียงเหมือนกันที่เชื่อมโยงการกำหนดค่าของคุณเข้ากับโฮมไดเร็กตอรี่ของรูท: กล่าวคือการดำเนินการเป็นกลุ่มหรือปลั๊กอินที่เขียนข้อมูลสถานะจะทำในโฮมไดเร็กตอรี่ของคุณ ไฟล์เหล่านี้จะถูกรูทเป็นเจ้าของและจะทำให้เกิดข้อผิดพลาดในภายหลังเนื่องจากผู้ใช้ปกติของคุณจะไม่สามารถใช้งานได้ต่อไป
Caleb
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.