Vi & Vim

คำถามและคำตอบสำหรับผู้ที่ใช้ตระกูล vi และ Vim ของเครื่องมือแก้ไขข้อความ

3
การเรียนรู้เสียงเรียกเข้าหลังจาก vimtutor
สิ่งที่ขั้นตอนต่อไปเพื่อการเรียนรู้เป็นกลุ่มที่ควรจะเป็นหลังจากเสร็จสิ้นvimtutor? ฉันได้ดูวิดีโอบน YouTube แล้วอ่านบทช่วยสอนออนไลน์และคำถาม / คำตอบเกี่ยวกับ SE และฉันกำลังอ่านVim ที่ใช้งานได้จริง มีแหล่งข้อมูลที่ดีอื่น ๆ อีกหรือไม่ การฝึกฝนและใช้ Vim จริง ๆ ไม่ใช่เพียงแค่ดู / อ่านเกี่ยวกับมันเท่านั้นเป็นวิธีที่ดีในการเรียนรู้ คำแนะนำเกี่ยวกับวิธีที่ดีที่สุดในการใช้ระบบช่วยเหลือในตัวเพื่อเรียนรู้กลุ่ม? PS: แม้ว่าคำถามนี้เกี่ยวกับ SO ถูกปิดเพราะไม่ได้อยู่ในหัวข้อ แต่คำตอบหลายข้อนั้นดูมีประโยชน์ PPS: ฉันใช้เป็นกลุ่มเมื่อหลายปีก่อนย้ายไปที่ Emacs สำหรับ Org-Mode และตอนนี้ฉันกลับไปเป็นกลุ่ม :)

4
วิธีการแทนที่คำด้วยคำที่ถูกดึงในโหมดปกติ
เมื่อฉันต้องแทนที่คำด้วยคำอื่นที่ฉันดึงมาก่อนฉันมักจะใช้เวิร์กโฟลว์ที่ดูเหมือนผิดธรรมชาติสำหรับฉัน: สมมติว่าฉันมีข้อความนี้: foo bar buzz และฉันต้องการดึงfooและแทนที่barด้วยสิ่งที่ฉันดึงมาก่อน หลังจาก yanking fooฉันเห็นตัวเลือกต่อไปนี้: ตัวเลือกที่ 1 วางเคอร์เซอร์barด้วยw ใส่fooด้านหน้าbarด้วยP วางเคอร์เซอร์ที่ส่วนbที่เหลือbarและลบคำด้วยde ตัวเลือก 2 วางเคอร์เซอร์บนแถบด้วย w ใช้deเพื่อลบbar ใส่เนื้อหาของการลงทะเบียน 0 ด้วย"0P(ตั้งแต่ผมลบbar, fooไม่สามารถเข้าถึงได้อีกต่อไปด้วยง่ายp) ทั้งสองวิธีดูซับซ้อนเกินไปสำหรับฉันและฉันแน่ใจว่ามีวิธีที่มีประสิทธิภาพมากขึ้นในการบรรลุการกระทำนี้ แต่ฉันไม่สามารถหาวิธีได้ pความคิดนี้จะรวมการลบและการกระทำที่ใส่ในเพียงหนึ่งหรืออย่างน้อยหลีกเลี่ยงที่จะให้คำลบในงัดลงทะเบียนเพื่อที่ฉันสามารถใส่คำที่ต้องการด้วยง่าย ฉันรู้ว่าโหมดการแทนที่ถูกกระตุ้นด้วยRแต่มันไม่อนุญาตให้ใส่สิ่งที่ถูกกระชาก TL : DR : วิธีแทนที่คำด้วยเนื้อหาของ yank register ได้อย่างไร

