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

โหมดคำสั่งเป็นโหมดเริ่มต้น Vim เรียกโหมดนี้ว่า Normal เพื่อไม่ให้สับสนกับโหมดบรรทัดคำสั่งซึ่งคุณจะได้รับหลังจากกด:, /,?, หรือ!

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

2
ปัญหาการเลื่อนเมื่อตั้งค่าตัวเลือก "ตัด"
ฉันพบว่าตัวเองกำลังจัดการกับปัญหานี้ทุกครั้งที่wrapมีการใช้งานตัวเลือก (ในกรณีของฉันโดยเฉพาะเมื่อใดก็ตามที่ฉันทำงานกับไฟล์ markdown) สิ่งที่เกิดขึ้นคือในขณะที่เลื่อนขึ้นและลงของบัฟเฟอร์ด้วยjและkบรรทัดข้อความที่พันไว้ (การสร้างย่อหน้าด้วยสายตา) ที่ด้านบนสุดและล่างสุดไม่เลื่อนอย่างราบรื่น (เช่นทีละหน้า) แต่ย่อหน้าทั้งหมดจะหายไปและปรากฏขึ้นอีกครั้งอย่างทันทีทันใดจากมุมมองและทำให้เกิดผลที่น่ารำคาญและน่ารำคาญ ฉันคิดว่า GIF จะอธิบายได้ดีขึ้นว่าเกิดอะไรขึ้น ที่นี่ฉันแค่กดkซ้ำ ๆ เพื่อเลื่อนขึ้น จับตาดูย่อหน้าใกล้ด้านล่าง! ฉันเคยชินกับพฤติกรรมนี้เพราะฉันไม่คิดว่ามันจะแก้ไขได้ แต่จากนั้นฉันก็ตระหนักว่ามันไม่ได้เกิดขึ้นกับสายกายภาพและwrapไม่มีการตั้งค่า มีวิธีที่จะบอกให้ Vim เลื่อนหน้าจอเป็นเส้นภาพแทนที่จะเป็นภาพจริงหรือไม่? PS: ใช่ฉันได้แมปของฉันjและkไปและgjgk

2
ไปที่อักขระที่ไม่ใช่ช่องว่างสุดท้ายของบรรทัดก่อนหน้า / ถัดไปหรือไม่
ฉันชอบปุ่ม-และ<C-M>โหมดปกติสำหรับไปที่อักขระที่ไม่ใช่ช่องว่างตัวแรกของบรรทัดก่อนหน้า / ถัดไป มีคีย์ที่สอดคล้องกันสำหรับการไปยังอักขระที่ไม่ใช่ช่องว่างสุดท้ายบนบรรทัดก่อนหน้า / ถัดไปหรือไม่

1
ใช้ backspace เพื่อแก้ไขคำสั่งปัจจุบันในโหมดปกติหรือไม่
บางครั้งเมื่อป้อนคำสั่งในโหมดปกติคุณอาจพิมพ์ผิดเช่นถ้าฉันตั้งใจจะพิมพ์ผมตั้งใจจะเริ่มพิมพ์10dk19d เนื่องจากคำสั่งยังไม่เสร็จสมบูรณ์ / ถูกกำหนดจึงเป็นไปได้หรือไม่ที่จะลบคีย์ที่ไม่ถูกต้องโดยใช้ backspace เช่น: 19d<backspace><backspace>0dkแทนที่จะต้องกดปุ่ม Escape แล้วลองคำสั่งอีกครั้ง? คำถามด้านข้าง: มีคำว่า Vim สำหรับโครงสร้างข้อมูลที่เก็บคำสั่งปัจจุบันก่อนที่จะคอมมิต

