คำถามติดแท็ก insert-mode

โหมดใน Vi และ Vim ที่คุณสามารถแทรกข้อความลงในเอกสารที่เปิดอยู่

4
เหตุใดคีย์ Backspace จึงไม่ทำงานในโหมดแทรก
การพยายามลบอักขระในโหมดแทรกด้วยbackspaceแป้นในบางครั้งดูเหมือนจะไม่ทำงาน backspace บางครั้งฉันสามารถแต่ในเวลาอื่นมันไม่ทำอะไรเลย; เคอร์เซอร์ไม่ไปทางซ้ายและไม่มีอะไรเกิดขึ้น ฉันสังเกตเห็นสิ่งนี้โดยใช้ gVim ใน Windows backspaceดูเหมือนว่าจะทำงานตามที่คาดไว้ในขณะที่ใช้เป็นกลุ่มจากสถานีในระบบ Linux มากที่สุด แต่ ทำไมสิ่งนี้ถึงเกิดขึ้น ฉันจะทำให้backspaceคีย์ลบอักขระได้ตามปกติได้อย่างไร พฤติกรรมนี้มีจุดประสงค์เพื่อเป็นสถานที่หรือไม่? กล่าวอีกนัยหนึ่ง: มีทางเลือกอื่นที่ดีกว่าสำหรับการbackspaceลบอักขระในโหมดแทรกหรือไม่?
146 insert-mode 

12
วิธีอื่นในการออกจากโหมดแทรกนอกเหนือจาก Escape
เหตุผลหลักที่ฉันชอบพูดจาชอบ emacs ก็คือการเคลื่อนไหวของมือฉันอยู่ห่างจากแถวบ้านต่ำมาก (แม้ในฐานะโปรแกรมเมอร์) อย่างไรก็ตามครั้งหนึ่งที่ฉันทำเช่นนี้คือออกจากโหมดแทรกโดยการกด Escape ฉันเพิ่งเรียนรู้ว่าฉันสามารถใช้ Ctrl + C เพื่อออกจากโหมดแทรกได้เช่นกัน อย่างไรก็ตามนี่ไม่ใช่การปรับปรุงจริง ๆ ฉันจะออกจากโหมดแทรกโดยไม่ต้องออกจากแถวบ้านได้อย่างไรและโดยไม่มีผลกระทบอย่างใหญ่หลวงต่อสิ่งที่ฉันมีความสามารถในการพิมพ์ หมายเหตุ: ฉันใช้เสียงวานิลลาเป็นส่วนใหญ่กับรูปแบบแป้นพิมพ์ dvorak แม้ว่าฉันชอบที่จะได้ยินวิธีแก้ไขปัญหาสำหรับรูปแบบ qwerty เช่นกัน


5
วิธีที่ง่ายที่สุดในการแทรกอักขระ Unicode ลงในเอกสารคืออะไร
เมื่อเขียนเอกสารเป็นครั้งคราวฉันต้องการแทรกอักขระ Unicode ลงในข้อความ บางครั้งฉันรู้รหัสตัวอักษรและบางครั้งฉันก็ค้นหาบนเว็บ ขณะนี้ฉันไปที่โหมดแทรกแล้วใช้<Ctrl-V>u{four digit hex number}ซึ่งอาจลำบากมาก มีวิธีที่ง่ายกว่าในการแทรกอักขระ (อาจเป็นรูปแบบของการวาง)?

3
เลิกทำในโหมดแทรก
มีคำสั่งให้เลิกทำการดำเนินการครั้งล่าสุดเมื่ออยู่ในโหมดแทรกหรือไม่? ฉันเพิ่งวางข้อความจากการลงทะเบียนผิดโดยใช้<C-r>และฉันมีสองตัวเลือก: ลบด้วยมือสิ่งที่ฉันเพิ่งวางและเริ่มต้นใหม่ สลับไปที่โหมดปกติตีและสูญเสียข้อความที่ผมพิมพ์ก่อนกดปุ่มu<C-r> มีวิธีที่ดีกว่า?

