มีกรณีที่ vi เป็นตัวเลือกเท่านั้นหรือไม่?


22

มีสถานการณ์ที่viเป็นตัวเลือกเดียวในการสร้างแก้ไขหรือปรับเปลี่ยนไฟล์ในสภาพแวดล้อม Ubuntu หรือไม่?

คำถามของฉันนั้นเป็นจริงที่จะรู้ว่ามีกรณีที่ฉันถูกบังคับให้ใช้viเพราะมันจะเป็นตัวเลือกเดียวที่มีในกรณีเฉพาะในระบบนิเวศอูบุนตู

สามารถทำได้ที่มีอยู่โดยเฉพาะอย่างยิ่งกรณีที่ฉันอย่างใดจะไม่สามารถเข้าถึงตัวเลือกอื่น ๆ เช่นnano, picoหรือเพียงแค่การส่งข้อมูลด้วยเครื่องมือเช่นcat, sed, teeและอื่น ๆ ?

ฉันคิดว่านี่เป็นฝั่งเซิร์ฟเวอร์หรือคลาวด์มากกว่าบนเดสก์ท็อปมีตัวเลือกมากมาย แต่จากใครก็ตามที่ใช้เครื่องเทอร์มินัลฉันถามว่า:

มีกรณีเช่นนี้หรือไม่?



8
@Tim จริงvisudoสามารถใช้โปรแกรมแก้ไขใด ๆ เนื่องจากการกำหนดค่าเริ่มต้นบน Ubuntu นั้นคำนึงถึงEDITORและVISUALตัวแปรสภาพแวดล้อมคุณสามารถเรียกใช้sudo env VISUAL=emacs visudoสำหรับ emacs หรือแม้กระทั่งgksudo env VISUAL=gedit visudoสำหรับโปรแกรมแก้ไขกราฟิกเช่น Gedit ( sudo -Hหรือsudo -iอาจใช้แทนgksudo) ฉันแนะนำenvวิธีนี้เนื่องจากVISUAL=emacs sudo visudoไม่ทำงาน ( sudoรีเซ็ตสภาพแวดล้อมส่วนใหญ่) และsudo -EH อาจถือว่าไม่เหมาะสม
Eliah Kagan

3
vi เป็นตัวเลือกเดียว ... เมื่อ vi เป็นโปรแกรมแก้ไขเดียวที่คุณติดตั้งและคุณไม่ต้องการเสียเวลาในการติดตั้งโปรแกรมอื่น vi เป็นตัวเลือกที่ดีที่สุดเมื่อ vi เป็นโปรแกรมแก้ไขที่คุณรู้จัก / ชอบที่สุดในบรรดาที่มีอยู่และคุณไม่ต้องการใช้เวลาในการติดตั้งโปรแกรมที่คุณชอบมากกว่านี้ ไม่มีกรณีใดที่เครื่องมือเพียงเครื่องมือเดียวเท่านั้นที่สามารถแก้ปัญหาได้ อาจมีบางครั้งที่ตัวเลือกถูก จำกัด และบางคนชอบ vi (ไม่ใช่ฉัน. ฉันเป็นคนที่
กระตือรือร้น

3
cat? sed? จริงๆ? viไม่ซับซ้อนจริง ๆ และถ้าคุณไม่สามารถเรียนรู้ได้คุณต้องจำสองโหมด (โหมดปกติและโหมดแทรก) คุณเลื่อนเคอร์เซอร์ด้วยลูกศร (หรือ HJKL หากไม่มี) กด "i" เพื่อเริ่มแก้ไข (โหมดแทรก) เมื่อเสร็จแล้วกด "Esc" เพื่อกลับไปที่โหมดปกติ พิมพ์ ": wq" เพื่อบันทึกและออก (เขียน + เลิก)
sleblanc

2
เพียงแค่ดูดมันและเรียนรู้ vi :) มันไม่ยากอย่างที่มันปรากฏขึ้นครั้งแรกและเมื่อคุณรู้ว่าคุณจะไม่เสียเวลาในการตามล่าหาบรรณาธิการคนอื่น ๆ ในระบบใหม่ที่คุณใช้
JamesRyan

คำตอบ:


32

ภายในUbuntuระบบนิเวศฉันไม่คิดว่ากรณีนี้ยังสามารถอยู่เป็นviอย่างน้อยจะเป็นกลุ่มเล็ก ๆ ที่มีอยู่แล้ว“จริงvim” ห่างไกลจาก“ของจริงvi”.