2
การเน้นไวยากรณ์ของ Vim จะถือว่า lambda (->) ใน Java เกิดข้อผิดพลาด
ฉันใช้ Vim เป็นโปรแกรมใน Java 8 และมีปัญหากับการเน้นไวยากรณ์ คุณลักษณะใหม่ในชวา 8 ->คือการสนับสนุนแลมบ์ดาซึ่งมีผลในการสร้างผู้ประกอบการลูกศร: Vim ไม่รู้จักว่านี่เป็นตัวดำเนินการที่ถูกต้องในไฟล์ * .java ด้วยเหตุนี้จึงไฮไลต์โอเปอเรเตอร์นี้เป็นสีแดงสดเพื่อดึงความสนใจไปที่ (แน่นอนว่านี่เป็นไวยากรณ์ที่ถูกต้องจริงๆ) มีวิธีในการอัปเดต "พจนานุกรม" ของ Vim ของผู้ให้บริการที่ได้รับอนุญาตและ / หรือแก้ไขการเน้นไวยากรณ์เพื่อหลีกเลี่ยงปัญหานี้หรือไม่? สอง:versionสถานะแรก: VIM - Vi IMproved 7.4 (2013 10 ส.ค. รวบรวม 2 ม.ค. 2014 19:39:32) แพตช์รวม: 1-52

6
ฉันจะสนุกกับ Vim ได้อย่างไร? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Vi และ Vim Stack Exchange ปิดให้บริการใน3 ปีที่ผ่านมา ฉันรักที่เป็นกลุ่ม ฉันใช้ชีวิตทั้งชีวิตโดยใช้มัน: ที่ทำงานฉันพัฒนาโค้ดด้วย Vim ฉันจะแก้ไขไฟล์ปรับแต่งด้วยฉันเขียนอีเมลด้วย ที่บ้านฉันเขียนรายการสิ่งที่ต้องทำและรายการถังของฉันด้วย ในเวลาว่างของฉันฉันเขียนหนังสือ ฉันไปพบปะเกี่ยวกับกลุ่มและฉันพยายามที่จะโน้มน้าวให้ทุกคนที่ผมรู้ว่าจะใช้มัน( แต่น่าเสียดายที่คุณยายของฉันไม่เห็นว่าเธอควรจะใช้มันเพื่อตัวอักษรเขียนไปยังเพื่อน ๆ ของเธอ) ด้วยความรักที่มีให้กับบรรณาธิการที่รักของเราทั้งหมดนี้ฉันกำลังเผชิญกับปัญหาใหญ่: ในฐานะมนุษย์ที่บัญญัติขึ้นตามปกติบางครั้งฉันก็ต้องการที่จะผ่อนคลายและสนุก โดยธรรมชาติแล้วฉันต้องการที่จะทำเช่นนั้นในเครื่องมือแก้ไขที่เคร่งศาสนาของเรา แต่ฉันไม่รู้ว่าฉันจะทำสิ่งนั้นได้อย่างไร แน่นอนว่าฉันใช้เวลาหลายชั่วโมงในการปรับแต่งโทนสีของฉันและการเขียนมาโครแบบเรียกซ้ำที่ฉันดูเป็นเวลานาน แต่หลังจากหกถึงเจ็ดชั่วโมงมันไม่สนุกเลย ดังนั้นฉันจึงโทรหาคุณเพื่อน Vimmers: ฉันจะสนุกกับ Vim ได้อย่างไร? แก้ไขโพสต์นี้เห็นได้ชัดว่าคนโง่ของเมษายน(แน่นอนรักยายของฉันที่จะใช้เป็นกลุ่ม) ขอบคุณสำหรับคำตอบและความคิดเห็นของคุณมีการแนะนำแนวคิดที่เจ๋ง ๆ ให้ฟัง
25 vimscript 

7
วิธีย้ายบล็อกข้อความได้เร็วขึ้น
นี่คือวิธีที่ฉันมักจะคัดลอกบล็อกข้อความหรือรหัส: เลือกบล็อกด้วยโหมด Visual ( V) และลบด้วย d; ddหรือถ้ามันเป็นเพียงบรรทัดเดียวใช้เพียง ไปที่ที่ฉันต้องการให้เป็นข้อความฉันโง่เกินกว่าที่จะจดจำความแตกต่างระหว่างpและPดังนั้นฉันจึงได้รับสิทธิ์นี้ประมาณ 50% ของเวลา (ถ้าฉันทำผิด: เลิกลองใหม่อีกครั้ง) บางครั้งการเยื้องต้องปรับดังนั้นฉันไปที่โหมด Visual Vอีกครั้งและเลือกบล็อกเดียวกันอีกครั้งและใช้>หรือ <เพื่อแก้ไข มีวิธีที่ง่ายกว่านี้ไหม? ในบรรณาธิการบางคนฉันเห็นว่าคุณสามารถ "หยิบ" บล็อกข้อความเหมือนเดิมและเลื่อนไปมาได้ นี่คือตัวอย่างจาก Emacs (แต่ฉันเคยเห็นสิ่งนี้ในบรรณาธิการอื่น ๆ ): หรืออาจมีวิธีอื่น (ดียิ่งขึ้น)