4
โหลด Vi เข้าสู่โหมดแทรกโดยอัตโนมัติ
ฉันใช้ Vi เป็นตัวแก้ไขข้อความ (และอันที่จริงเท่านั้น) ที่ฉันต้องการบนระบบ Linux ฉันรู้วิธีเปลี่ยนโหมดจากปกติเป็นแทรกและข้อรอง เป็นไปได้ไหมที่ Vi โหลดเข้าสู่โหมดแทรกโดยอัตโนมัติมากกว่าโหมดปกติ?

3
วิธีการเขียนในแนวตั้ง?
ให้บอกว่าฉันต้องการผลิตข้อความต่อไปนี้ในเอกสารของฉัน: % % Not Important % O -------------------------> % | % S | % o | % m | % e | % | % M | % s | % g | % | % V มีวิธีง่ายๆในการเขียน "ข่าวสารบางอย่าง" ในแนวตั้งข้างต้นโดยไม่ต้องแทรกอักขระแต่ละตัวในแต่ละบรรทัดด้วยตนเองหรือไม่?

4
เลิกทำ <CR> ในโหมดแทรก
บางครั้งในโหมดแทรกฉันโดน&lt;CR&gt;ผิดพลาดและฉันต้องกดแบ็คสเปซหลายครั้ง (ขึ้นอยู่กับการเยื้อง) เพื่อกลับไปยังตำแหน่งที่ฉันอยู่ เช่น &lt;div&gt; &lt;p&gt; This is some text []&lt;/p&gt; &lt;/div&gt; เคอร์เซอร์อยู่[]และฉันก็โดน&lt;CR&gt;: &lt;div&gt; &lt;p&gt; This is some text []&lt;/p&gt; &lt;/div&gt; ตอนนี้ฉันต้องกดแบ็คสเปซสองครั้งเพื่อกลับไปที่บรรทัดก่อนหน้า (กรณีนี้ไม่เลวเลย แต่ไม่มีการเยื้องมากนัก) คุณรู้วิธีที่ดีกว่าที่จะทำ?