ในบริบทของทรัพยากรที่ จำกัดระบบฝังตัวที่ไม่ปกติ Ubuntu คุณอาจเพียงแค่มีที่จะเปิดออกจะเชื่อมโยงไปยังvi busyboxและไม่เหลือพื้นที่ จากนั้นviเป็นตัวเลือกเดียว

นอกเหนือจากที่ผมคิดว่าสถานการณ์ที่viตัวเลือกเดียวที่มีไม่บ่อยมากที่ทุกคนในวันนี้แม้นอกโลกลินุกซ์

แต่อาจมีสถานการณ์ที่viเป็นตัวเลือกเดียวที่คุณสามารถวางแผนได้ตัวเลือกเดียวที่ certaily จะมีอยู่ในบางสถานการณ์ในอนาคต - ซึ่งจะเกิดขึ้นภายในห้องเซิร์ฟเวอร์เย็นเกินไปของลูกค้า

ลองนึกภาพคุณจะถูกเรียกโดยลูกค้า:

ลูกค้า:ฉันต้องแก้ไขการกำหนดค่านี้! ตอนนี้ !! ฉันไม่ทราบวิธี แต่ฉันสามารถบอกคุณได้ว่าไฟล์การกำหนดค่าอยู่ที่ไหน คุณสามารถช่วยฉันได้ไหม!?!

คุณ:โอเคระบบแบบไหนที่ทำงานอยู่

ลูกค้า:โอ้มันอยู่บนเซิร์ฟเวอร์ foohhh ... กำลังทำงาน ... จำไม่ได้บางสิ่งที่มี "ix" ในตอนท้ายหรืออาจเป็น "ux" ...

ไม่มีปัญหาตอนนี้คุณรู้ว่าจะมีvi!


1
ฉันทำงานเป็นส่วนตัวกับระบบฝังตัวจำนวนมากที่มีเพียง vi เป็นตัวแก้ไขข้อความฉันเชื่อว่า buildroot และ yocto ทั้งคู่เป็นตัวแก้ไขเพียงอย่างเดียวเมื่อใช้ตัวเลือกการกำหนดค่าขั้นต่ำ เป็นที่ยอมรับว่านี่ไม่ใช่ปัญหาของอูบุนตู แต่ถ้าคุณเป็นนักพัฒนาที่ฝังตัวนี่อาจเป็นปัญหาจริง อย่างไรก็ตามคุณสามารถทำตามที่ OP บอกว่าใช้เครื่องมือที่ใช้ท่อเช่น sed, sort, grep และเช่นนี้อย่างไรก็ตามอาจเป็นเรื่องที่เจ็บปวดมาก
Vality

busyboxกรณีย่อมเป็นหนึ่งที่ดี มีอะไรน่ารำคาญเกี่ยวกับมันฉันไม่คิดว่ามันจะเป็นviเต็ม(อย่างน้อยก็ไม่ใช่ทศวรรษที่ผ่านมาและฉันหวังว่าพวกเขาจะไม่บวมขึ้นแม้ว่ามันจะน่ารำคาญ)
hyde

1
busybox viคือ 4k lines:; curl -s https://gitorious.org/busybox/busybox/raw/1c7a58dfb82ea04c525e0c19f94f2d800dee99e3:editors/vi.c | wc)
Volker Siegel

17

Vi ไม่ได้เป็นทางเลือกเดียว คุณสามารถใช้edแทนได้เสมอ


8
ในซุ้มลินุกซ์, ตัวอย่างเช่นไม่ใช่ส่วนหนึ่งของed base
muru

@muru FWIW vimไม่ใช่อย่างใดอย่างหนึ่ง
Sparhawk

4
@Sparhawk viคือ
muru

@muru Ah ใช่แน่นอน ฉันสับสนตัวเอง
Sparhawk

edเป็นเพียงส่วนหนึ่งของการstandard^ติดตั้ง หากคุณทำการminimalติดตั้งedจะไม่รวมอยู่
Oli

13

มีกรณีหนึ่งที่คุณต้องการviแก้ไขให้สมมติว่า:

  • ไม่มีส่วนต่อประสานกราฟิก
  • คุณอยู่ใน*nixระบบที่ไม่รู้จักแปลก ๆ
  • เทอร์มินัลของคุณมีลักษณะดังนี้:

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

  • คุณมีผู้ชายแบบนี้มากพอ:

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

