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

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

3
แก้ไขคำที่แตกต่างพร้อมกันหนึ่งบรรทัดเดียวกันใน Sublime Text พร้อมตัวเลือกทวีคูณ
เป็นไปได้หรือไม่ที่จะแก้ไขมากกว่าหนึ่งคำพร้อมกันซึ่งอยู่ในบรรทัดเดียวกัน ตัวอย่างเช่นสมมติว่าฉันมีสิ่งนี้: Spam and Eggs is all you need for a healthy breakfast และฉันต้องการเปลี่ยนบรรทัดเป็น: organic_Spam and organic_Eggs is all you need for a healthy breakfast ฉันต้องการไฮไลต์ "สแปม" และ "ไข่" และเติม "organic_" พร้อมกันเพื่อ "สแปม" และ "ไข่" เล็กน้อยเช่นการใช้บล็อกภาพเพื่อเขียนพร้อมกันในบรรทัดที่แตกต่างกัน แต่ที่นี่เขียนเนื้อหาในบรรทัดเดียวกัน ฉันเห็นเพื่อนร่วมงานทำสิ่งนี้ด้วย Sublime Text และลองใช้ googling แต่ก็ไม่มีประโยชน์

1
มีตัวเลือกอะไรบ้างในการเข้าสู่โหมดแทรก
ผมใช้ในการเข้าสู่โหมดแทรกโดยaไม่เคยรู้ว่ามีระบบที่เป็นไปได้ที่แทรกโหมดเริ่มต้น บางครั้งฉันก็รำคาญที่aจะวางเคอร์เซอร์หลังตัวอักษรตัวแรกของบรรทัด แต่สิ่งนี้คือ: มันเข้าสู่โหมดแทรกหลังตำแหน่งเคอร์เซอร์ปัจจุบัน จากนั้นผมก็รู้ว่าผมจะเข้าไปแทรกโหมดที่ท้ายบรรทัดโดยใช้หรือด้านล่างบรรทัดปัจจุบันใช้Ao วิธีในโหมดปกติเพื่อเข้าสู่โหมดแทรกมีความแตกต่างกันอย่างไร

2
แทรกแท็บในโหมด INSERT เมื่อตั้งค่า expandtab
ฉันได้ตั้งค่าexpandtabใน.vimrcไฟล์ของฉันให้แปลงtabเป็นหลายspaceอักขระ อย่างไรก็ตามบางไฟล์ (เช่น Makefile) จำเป็นต้องมีtabอักขระจริง มีวิธีง่าย ๆ ในการบังคับให้แทรกเมื่อtabฉันพิมพ์หรือไม่?

2
ฉันจะแทรกตัวละครซ้ำ ๆ ได้อย่างไรแม้กระทั่งบรรทัดถัดไป
บอกว่าฉันมีความคิดเห็นเช่นนี้: //This is a comment และฉันต้องการทำให้เป็นเช่นนี้: //***************** //This is a comment //***************** มีวิธีง่าย ๆ ในการแทรกตัวอักษรซ้ำ ๆ กันแม้กระทั่งกับบรรทัดถัดไป / ก่อนหน้า?

