คำถามติดแท็ก original-vi

2
อะไรคือความแตกต่างระหว่าง: wq <cr>: x <cr> และ ZZ เมื่อออกเป็นกลุ่ม?
Vi และ Vim ทุกคนรู้มีคำพ้องความหมายมากมาย มีสามวิธีที่ฉันรู้ในการบันทึกไฟล์และออกจาก Vim และ Vi เหล่านี้คือ: WQ &lt;CR&gt; , : x &lt;CR&gt;และZZ ฉันเคยได้ยินว่าสิ่งเหล่านี้มีความแตกต่างในบางวิธี มีความแตกต่างในทางปฏิบัติระหว่างการใช้: :x&lt;cr&gt; :wq&lt;cr&gt; หรือ ZZ จะบันทึกไฟล์และออกจาก Vim และ Vi ได้อย่างไร

2
ทำไม Y จึงเป็นคำพ้องความหมายสำหรับ yy แทนที่จะเป็น y $
มีเหตุผลทางประวัติศาสตร์ที่เฉพาะเจาะจงสำหรับสิ่งนี้หรือไม่? ความเป็นมา - (คุณสามารถข้ามส่วนนี้ได้หากคุณเข้าใจคำถามนี้ไปแล้ว) ในฐานะที่เป็นสื่อกลาง / ขั้นสูงviผู้ใช้จะรู้ว่าyคือ "งัดคำสั่ง" มัน yanks (สำเนา) ข้อความที่ระบุโดยคำสั่งการเคลื่อนไหวต่อไป. * ดังนั้นyeyanks ไปยังจุดสิ้นสุดของคำ, y0yanks จากตำแหน่งเคอร์เซอร์ไปยังจุดเริ่มต้นของบรรทัดy_ดึงเส้นปัจจุบันทั้งหมดy$ออกจากตำแหน่งเคอร์เซอร์จนถึงจุดสิ้นสุดของบรรทัดปัจจุบันเป็นต้น dคำสั่ง (ลบ) และcคำสั่ง (เปลี่ยนแปลง) ทั้งสองจะสามารถนำมาใช้กับทุกการเคลื่อนไหวเหล่านี้เช่นกัน ddเป็นคำพ้องสำหรับd_และลบบรรทัดปัจจุบันทั้งหมด ในทำนองเดียวกันccก็เป็นคำพ้องความหมายสำหรับc_และจะเปลี่ยนบรรทัดปัจจุบัน (เช่นมันจะลบข้อความทั้งหมดและทำให้คุณอยู่ในโหมดแทรกที่จุดเริ่มต้นของบรรทัด). ** คำสั่ง "กระชาก" เป็นไปตามอนุสัญญานี้ จะงัดบรรทัดปัจจุบันทั้งหมดเช่นเดียวกับyyy_ มีอีกหนึ่งชุดของคำพ้องความหมาย: Dเป็นคำพ้องความหมายสำหรับd$และจะลบจากตำแหน่งเคอร์เซอร์ไปยังจุดสิ้นสุดของบรรทัด Cเป็นคำพ้องความหมายc$และจะเปลี่ยนข้อความจากตำแหน่งเคอร์เซอร์เป็นจุดสิ้นสุดของบรรทัดวางคุณในโหมดแทรกเพื่อพิมพ์ข้อความใหม่ อย่างไรก็ตามYเป็นคำพ้องความหมายอื่นสำหรับyyหรือy_และจะดึงทั้งบรรทัดไม่ใช่เฉพาะจากเคอร์เซอร์จนถึงท้ายบรรทัดตามที่คุณคาดหวังจากCและDรูปแบบ ฉันเข้าใจว่าใน Vim มันถูกเก็บไว้เป็นวิธีนี้เพื่อรักษาความเข้ากันได้ย้อนหลังกับviตามที่กล่าวไว้ในความช่วยเหลือ Vim ภายใต้:help Y: หากคุณต้องการให้ "Y" ทำงานจากเคอร์เซอร์จนถึงจุดสิ้นสุดของบรรทัด (ซึ่งมีเหตุผลมากกว่า แต่ไม่รองรับ Vi) ให้ใช้ ": map Y …

5
ความแตกต่างที่ใหญ่ที่สุดระหว่าง Vim และ VI
วันนี้ฉันตัดสินใจลอง Vi แทน Vim ฉันต้องการเห็นความแตกต่าง ฉันไม่ได้สังเกตเห็นความแตกต่างเลยสิ่งที่ยิ่งใหญ่ที่สุดที่ฉันสังเกตเห็นคือวิธีที่ Vi ไม่ได้พูด-- INSERT --เมื่อฉันเข้าสู่โหมดแทรกและมีความแตกต่างเล็กน้อยของอินเทอร์เฟซ ทำให้ฉันสงสัยว่าอะไรคือความแตกต่างที่ใหญ่ที่สุดระหว่าง Vi และ Vim?