4
จะแทนที่ข้อความภายใน () ด้วยข้อความที่ถูกดึงก่อนหน้านี้ได้อย่างไร
สมมติว่าฉันมีข้อความที่ถูกFnordดึงมาก่อนและเคอร์เซอร์ของฉันอยู่Bที่บรรทัด: M:mock(Baz) ฉันจะเปลี่ยนข้อความภายใน () ด้วยข้อความที่ถูกดึงก่อนหน้านี้ได้อย่างไร ปัจจุบันฉันมักจะทำผิดพลาดโดยทำ: di( aka "ลบภายใน ()" SHIFT + P แต่สิ่งที่ทำให้ฉันมีข้อความที่แน่นอนอีกครั้งเนื่องจากข้อความที่ถูกลบจะถูกย้ายไปที่การลงทะเบียน ฉันต้องการ: M:mock(Fnord)

1
ฉันจะป้องกัน (หรืออย่างน้อยพร้อมท์เพื่อยืนยัน) จำนวนมากอย่างไร้เหตุผลจากการใช้คำสั่งคำนำหน้าได้อย่างไร
มันไม่ได้เกิดขึ้นบ่อยเท่าที่คุณคิด แต่มันเกิดขึ้นเป็นครั้งคราวและฉันก็ไม่ได้เป็นเจ้าของแมว โดยทั่วไปถ้าคุณบดแถวหมายเลขหรือ numpad จากนั้นกด keycombo ที่เรียกคำสั่งที่ทำซ้ำได้คุณสามารถสั่ง Vim โดยไม่ตั้งใจเพื่อทำงานหลายพันล้านหรือแม้กระทั่งพันล้านครั้ง สิ่งนี้จะควบคุมไม่ได้ง่ายและอาจทำให้ข้อมูลสูญหายได้ ดังนั้นฉันสงสัยว่ามีการกำหนดค่าหรือบางสิ่งในซอร์สโค้ดที่เราสามารถเปลี่ยนเพื่อทำหน้าที่เป็นการตรวจสุขภาพจิตเพื่อป้องกัน DoS ประเภทนี้หรือไม่

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

1
การทำความเข้าใจความแตกต่างของการอ้างอิงบรรทัดผ่าน: g / ^ / norm และถึง:% norm
สมมติว่าฉันมีไฟล์ง่าย ๆ ดังต่อไปนี้ a b c d e และฉันตัดสินใจว่าฉันต้องการเพิ่มบรรทัดว่างหลังจากแต่ละบรรทัด วิธีการที่แตกต่างกันหลายอย่างข้ามไปยังใจของฉันทันที เราอาจทำเช่นนั้น (และยอมรับความล้มเหลว) เราอาจบันทึกมาโครที่ชอบqqo<ESC>jqแล้วทำซ้ำหลาย ๆ ครั้ง ในขณะนั้นมีวิธีการสองวิธีที่ชัดเจนกว่าสำหรับฉัน ประการแรกฉันคิดว่าฉันจะออก:normคำสั่งoในแต่ละบรรทัด :%norm oดังนั้นผมจึงวิ่ง แต่สิ่งที่เกิดขึ้นจริงคือเราได้ 5 บรรทัดว่างตามด้วยบรรทัดที่ไม่ได้แยกดังที่กล่าวมา ฉันตีความสิ่งนี้เพื่อหมายความว่าโดย%normvim หยิบข้อความออกมาคำสั่งปกติต่อไปนี้ในห้าบรรทัดแรกของไฟล์ห้าบรรทัดนี้ oคำสั่งสร้างบรรทัดใหม่และเป็นกลุ่มคือ "โง่" ในแง่ที่ว่ามันอ้างอิงจากจำนวน line และไม่จริงโดยระบุอื่น ๆ ฉันเขิน แน่ใจ ฉันลองอีกสองสามอย่างเพื่อดูว่าฉันสามารถใช้วิธีการด้านบนได้หรือไม่ แต่ฉันไม่สามารถทำได้ ด้วยความอยากรู้ฉันได้ลองวิธีการนวดแบบที่ฉันโปรดปราน :g/^/norm oนี้ทำให้ฉันจะลอง ฉันประหลาดใจนี่ใช้งานได้ดี! ดังนั้นสำหรับดวงตาของฉันดูเหมือนว่าเสียงเรียกเข้าไม่ได้ "โง่" ที่นี่ในลักษณะเดียวกับข้างบนและอ้างอิงบรรทัดมากกว่าหมายเลขบรรทัด เกิดอะไรขึ้นกันแน่?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.