1
เรียกใช้ฟังก์ชัน Vim แบบเงียบ ๆ
ฉันเขียนฟังก์ชัน Vim เล็กน้อยที่เลื่อนเคอร์เซอร์ไปที่อักขระตัวแรกของบรรทัดปัจจุบัน หากเคอร์เซอร์อยู่บนอักขระตัวแรกอยู่แล้วเคอร์เซอร์จะถูกย้ายไปที่คอลัมน์แรกแทน " Jump to first character or column noremap H :call FirstCharOrFirstCol()<cr> :function! FirstCharOrFirstCol() : let current_col = virtcol('.') : normal ^ : let first_char = virtcol('.') : if current_col == first_char : normal 0 : endif :endfunction ฉันจะเรียกฟังก์ชั่นนี้อย่างเงียบ ๆ ได้อย่างไร? ฉันต้องการ ': โทร FirstCharOrFirstCol ()' ไม่ปรากฏในบรรทัดสถานะ …
25 vimscript 

4
อะไรคือความแตกต่างระหว่างส่วนย่อยของกลุ่มตัวอย่าง?
มีปลั๊กอินตัวอย่างจำนวนมากสำหรับ vim: ultisnips , snipmate , xptemplate , neosnippetและอีกมากมาย พวกเขาทั้งหมดมีข้อดีข้อเสียและการพึ่งพามากหรือน้อย จนถึงตอนนี้ฉันใช้ ultisnips แต่ก็ไม่เคยพอใจมันเลย เนื่องจากเรามีคำถามที่น่าสนใจและสมบูรณ์เกี่ยวกับตัวจัดการปลั๊กอินฉันคิดว่ามันมีประโยชน์มากที่จะมีคำอธิบายเกี่ยวกับตัวอย่างของปลั๊กอิน มีรายชื่ออยู่ที่นี่ซึ่งอาจเป็นการเริ่มต้นที่ดี แต่คำตอบที่สมบูรณ์ชัดเจนและ precises เนื่องจากชุมชนของเราสามารถเขียนได้จะมีประโยชน์มาก

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