4
ฉันจะสร้างช่องว่างโดยไม่ตั้งใจได้อย่างไรก่อนเปิดวงเล็บปีกกาแบบหยิก
ฉันรู้ว่านี่เป็นคำถามที่แปลกและอาจไม่ได้เป็นฟอรัมที่เหมาะสมในการโพสต์ แต่นี่เป็นปัญหามาหลายปีแล้ว ในบางครั้งสมมติว่าเดือนละครั้งเมื่อฉันเขียนโปรแกรมฉันจะแนะนำช่องว่างแบบไม่หยุดพักแทนที่จะเป็นช่องว่างปกติก่อนเปิดวงเล็บปีกกา สิ่งนี้เกิดขึ้นเมื่อฉันเขียน () { สิ่งนี้นำไปสู่ข้อบกพร่องที่เป็นขุยลึกลับ ส่วนคำสั่ง CSS ที่ไม่ใช้ จนกว่าฉันจะจำสิ่งนี้อาจเป็นได้ เท่าที่ฉันรู้สิ่งนี้เกิดขึ้นในกลุ่ม แต่เนื่องจากตัวแก้ไขหลักของฉันมันอาจไม่เคยเกิดขึ้นในซอฟต์แวร์อื่น แต่ไม่มีเพื่อนร่วมงานของฉันในงานสุดท้ายของฉันที่เคยมีปัญหานั้นถึงแม้ว่าพวกเขาจะใช้รูปแบบแป้นพิมพ์เดียวกับฉัน ฉันเป็นคนเดียวที่ใช้เสียงเรียกเข้าเป็นประจำแม้ว่านั่นเป็นสาเหตุที่ฉันโพสต์ที่นี่ ... เรื่องนี้เกิดขึ้นกับฉันอย่างน้อยใน Ubuntu 14.04, 16.04 และ mac os x :set list ไม่เปิดเผย ฉันกำลังใช้รูปแบบแป้นพิมพ์ภาษาฝรั่งเศส - แคนาดาหมายถึงอักขระที่ใช้วงเล็บปีกกาทำได้โดยการกด alt + ` ฉันเหนื่อยมากกับปัญหาที่เกิดขึ้นมันไม่บ่อยพอที่ฉันจะลืมมันไปเรื่อย ๆ หากคุณไม่สามารถบอกฉันได้ว่าทำไมสิ่งนี้ถึงเกิดขึ้นการกำหนดค่าบางอย่างเพื่อเน้นตัวละครนั้นด้วยวิธีที่ชัดเจนจะเป็นคำตอบที่เหมาะสมและช่วยแก้ปัญหานี้ได้อย่างแท้จริง

5
การนำทางในโหมดแทรก
hjklในที่สุดผมก็ตัดสินใจที่จะทิ้งปุ่มลูกศรสำหรับการนำทางในความโปรดปรานของ ฉันใช้Vim hardmodeปลั๊กอินเพื่อปิดใช้งานปุ่มลูกศร ฉันคุ้นเคยกับการนำทางค่อนข้างเร็ว แต่ปรากฎว่าการนำทางในโหมดแทรกนั้นเป็นไปไม่ได้ มีวิธีแก้ปัญหานี้หรือไม่? (โหมดแทรกที่มีอยู่ไม่ใช่วิธีการแก้ปัญหา)

5
ฉันจะแทรกข้อความที่ส่วนท้ายของกลุ่มบรรทัดได้อย่างไร
สมมติว่าฉันมีบล็อกข้อความ ... Lorem ipsum Lorem ipsum dolor Lorem ipsum dolor sit Lorem ipsum dolor sit amet ... และฉันต้องการแทรก a .ท้ายบรรทัดแต่ละบรรทัด อะไรคือวิธีที่ดีที่สุดในการบรรลุเป้าหมายนี้?

3
ความเร็วของการชนบน <Esc> O (แทรกเป็นปกติเพื่อแทรกบรรทัดใหม่เหนือเคอร์เซอร์)
บ่อยครั้งที่ฉันอยู่ในโหมดแทรกฉันจะกดEscเพื่อเข้าสู่โหมดปกติจากนั้นกดปุ่มOเพื่อเริ่มบรรทัดใหม่เหนือเคอร์เซอร์และเข้าสู่โหมดแทรกที่นั่น แต่เมื่อฉันทำเช่นนั้นมีความล่าช้า 1 วินาทีหลังจากที่ฉันกดปุ่มOก่อนที่จะมีการตอบสนองใด ๆ ที่มองเห็นได้ นอกจากนี้ถ้าผมเริ่มพิมพ์ข้อความใหม่ในช่วงที่ล่าช้า 1 วินาที, หากข้อความใหม่ที่เริ่มต้นด้วยการใด ๆ ของบางชุดของตัวละคร (เช่นj, k, m, n, o) ผมจบลงในช่วงกลางของการดำเนินการบางอย่างอื่น ๆ ที่ผมทำไม่ได้ ตั้งใจมักจะทำเลอะเทอะ ณ จุดที่ฉันต้องหยุดและคลำหารอบด้วยการเลิกทำและทำซ้ำจนกว่าฉันจะแน่ใจว่าฉันได้ยกเลิกความเสียหายแล้ว Oเพื่อหลีกเลี่ยงความไม่ราบรื่นที่ผมเคยอยู่ในนิสัยของการหยุดสำหรับหนึ่งที่สองหลังจากที่ทุกครั้งที่ฉันพิมพ์ แต่สิ่งนี้ทำให้ฉันช้าลงและป้องกันไม่ให้ฉันเป็นปีศาจความเร็วที่ฉันต้องการ อะไรทำให้เกิดสิ่งนี้ มีวิธีแก้ไขหรือวิธีแก้ปัญหาหรือไม่?

4
ตั้งค่าตัวเลือกการวาง แต่สำหรับการแทรกเพียงครั้งเดียวเท่านั้น
ฉันต้องการวิธีที่รวดเร็วในการตั้งค่า'paste'ตัวเลือกVim การแทรกข้อความบางส่วนและเปลี่ยนเป็นค่าก่อนหน้า'paste'เป็น กรณีการใช้งานทั่วไปแทรกเนื้อหาคลิปบอร์ดของระบบปฏิบัติการอย่างแท้จริงโดยไม่คำนึงถึงการเขียนโหมดแทรกใด ๆ ที่อาจใช้งานเช่นการเยื้องอัตโนมัติและโดยไม่ต้องเปลี่ยนสถานะของ Vim อีกกรณีการใช้งานคือการอนุญาตให้มีคุณสมบัติแมโคร OS เพื่อแทรกการกดแป้นพิมพ์เป็นกลุ่มและให้พวกเขาตีความเป็นข้อความตามตัวอักษร เห็นได้ชัดว่านี่เป็นการสรุปให้กับตัวเลือกอื่น ๆ - แนวคิดทั่วไปคือการตั้งค่าตัวเลือกบางอย่าง แต่สำหรับระยะเวลาหนึ่งการเดินทางผ่านโหมดแทรก โดยทั่วไปฉันต้องการผูกลำดับสำคัญ (พูด_i) กับมาโครที่ทำสิ่งนี้ :set paste i…&lt;Esc&gt; :set nopaste โดยที่i…&lt;Esc&gt;ฉันหมายถึงเปลี่ยนเป็นโหมดแทรก (เช่นเดียวกับiคำสั่ง) และกลับมาโครเมื่อกลับสู่โหมดคำสั่งยกเว้นว่าฉันต้องการที่จะจบลงด้วยการ'paste'ยังคงใช้งานอยู่หากมันใช้งานอยู่ก่อน ฉันจะทำสิ่งนี้ได้อย่างไร หมายเหตุ: เนื้อหาของคลิปบอร์ด OS ที่ถูกแมปไปลงทะเบียน"* เมื่อใช้งานได้'paste'ตัวเลือกจะไม่มีประโยชน์มาก สถานการณ์ที่สร้างแรงจูงใจสำหรับคำถามนี้สำหรับช่วงเวลาที่ไม่ตรงตามเงื่อนไขสำหรับ"*การสนับสนุนการลงทะเบียน - Vim ไม่ได้รวบรวม+xterm_clipboardคุณสมบัติหรือกำลังทำงานในเทอร์มินัลเช่นหน้าจอหรือ SSH เหนือซึ่งแยกจากเซิร์ฟเวอร์ X แวดล้อม

3
วิธีการเข้าสู่โหมดแทรกเมื่อเข้าสู่บานหน้าต่างเทอร์มินัล neovim
ฉันมีการแมปต่อไปนี้เพื่อให้ง่ายต่อการย้ายออกจากบานหน้าต่างเทอร์มินัลใน neovim: tnoremap &lt;C-h&gt; &lt;C-\&gt;&lt;C-n&gt;&lt;C-w&gt;h " Workaround since &lt;C-h&gt; isn't working in neovim right now tnoremap &lt;C-w&gt;h &lt;C-\&gt;&lt;C-n&gt;&lt;C-w&gt;h tnoremap &lt;C-j&gt; &lt;C-\&gt;&lt;C-n&gt;&lt;C-w&gt;j tnoremap &lt;C-k&gt; &lt;C-\&gt;&lt;C-n&gt;&lt;C-w&gt;k tnoremap &lt;C-l&gt; &lt;C-\&gt;&lt;C-n&gt;&lt;C-w&gt;l ปัญหาเดียวคือเมื่อฉันย้ายกลับไปที่บานหน้าต่างเทอร์มินัลฉันต้องกดiเพื่อกลับสู่โหมดแทรก ฉันต้องการให้มันอยู่ในโหมดแทรกเสมอเมื่อฉันย้ายไปที่บานหน้าต่าง neovim ที่กำลังเรียกใช้เทอร์มินัล อะไรคือวิธีที่ดีที่สุดในการบรรลุเป้าหมายนี้?

1
วิธีการเลื่อนเคอร์เซอร์ไปยังระดับการเยื้องที่ถูกต้องโดยไม่ต้องออกจากโหมดแทรก?
ตัวอย่างเช่นฉันมีรหัส JavaScript นี้ |ตัวละครที่แสดงให้เห็นถึงตำแหน่งของเคอร์เซอร์และมันอยู่ในสายที่ว่างเปล่า function a() { console.log("a"); function b() { console.log("b"); function c() { console.log("c"); } | c(); } b(); } หลังจากการดำเนินการที่ร้องขอเนื้อหาจะมีลักษณะเช่นนี้: function a() { console.log("a"); function b() { console.log("b"); function c() { console.log("c"); } | c(); } b(); } สิ่งที่ฉันขอคือคำสั่งการแมป ขอบคุณมาก! :-)

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