1
แม็พลำดับของตัวอักษรในโหมดแทรก
ฉันสามารถแมปคีย์ผสมในโหมดแทรกได้แล้ว: :inoremap abc <do stuff> อย่างไรก็ตามสิ่งนี้มีข้อบกพร่องเล็กน้อย: เมื่อพิมพ์บางส่วนของลำดับเช่นabอักขระจะไม่แสดงจริงในช่วงเวลาสั้น ๆ เนื่องจาก "รอ" เพื่อดูว่าคุณกำลังจะพิมพ์คำสั่งเต็มหรือไม่ สิ่งนี้ไม่พึงประสงค์ ฉันต้องการแมปลูกโซ่ของตัวอักษรโดยไม่หยุดถ้าสตริงย่อยบางส่วนของห่วงโซ่ถูกป้อน หากฉันพิมพ์abให้หยุดชั่วคราว (และรอจนกว่าอักขระจะปรากฏจริงตามที่กล่าวไว้ในจุดด้านบน) จากนั้นพิมพ์cคำสั่งจะไม่ถูกเรียกใช้งาน ฉันต้องการให้คำสั่งดำเนินการไม่ว่าจะรอนานแค่ไหน ฉันจะใช้iabแต่ไม่ได้ผลเพราะ: มันต้องป้อนช่องว่างหลังจากสตริง ฉันไม่สามารถดำเนินการคำสั่งโดยพลการด้วยมันเพียงแทรกสตริงของข้อความ มีวิธีใดบ้างที่จะรันคำสั่งหรือการกดแป้นถ้ามีการป้อนสตริงที่แน่นอนในโหมดแทรกโดยไม่ต้องใช้แผนที่ (ซึ่งจะทำให้หยุดชั่วคราวทุกครั้งที่ฉันพิมพ์aและไม่ทำงานหากฉันรอนานเกินไป)?

1
วิธีการกำหนดหมายเลขรายการอัตโนมัติเป็นกลุ่ม?
สิ่งอื่น ๆ สัญญาอย่างเป็นทางการต้องมีรายการหมายเลข 1. Some text 2. More text 2.1. Sub-section text เป็นต้น กุญแจสำคัญคือการกำจัดหมายเลขใหม่ด้วยตนเองเมื่อแทรกหรือลบรายการ เป็นไปได้ด้วยvimหรือไม่ ความสอดคล้องของการกำหนดหมายเลขรายการเป็นเรื่องยากมากที่จะติดตามด้วยตนเอง หนึ่งในเป้าหมายที่เกี่ยวข้องกับสิ่งนี้คือการมีการควบคุมการแก้ไขที่เหมาะสมซึ่งเป็นไปได้โดยรูปแบบการจัดเก็บข้อมูลที่ไม่ยุ่งเหยิงเช่นข้อความที่ชัดเจน