2
ความสัมพันธ์ระหว่าง vi, nvi และ vim คืออะไร?
เมื่อวันที่ UNIXes nviบางบางครั้งผมพบว่าคำสั่งที่มีชื่อว่า มันเป็นโปรแกรมแก้ไขแบบ vi โดยไม่ต้องใช้ฟังก์ชั่นมากนัก อาจจะเป็นทางแยกของเก่าviหรือ ยังไงกันviเวอร์ชั่นไหนเป็นเวอร์ชั่นที่แตกต่างจากคนอื่น ๆ พวกเขามี "ต้นไม้ครอบครัว" คล้ายกับยูนิกซ์หรือไม่?

2
แก้ไขปุ่มลูกศรที่แสดง A, B, C, D ใน vi (ไม่ใช่ในกลุ่ม)
ฉันรู้ว่าในกลุ่มฉันสามารถเพิ่มได้ set nocompatible ใน.vimrcเพื่อหลีกเลี่ยงปุ่มลูกศรที่แสดง A, B, C, D ในโหมดแทรก แต่ฉันใช้ vi เวอร์ชัน 4.0 (gritter) 12/25/06 ฉันจะได้รับพฤติกรรมเดียวกันได้อย่างไร == แก้ไข == (1) ฉันใช้รุ่น vi จาก Arch Linuxซึ่งสร้างจากที่เก็บ CVSนี้(ส่งมอบครั้งล่าสุด 24 กุมภาพันธ์ 2550) ด้วยคำสั่งต่อไปนี้: make PREFIX=/usr LIBEXECDIR=/usr/lib/ex PRESERVEDIR=/var/lib/ex \ TERMLIB=ncurses FEATURES="-DCHDIR -DFASTTAG -DUCVISUAL -DMB -DBIT8" และวิทยานิพนธ์สามแพทช์: การแก้ไข tubesize-สั้น overflow.patch , navkeys.patchและรักษา-dir.patch == แก้ไข (2) …

3
ฉันสามารถยกเลิกหลาย ๆ ครั้งใน nvi และ / หรือ vi เดิมได้หรือไม่
บางครั้งฉันอยู่ในระบบที่ไม่มี Vim และใช้ค่าเริ่มต้นnvi(ระบบ BSD) หรือดั้งเดิมvi(Arch Linux) ค่อนข้างมีความแตกต่างน้อยมี แต่แกล้งใหญ่ที่สุดคือว่าผมสามารถยกเลิก เฉพาะการดำเนินงานที่ผ่านมาของฉัน การกดuครั้งที่สองทำงานเป็น "ทำซ้ำ" มีวิธีการทำงานนี้หรือไม่?

1
ต้นกำเนิดของคำว่า "งัด" คืออะไร?
ฉันสนใจที่จะเรียนรู้ว่าคำว่างัดได้รับชื่ออย่างไร ฉันสนใจด้วยเช่นกันว่าทำไม Vi / Vim "ดึง" แตกต่างจาก Emacs "ดึง" ดูเพิ่มเติม: คำถามเดียวกันใน Unix &amp; Linux ; คำถามที่สองเกี่ยวกับ Emacs

2
ใช้คำสั่ง ex เพื่อตรวจสอบว่าสองบรรทัดเหมือนกันหรือไม่
ผมกำลังมองไปที่คำถามนี้แล้วสงสัยว่าผมอาจจะใช้คำตอบของฉันซึ่งใช้ sedใช้อย่างหมดจด POSIX ex เคล็ดลับคือในขณะที่sedฉันสามารถเปรียบเทียบพื้นที่พักกับพื้นที่รูปแบบเพื่อดูว่าพวกเขาจะเทียบเท่า (กับ G;/^\(.*\)\n\1$/{do something}) ฉันรู้วิธีที่จะทำแบบทดสอบexไม่ ฉันรู้ว่าในกลุ่มที่ฉันสามารถYank บรรทัดแรกแล้วพิมพ์ :2,$g/&lt;C-r&gt;0/dไปเกือบจะทำในสิ่งที่ผมระบุ แต่ถ้าบรรทัดแรกมีอะไร แต่ข้อความตัวเลขและตรงไปตรงมามากนี้จะกลายเป็นไม่แน่นอนแน่นอนเนื่องจากสายจะถูกทิ้งในเป็น regexไม่ใช่แค่สตริงสำหรับการเปรียบเทียบ (และหากบรรทัดแรกมีเครื่องหมายทับหน้าส่วนที่เหลือของบรรทัดจะถูกตีความเป็นคำสั่ง!) ดังนั้นหากฉันต้องการลบทุกบรรทัดในmyfileที่เหมือนกันกับบรรทัดแรก - แต่ไม่ลบบรรทัดแรก - ฉันจะทำเช่นนั้นได้exอย่างไรโดยใช้? สำหรับเรื่องนั้นฉันจะใช้มันได้viอย่างไร มีวิธี POSIX ในการลบบรรทัดหรือไม่หากตรงกับอีกบรรทัดหนึ่ง? บางทีบางอย่างเช่นไวยากรณ์ในจินตนาการ: :2,$g/**lines equal to "0**/d
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.