1
วิธีการพับข้อความในไฟล์ JSON?
ฉันมีไฟล์ JSON ขนาดใหญ่ มันไม่ง่ายที่จะทำงานกับไฟล์ทั้งหมดในเวลา ฉันต้องการพับเนื้อหาบางส่วนเพื่อให้สามารถทำงานกับส่วนของไฟล์ JSON ได้ เช่น: { obj: {+}, // folded section obj:{ // unfolded section } } เป็นไปได้ไหมที่จะพับโครงสร้าง JSON ในกลุ่ม?
25 gvim  folding 

1
ปิดใช้งาน <Esc> แต่เก็บ <C - [>
&lt;Esc&gt;สำหรับการเปลี่ยนกลับจากโหมดแทรกฉันใช้ ตอนนี้ฉันกำลังมองหาที่จะฝึกตัวเองให้แทน&lt;C-[&gt; &lt;Esc&gt;เพื่อที่ฉันจะต้องปิดการใช้งาน&lt;Esc&gt;เพื่อช่วยในการอบรมขึ้นใหม่ ปัญหาคือ :inoremap &lt;Esc&gt; &lt;Nop&gt; &lt;C-[&gt;ยังพิการ สำหรับเสียงเรียกเข้าพวกเขาดูเหมือนจะเป็นสิ่งเดียวกัน มีวิธีการปิดการใช้งานอย่างใดอย่างหนึ่งโดยไม่ต้องอื่น ๆ ?

4
ฉันจะทำงานกับการแยกใน Vim โดยไม่มี Ctrl-W ได้อย่างไร
เทอร์มินัลของฉันไม่อนุญาตให้ฉันพิมพ์Ctrl+ Wเนื่องจากเป็นทางลัดในการปิดแท็บเทอร์มินัล ผมชอบทำงานกับแยก C-Wแต่ฉันไม่สามารถหาวิธีที่จะทำได้โดยไม่ต้องใช้ใด นี้บังคับให้ฉันใช้แท็บเพราะผมสามารถสลับระหว่างพวกเขาด้วยgt, gTหรือ#gtที่ # เป็นจำนวน แต่ฉันพบนี้สะดวกน้อยกว่าแยกเป็นฉันเท่านั้นที่สามารถดูเนื้อหาของไฟล์เดียวในเวลา ฉันไม่สามารถใช้งานmouse=aได้เนื่องจากเทอร์มินัลของฉันไม่รองรับ ฉันจะทำงานกับการแยกใน Vim โดยไม่มีCtrl+ Wคอมโบได้อย่างไร

6
วิธีการกลับคำสั่งของเส้น?
ฉันจะกลับลำดับของบรรทัดเพื่อให้บรรทัดแรกปรากฏที่ท้ายและบรรทัดสุดท้ายปรากฏขึ้นได้อย่างไร (อาจเป็นทุกบรรทัดในบัฟเฟอร์ช่วงที่อยู่หรือการเลือกโหมดการแสดงผล linewise) ฉันต้องการที่จะแปลง rat ox tiger ⋮ dog pig เข้าไป pig dog ⋮ tiger ox rat โดยไม่ต้อง resorting tacคำสั่งภายนอกเช่น

5
เลิกทำเฉพาะหน้าต่าง
พิจารณากรณีและปัญหาด้วยการแยกหลายรายการในหน้าต่าง เป็นกลุ่มช่วยให้ได้อย่างรวดเร็ว "การเพิ่ม" &lt;C-W&gt; oแยกปัจจุบันจะใช้เวลาถึงหน้าต่างทั้งหมดผ่านทาง มีวิธีที่จะเป็นกลุ่มเพื่อ "จำ" แยกที่มีอยู่ก่อนและกลับสู่สถานะนี้หลังจากดำเนินการ&lt;C-W&gt; o? แก้ไข: เพื่อชี้แจงฉันกำลังมองหาวิธีการทำเช่นนี้โดยไม่ต้องใช้ปลั๊กอินของบุคคลที่สาม
24 split 

1
วิธีแก้ไขไฟล์แบบไม่โต้ตอบ (เช่นในไพพ์ไลน์)?
ฉันต้องการแก้ไขไฟล์ที่ส่งผ่านไปป์ไลน์โดยใช้ vim แบบไม่โต้ตอบหรือแก้ไขไฟล์ในตำแหน่ง (คล้ายกับsed) ตัวอย่างการใช้sed: $ sed -i'.bak' s/foo/test/g file # Edit file in-place. $ cat file | sed s/foo/test/g # Parse file in pipeline. อย่างไรก็ตามฉันสามารถอ่านที่นี่ว่า: sedเป็นS tream ED itor ไม่ใช่ตัวแก้ไขไฟล์ อย่างไรก็ตามผู้คนทุกที่มีแนวโน้มที่จะละเมิดมันสำหรับพยายามแก้ไขไฟล์ มันไม่ได้แก้ไขไฟล์ ประการที่สองตัวเลือกบางอย่างเช่นการแก้ไขในสถานที่ ( -i) เป็นแบบพกพา วิธีการทำงานเหมือนกันสามารถทำได้ในกลุ่ม?

1
ฉันจะเลื่อนเคอร์เซอร์ไปที่ด้านบนหรือด้านล่างของหน้าจอได้อย่างไร?
ฉันรู้ว่าggและGสามารถเลื่อนเคอร์เซอร์ไปที่ด้านบนและด้านล่างของไฟล์ แต่มีวิธีที่จะข้ามไปที่ด้านบนหรือด้านล่างของหน้าต่างที่มองเห็นได้หรือไม่?

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