ที่คุณสามารถดูมีไม่มีปุ่มกดตัวเลข กับเก่าvi(และผมหมายถึงต้นฉบับดั้งเดิมviไม่vim, vim.tinyหรือvim.basic) คุณสามารถแก้ไขไฟล์ที่มีแป้นพิมพ์นี้ โดยไม่ต้องปุ่มลูกศร ? ใช่เมื่อคุณอยู่ในโหมดคำสั่งที่คุณเดินผ่านไฟล์ด้วยh, j, kและl, อย่างมืออาชีพ hเหลือjอยู่ลดลงkเพิ่มขึ้นและlถูกต้อง


5
ฉันคิดว่าคำตอบนี้ไม่ได้เลวร้ายจริงๆ (แป้นพิมพ์ที่เหมือนเครื่องพิมพ์ดีดไม่ใช่สิ่งที่ไม่น่าจะเกิดขึ้นได้) แต่จริงๆแล้วนั่นไม่ได้หมายความว่าคุณต้องการviโดยเฉพาะ เครื่องมือแก้ไขข้อความเก่าทั้งหมดมีคีย์ผสม "สำรองข้อมูล" ที่ให้คุณทำงานได้โดยไม่ต้องมีปุ่มลูกศร ฯลฯ แต่ฉันก็กล้าที่viจะเป็นเครื่องมือแก้ไขเดียวที่คุณจะไม่พลาดปุ่มลูกศร
leftaroundabout

ค่อนข้างปิดหัวข้อ: ผมไม่เห็นเหตุผลที่คุณจะต้องมีปุ่มกดตัวเลขสำหรับการใด ๆแก้ไขข้อความและปุ่มลูกศรจะไร้ประโยชน์ในกลุ่มอยู่แล้ว : P
Doorknob

1
เฮ้อย่าทำส่วนลดเก่า ๆed! ไม่จำเป็นต้องมีลูกเล่น "ภาพ" เหล่านี้ในระบบเช่นนั้น! เพียงลองใช้เสียงเรียกเข้าบนหน้าจอเทอร์มินัลกระดาษและดูวิธีการที่คุณจัดการ ... อย่างจริงจังยิ่งขึ้นการรู้ว่าedมีประโยชน์อยู่ดีมันเป็นตัวเลือกที่เหมาะสมเมื่อต้องแก้ไขสคริปต์
hyde

วิธีการทำคุณสลับไปยังโหมดคำสั่งที่มีแป้นพิมพ์ที่ (ผมไม่เห็นการหลบหนี; อยู่ที่นั่นอีกคำสั่งผสมที่สำคัญสำหรับที่?)
Foon

@Foon มีรหัสกุญแจ =) เป็นตำแหน่งที่แท็บควรเป็น ด้านซ้ายของปุ่ม Q -key
ความสับสนวุ่นวาย

6

ข้อเท็จจริงของเรื่องก็คือว่าในการแก้ไขการกระจายจำนวนมากเช่นnanoและpicoก็ไม่ได้มาตรฐานในขณะที่แพคเกจอื่น ๆ คือvim-tinyมี ดูที่นี่สำหรับรายชื่อแพคเกจของอูบุนตู-น้อยที่สุดvim-tinyเป็นบรรณาธิการเท่านั้น ตามคำตอบนี้ดูเหมือนว่าจะเป็นกรณีสำหรับเซิร์ฟเวอร์ Ubuntu เช่นกัน ฉันรู้ว่านี่เป็นกรณีสำหรับฐาน Debian, Fedora เช่นกัน

ที่ถูกกล่าวว่าให้ถ้าคุณมีnanoในระบบของคุณฉันยังไม่เห็นกรณีที่คุณต้องใช้viแทน แต่เล่นคำตอบของ @ Volker ถ้าคุณทำงานให้กับลูกค้าและไม่มี เข้าถึงรูตหรือไม่ apt-get install nanoจะไม่ทำคุณดีมาก (ถ้ามันยังมีการเข้าถึงอินเทอร์เน็ตภายนอก!)


4