1
ฉันจะเรียกใช้ autocmd ได้อย่างไรเมื่อเริ่ม Vim โดยไม่มีไฟล์, ไฟล์ที่ไม่มีอยู่หรือไฟล์เปล่า (แต่ไม่ใช่เมื่อเริ่มต้นด้วยไฟล์ที่มีอยู่)
ฉันต้องการเรียกใช้ autocmd ในสถานการณ์ต่อไปนี้เมื่อฉันเริ่ม Vim: โดยไม่ได้ระบุชื่อไฟล์ เมื่อไฟล์ใหม่ เมื่อไฟล์มีอยู่ แต่ว่างเปล่าทั้งหมด ในสามกรณีข้างต้นทั้งหมดฉันต้องการเรียกใช้ autocmd โดยเฉพาะฉันต้องการเริ่มโหมดแทรกโดยอัตโนมัติสำหรับสถานการณ์ข้างต้นเท่านั้น (ไม่ใช่เมื่อฉันเปิดไฟล์ที่มีอยู่แล้ว & ไม่ว่าง) UPDATE: ฉันได้ลองทำสิ่งต่อไปนี้ในของฉัน_vimrcแต่ไม่มีโชค (บวกด้วยฉันไม่แน่ใจว่ามีฟังก์ชั่นในกลุ่มที่นับจำนวนตัวอักษรในไฟล์ (เพื่อดูว่ามันเป็นศูนย์) ก่อนเปิดหรือไม่: if @% == "" || filereadable(@%) autocmd BufRead,BufNewFile * startinsert endif

1
บล็อกภาพแทรกบรรทัดใหม่
ฉันทำงานมากด้วยโหมดบล็อกภาพซึ่งฉันคิดว่ามีประโยชน์จริง ๆ สำหรับการเปลี่ยนแปลงอย่างรวดเร็วในหลาย ๆ บรรทัด แต่สิ่งที่ฉันพยายามทำคือการแทรกบรรทัดใหม่เช่น: สิ่งที่เลือกจะถูกบันทึกไว้เป็น[]: Some [t]ext Some [t]ext Some [t]ext Some [t]ext Some [t]ext ฉันกดIและฉันสามารถเพิ่มข้อความที่จะแทรกก่อนt: Some other text Some [t]ext Some [t]ext Some [t]ext Some [t]ext เมื่อฉันกด<Esc>ฉันจะได้รับสิ่งต่อไปนี้: Some other text Some other text Some other text Some other text Some other text แต่ตอนนี้ถ้าฉันกด<CR>แทนข้อความที่ฉันต้องการเพิ่มขึ้นบรรทัดใหม่จะถูกแทรกตามที่ต้องการ แต่ไม่ใช่สำหรับบรรทัดอื่น ผลที่ได้คือ: Some text …

2
มีวิธีแทรกอักขระเดียวแล้วออกจากโหมดแทรกหรือไม่
เมื่อฉันอ่านข้อความและเพิ่ม backticks รอบคำหรือเครื่องหมายคำพูดหรืออะไรก็ตามมันน่ารำคาญที่ฉันต้องกด Esc หรือ Ctrl- [หลังจากแทรกแต่ละครั้ง ส่วนแทรก (และต่อท้าย) นั้นแตกต่างกันดังนั้นจึง.ไม่ช่วยอะไรมาก มีสิ่งใดที่คล้ายกับrที่กลับไปสู่โหมดปกติหลังจากใช้อักขระตัวเดียว แต่ใช้โหมดแทรกแทนโหมดแทนที่หรือไม่?

1
มี <Cw> สำหรับ WORD หรือไม่
การกดCtrl- wในโหมดแทรกจะลบคำก่อนหน้า มันเทียบเท่ากับCtrl- Backspaceใน Windows และOpt- Deleteใน OS X และพิมพ์ได้เร็วขึ้นจริงๆ เป็นกลุ่มมีแนวคิดที่แยกต่างหากของwordและWORD(ดู:help word) นี้เป็นสิ่งล้ำค่าสำหรับการนำทางข้อความ: มันเป็นความแตกต่างระหว่างwและW, bและB, และอื่น ๆ Ctrl- ดำเนินการเกี่ยวกับw wordมีคำแนะนำที่คล้ายกันWORDหรือไม่?

1
มีโหมดแทรกเสริมหรือไม่?
ฉันพยายามเขียนสตริงที่มีตัวอักษรทั้งหมดจากzถึงaและฉันคิดว่ามันจะง่ายกว่านี้ถ้าฉันเขียนย้อนหลังได้ แนวคิดจะเหมือนกับโหมด INSERT ที่เคอร์เซอร์ไม่ก้าวไปข้างหน้าหลังจากใส่ถ่านทุกอัน ฉันไม่พบอะไรแบบนั้นฉันจึงสงสัยว่าโหมดนี้มีอยู่แล้วหรือสามารถทำได้ในทางใดทางหนึ่งหรือไม่? หมายเหตุ:ฉันทราบว่าฉันสามารถย้อนกลับข้อความได้แต่นี่ไม่ใช่ประเด็น

2
แก้ไขไดเร็กทอรีภายในกลุ่ม
เป็นไปได้ไหมที่จะแก้ไขไดเรกทอรีภายใน Vim? (คำสั่งบางคำสั่งทำงานกับไดเรกทอรี) ฉันต้องการทราบว่าการดำเนินการชนิดใดที่สามารถทำได้ในไดเรกทอรีภายในกลุ่ม เป็นกลุ่มสามารถเปิดไดเรกทอรีสำหรับการแก้ไขผมเชื่อว่ามันจะมีคำสั่งให้ทำงานด้วย แต่คำสั่งปกติจะทำงานแตกต่างกันสำหรับไดเรกทอรี ยกตัวอย่างเช่นการกดIและพิมพ์ชื่อไฟล์และไดเรกทอรีประหยัด เมื่อฉันให้lsก็ควรแสดงไฟล์นั้น

4
จะลบเนื้อหาย้อนหลังจนถึง“ =” ที่บรรทัดก่อนหน้าได้อย่างไร
ฉันใช้ตัวอย่างรหัสจาวาสคริปต์: 1 var a = 1; 2 var b = |{}; เคอร์เซอร์อยู่ที่ตำแหน่ง|(บนตัวอักษร "{" เมื่อรูปร่างเคอร์เซอร์เป็นบล็อก) ฉันพบว่าฉันต้องการaกำหนดวัตถุให้ฉันจึงต้องการแก้ไขตามด้านล่าง: 1 var a = {}; ดังนั้นฉันต้องการทราบว่าเมื่อเคอร์เซอร์อยู่ที่ "{" วิธีการลบเนื้อหาทั้งหมดก่อน "{" อย่างรวดเร็วจนกระทั่งช่องว่างหลังเครื่องหมาย "=" ที่บรรทัดที่ 1 ในเครื่องมือแก้ไขทั่วไปอื่น ๆ ฉันจะกดปุ่ม backspace เพื่อลบรหัส แต่ฉันไม่สามารถทำสิ่งนี้ได้เป็นกลุ่ม

2
ฉันจะสร้างโหมดการแทรกหลอกด้วยคีย์แมปอื่นได้อย่างไร
ฉันอยู่ในตำแหน่งที่ผิดปกติเล็กน้อยเมื่อใช้รูปแบบแป้นพิมพ์สองแบบที่แตกต่างกันเป็นประจำ ( โปรแกรมเมอร์ - DvorakและTurkish-F ) เลย์เอาต์เหล่านี้ค่อนข้างจะแตกต่างจากกันและฉันสามารถมีความเชี่ยวชาญเป็นกลุ่มด้วยความทรงจำของกล้ามเนื้อหนึ่งชุด ฉันค่อนข้างชำนาญในการใช้คำสั่ง vim ในเค้าโครง Dvorak แต่แทบจะเป็นไปไม่ได้เลยที่จะใช้ถ้าแป้นพิมพ์ของฉันอยู่ในรูปแบบ Turkish-F น่าเสียดายที่ฉันแก้ไขไฟล์เป็นประจำทั้งภาษาอังกฤษและตุรกีและแม้แต่ภาษาผสม ความสามารถของฉันเป็นเช่นนั้นฉันสามารถพิมพ์ภาษาใดก็ได้ในรูปแบบแป้นพิมพ์ตามลำดับ แต่สมองของฉันปฏิเสธที่จะไขว้พวกเขาและพิมพ์แม้แต่ตัวอักษรสองสามคำในภาษาตุรกีจากเค้าโครง Dvorak หรือในทางกลับกัน ฉันมีการผูกสองปุ่มเพื่อแสดงความยินดีสำหรับการเปลี่ยนเลย์เอาต์ใน Xorg แต่สิ่งนี้ทำให้ฉันมีเวิร์กโฟลว์ที่น่าอึดอัดใจในกลุ่มเมื่อแก้ไขไฟล์ภาษาแบบผสม: &lt;vim commands…&gt;i&lt;switch to tr&gt;…content…&lt;escape&gt;&lt;switch to en&gt;&lt;vim commands…&gt; ฉันอยากจะตัดทอนสิ่งนี้ให้สั้นลงเช่น: &lt;vim commands…&gt;&lt;leader&gt;i…content…&lt;escape&gt;&lt;vim commands…&gt; ... เช่นการใช้&lt;leader&gt;iชุดของ:imapค่าเพื่อเลียนแบบเค้าโครงภาษาตุรกีโดยไม่เปลี่ยนเค้าโครงแป้นพิมพ์ของระบบ ในเวลาเดียวกันiจะเปลี่ยนเป็นโหมดแทรก แต่ไม่มี:imapค่าเพิ่มเติม คุณค่าของตัวเองนั้นง่ายฉันแค่ต้องการการแมปตัวอักษรแบบนี้: :imap a u :imap A U :imap o i :imap O İ "etc. …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.