มีหลายกรณีที่vi(และโดยที่ฉันหมายถึงโดยธรรมชาติvim.tinyเพราะนั่นคือสิ่งที่เราจัดส่ง) อาจเป็นบรรณาธิการแบบโต้ตอบเท่านั้น หากเราไม่สนใจผีเสื้อและรังสีคอสมิกสิ่งเหล่านี้น่าจะเป็นโอกาสที่จะเกิดขึ้น:

  • คุณใช้ubuntu-minimalเมตาแพ็คเกจเท่านั้น ขึ้นอยู่กับvim-tiny แต่ไม่มีบรรณาธิการคนอื่น ฉันไม่สามารถหาวิธีติดตั้ง Ubuntu ได้ในขณะนี้โดยที่ไม่ต้องstandard^ทำงาน แต่คุณสามารถลบมันออกหลังจากติดตั้งด้วย:

    sudo apt-get remove $(apt-cache show standard^ | awk '/Package: / {print $2}')
    

    ฉันมีประสบการณ์ส่วนตัวที่ฉันส่งอิมเมจระบบโดยไม่standard^ติดตั้งงาน หากฉันไม่ได้มีการเข้าถึงเครือข่ายviจะเป็นตัวเลือกเดียวของฉัน

  • การ chrooting ในสภาพแวดล้อมที่แมปviผ่านเท่านั้น

  • ด้วยตนเอง nuking บรรณาธิการอื่น ๆ ทั้งหมด (และปิดการใช้งานวิธีการติดตั้งพวกเขา)

  • ทำลายเชลล์ด้วยตัวเองเพื่อหยุดบรรณาธิการที่รู้จักยกเว้นviเปิดตัว

การติดตั้งที่น้อยที่สุดอย่างแท้จริงจะเป็นสาเหตุที่น่าจะเป็นไปได้มากที่สุด แต่สิ่งเหล่านี้หายากในสมัยนี้ VPS และ บริษัท โฮสติ้งบนคลาวด์บางแห่งใช้พวกเขา (เพื่อประหยัดพื้นที่ดิสก์มากเท่าที่อื่น) แต่ฉันอยากจะแนะนำว่าพวกเขาไม่ใช่บรรทัดฐานแน่นอน


คำตอบที่ยอดเยี่ยมเช่นเคย ฉันคิดว่ามันมีความรู้มาก
Luis Alvarado

2

ในกรณีที่คุณไม่สามารถติดตั้ง emacs หรือในกรณีที่คุณต้องการแก้ไขไฟล์กำหนดค่าเพื่อให้คุณสามารถติดตั้ง emacs ได้ :-P


หรือในกรณีที่คุณต้องการใช้โปรแกรมแก้ไขขั้นสูงที่ดีกว่า emacs ( คิวโฆษณา ): P
Doorknob

3
แน่นอนถ้าคุณใช้ Ubuntu คุณมีระบบปฏิบัติการอยู่แล้วดังนั้น emacs จะซ้ำซ้อน: v
evilsoup

เฮ้ comback ดี :-p
Craig

2

หลายคน (ส่วนใหญ่?) viไม่ว่างกล่องมีเพียงการติดตั้ง

มันไม่ได้เป็นอูบุนตูเฉพาะเจาะจง แต่มันเป็นเรื่องจริงของอุปกรณ์ฝังตัวหลายตัว


2

มีแมวหัวหางอยู่เสมอดังนั้นฉันไม่แน่ใจว่ามีระบบที่คุณไม่มีทางเลือกอื่น แต่เป็นไปได้ที่จะหาระบบที่ไม่มีทางเลือกที่ดีกว่าแม้ว่าคุณจะชอบ emacs

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


1
และแน่นอนว่าเป็นผีเสื้อเก่าแก่ที่ดี!
leftaroundabout

2

นี่เป็นกรณีที่เสียงเรียกเข้าเป็นเพียงตัวเลือกเดียวภายในระบบนิเวศของ Ubuntu: Ubuntu Snappyไม่มีตัวแก้ไขข้อความอื่นนอกเหนือจากvim-tinyนี้ อาจจะมีในอนาคตอาจมีหนึ่ง แต่ไม่เป็นของ 2015-16 หากคุณกำลังจะต้องใช้อูบุนตูเร็วกว่าคอนโซลอนุกรมหรือ SSH vimคุณดีขึ้นได้เตรียมที่จะใช้


0

ฉันเข้าสู่สถานการณ์ทันทีที่ linemode ของ vi ใช้งานได้เท่านั้น บางสิ่งบางอย่างเกี่ยวกับการทำให้คำจำกัดความของเทอร์มินัลเป็นจริง โดยทั่วไปจะใช้ vi ใน linemode เท่านั้น (ซึ่งจะทำงานเหมือนปกติ vi หากคุณแกล้งทำว่าคุณมีเทอร์มินัล 1 บรรทัด), ex และ ed กำลังจะทำงานเพราะคำจำกัดความของเทอร์มินัลเพียงอย่างเดียวคือ "dumb"

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