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

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

2
ฉันสามารถดูประวัติการกดปุ่มในโหมดปกติได้หรือไม่?
ฉันรู้ว่า Vim เก็บประวัติคำสั่ง ex การค้นหาการข้ามตำแหน่งการเปลี่ยนแปลงและอื่น ๆ ด้วยshowcmdset, Vim จะแสดงให้คุณเห็นว่าคุณใช้คีย์ใดบ้างสำหรับคำสั่งโหมดปกติจนกระทั่งคำสั่งนั้นทำงาน บางครั้งเมื่ออยู่ในโหมดปกติฉันพิมพ์ผิดและการกระทำเกิดขึ้น ฉันสามารถยกเลิกการกระทำเหล่านี้ได้ แต่บางครั้งฉันอยากรู้ว่าการแก้ไขในช่วงที่เกิดความผิดพลาดเกิดขึ้นได้อย่างไร บางครั้งการแก้ไขดูเท่และฉันต้องการทราบวิธีการทำซ้ำในอนาคต ดังนั้นมีวิธีการดูประวัติของการกดปุ่มในโหมดปกติใด ๆ คั่นอย่างยิ่งเมื่อเกิดการแก้ไขหรือการกระทำที่เกิดขึ้นจริง (เช่นการเคลื่อนไหวหรือการเปลี่ยนแปลงโหมด)?

9
วิธีแทรกบรรทัดใหม่โดยไม่ออกจากโหมดปกติ
ฉันสงสัยว่าฉันสามารถแทรกบรรทัดใหม่ได้หรือไม่โดยไม่ออกจากโหมดปกติ ตัวอย่างเช่นฉันมีสองบรรทัด: this is line one this is line two และเคอร์เซอร์อยู่บนบรรทัดที่หนึ่ง ตอนนี้ฉันต้องการบรรทัดใหม่ระหว่างบรรทัดหนึ่งและสองบรรทัดดังนี้: this is line one this is line two ฉันรู้ว่าเมื่อฉันอยู่ในโหมดปกติฉันสามารถกดoได้ แต่นี่จะเข้าสู่โหมดแทรก ฉันจะแทรกบรรทัดใหม่เหมือนและอยู่ในโหมดปกติได้อย่างไร

4
วิธีที่ง่ายที่สุดในการลบคำว่า "คอมโพสิต"?
ขออภัยหาก "คอมโพสิต" ไม่ใช่คำศัพท์ด้านเทคนิค ฉันหมายถึงต่อไปนี้: Hi, I-am-a-composite-word and we are not ฉันต้องการลบเฉพาะคำประสม ในโหมดคำสั่งถ้าฉันเลื่อนเคอร์เซอร์ไปที่Iจากนั้นทำซ้ำdwสองสามครั้งหรือพิมพ์dwอีกครั้งดีกว่าตามด้วยการ.กดไม่กี่ครั้งจะเป็นการหลอกลวง อย่างไรก็ตามด้วยเหตุผลต่าง ๆ ฉันพบว่าตัวเองทำสิ่งนี้ค่อนข้างบ่อยในระหว่างวันดังนั้นฉันจึงสงสัยว่ามีวิธีที่เรียบง่ายกว่านี้หรือไม่ ป.ล. ฉันไม่คิดว่าคำสั่งd9wจะเป็นวิธีที่ง่ายกว่า การนับลำดับของคำและขีดคั่นที่ยาวนานนั้นไม่ใช่ความคิดของฉัน "เรียบง่าย"

4
ฉันจะใช้คำสั่งกับทุกบรรทัดได้อย่างไร
หากฉันต้องการเยื้องบรรทัดทั้งหมดในเอกสารฉันสามารถพิมพ์>Gเพื่อใช้กับบรรทัดปัจจุบันและด้านล่างตามด้วยและ>ggเพื่อใช้กับบรรทัดข้างต้น มีชุดค่าผสมที่ฉันสามารถใช้เพื่อนำ>ไปใช้กับทุกบรรทัดในคราวเดียวได้หรือไม่?

1
ฉันจะแมป d [นับ] d ได้อย่างไร
NB คำสั่งนี้ไม่ได้ซ้ำกับคำสั่ง "d3fg" อย่างไร โปรดอ่านก่อนลงคะแนนเพื่อปิด! ฉันได้มาบิตของอับจนในของฉันการแสวงหาที่จะได้รับการลบการทำงานเล็ก ๆ เช่นคนใหญ่ ปัญหาที่ฉันมีคือฉันไม่สามารถหาวิธีการแมปคำสั่งd3dใหม่ได้ ที่จริงแล้วฉันไม่สามารถเข้าใจได้ว่าพวกเขาทำงานอย่างไรตั้งแต่แรกและไม่พบการกล่าวถึงพวกเขาในความช่วยเหลือของ Vim * d3jตรงไปตรงมา: มันใช้dกับการ3jเคลื่อนไหว 3ddตรงไปตรงมา: มันรันddคำสั่งด้วย "count" ของ 3 d3d ดูเหมือนว่ามันควรจะตรงไปตรงมามันใช้dโอเปอเรเตอร์กับ ... แต่อะไรนะ3d? มันไม่ใช่การเคลื่อนไหว หากคุณพิมพ์3dด้วยตัวเอง Vim จะถือว่าเป็นนับตามด้วยโอเปอเรเตอร์และรออย่างอดทนสำหรับการป้อนข้อมูลเพิ่มเติม และคุณไม่สามารถใช้โอเปอเรเตอร์กับผู้ให้บริการรายอื่นได้ ddไม่ได้อธิบายไว้ในความช่วยเหลือเป็นลำดับของผู้ให้บริการสองราย มันเป็นคำสั่งสองแป้นที่แยกต่างหาก (เปรียบเทียบdcซึ่งไม่ทำอะไรเลย) นอกจากนี้ยังไม่ปรากฏว่าในกรณีที่การวางตำแหน่งการนับมีความยืดหยุ่นสำหรับคำสั่งที่ต้องใช้การกดแป้นสองครั้ง: 2gjเลื่อนเคอร์เซอร์ลงสองบรรทัดหน้าจอ แต่ละg2jทิ้งการกดปุ่มสองครั้งแรกทั้งหมดและเลื่อนเคอร์เซอร์ลงหนึ่งบรรทัด แล้วมันทำงานอย่างไร นี่เป็นกรณีพิเศษในรหัสภายในของ Vim ใช่ไหม มีวิธีใดบ้างที่ฉันสามารถสร้างการd[count]dแมปได้? แก้ไข : มันเป็นวัตถุข้อความหรือไม่ :h text-objectsไม่รวมไว้ในรายการ "คำสั่งการเลือกวัตถุข้อความ" แต่จะรวม dd ในรายการการลบ "จัดกลุ่มจากวัตถุขนาดเล็กไปจนถึงวัตถุขนาดใหญ่" และd2awจะลบคำที่อยู่ใต้เคอร์เซอร์และคำต่อไปนี้ …

1
วิธีการใช้ตัวแปรในการแสดงออกของคำสั่ง 'ปกติ'?
เราจะใช้ตัวแปรอย่างไรเมื่อเรียกใช้บางสิ่งผ่านnormal!vimscript ตัวอย่าง: function! MyFunction(someArg) normal! (a:someArg)l endfunction สิ่งนี้ควรเลื่อนsomeArgขั้นตอนเคอร์เซอร์ไปทางขวา

7
เป็นกลุ่มสามารถปิด Capslock โดยอัตโนมัติเมื่อกลับสู่โหมดปกติหรือไม่?
หลังจากเกือบทุกครั้งที่ฉันพิมพ์บางอย่างในตัวพิมพ์ใหญ่ฉันลืมปิด capslock เมื่อกลับสู่โหมดปกติ จากนั้นฉันพยายามเลื่อนเคอร์เซอร์และจบการเข้าร่วมกับกลุ่มของบรรทัดและสิ่งอื่น ๆ อีกมากมายที่ฉันไม่คิดว่าจะเกิดขึ้น เป็นไปได้ไหมที่จะกำหนดค่า vim ให้ปิด capslock เมื่อฉันกด escape เพื่อเข้าสู่โหมดปกติ? หากมีวิธีแก้ไขเฉพาะระบบปฏิบัติการฉันสนใจที่จะใช้กับ Linux


1
ตำแหน่งมือสำหรับการนำทางเป็นกลุ่ม
ฉันเป็นผู้ใช้ที่เป็นกลุ่มใหม่และฉันต้องการถามคำถามพื้นฐานนี้เพื่อให้แน่ใจว่าฉันเริ่มเรียนรู้วิธีที่ถูกต้องและไม่พัฒนานิสัยที่ไม่ดี เมื่อคุณใช้ Vim คุณวางตำแหน่งมือขวาของคุณอย่างไร? ฉันพบว่ามันเป็นธรรมชาติมากขึ้นที่จะเริ่มต้นด้วยนิ้วของฉันบนjkl;แป้น แต่จากนั้นฉันก็พบว่าตัวเองขาดhกุญแจทุกครั้งเมื่อฉันนำทาง ตรงกันข้ามถ้าผมวางตำแหน่งนิ้วมือของฉันบนhjklแล้วผมก็พบว่าตัวเอง mistyping คำพูดเช่นนี้ไม่ได้เป็นตำแหน่งที่ผมได้รับการฝึกฝนเพื่อให้มือของฉันบนแป้นพิมพ์และผมพบว่าการสลับjkปุ่มด้วยนิ้วกลางและสามของฉันจะเป็นที่น่าอึดอัดใจ

1
ฉันจะเลื่อนบรรทัดเยื้องไปเป็นค่าเฉพาะได้อย่างไร
หลายครั้งที่ฉันพบกับสถานการณ์ที่บรรทัดไม่เยื้องอย่างเหมาะสม อีเธอร์ผ่านปลั๊กอินการเยื้องที่ไม่ดี / ไม่ต้องการหรือส่วนใหญ่มักจะเว้นวรรคเพื่อชดเชยค่าเยื้อง ฉันมักจะแก้ไขปัญหานี้โดย<<หรือ>>บรรทัดสองสามครั้งเพื่อแก้ไข ในกรณีที่มีช่องว่างเพิ่มเติมฉันจะทำหนึ่ง100<<ระดับ>>สำหรับแต่ละย่อหน้าที่ฉันต้องการ คำถามคือเช่นการ|เคลื่อนไหวที่ช่วยให้คุณกำหนดคอลัมน์ตามจำนวน10|ส่งเคอร์เซอร์ไปที่คอลัมน์ที่ 10 ฉันจะระบุระดับการเยื้องได้อย่างไร ตัวอย่าง (สิ่งนี้ใช้ไม่ได้) กับshiftwidth=4 expandtab: The quick (indent level 0) ••••Brown Fox (indent level 1) ••••••••••Jumped over the lazy dog (indent level 2 with two extra spaces) ในกรณีนี้ฉันต้องนับระดับเยื้องของบรรทัดสุดท้าย (2) และเพิ่มหนึ่งรายการสำหรับช่องว่างเพิ่มเติมจากนั้นพิมพ์3<<แล้วนับระดับเยื้องของสิ่งที่ฉันแล้ว1>>(หรือใช้autoindentและ==คำสั่ง) ฉันขอให้บางสิ่งบางอย่างเช่น1==บังคับให้เยื้องเป็นเยื้องระดับ 1 หรือในบางกรณี0==เพื่อลบการเยื้องออกด้วยกัน ฉันรู้ว่าตัวอย่างข้างต้นทำการเยื้องอัตโนมัติใน 1 หรือ 0 บรรทัด (ตามลำดับ) และไม่ทำสิ่งที่ฉันต้องการ แต่หวังว่ามันจะช่วยอธิบายคำถามได้ดีขึ้น

2
วิธีการดำเนินการคำสั่งในการเริ่มต้นเป็นกลุ่ม
ฉันเพิ่งติดตั้งปลั๊กอินสำหรับ python ซึ่งแสดงแผนผังวิธีการ ดังนั้นฉันต้องการเปิดแผนผังเมื่อเริ่มต้นจึงไม่จำเป็นต้องกดปุ่มทุกครั้งที่ฉันเปิด.pyไฟล์ แต่ฉันต้องการคำสั่งนี้จะถูกดำเนินการสำหรับ.pyไฟล์เท่านั้น นี่คือลักษณะชิ้น vimrc ของฉัน: nmap <F8> :TagbarToggle<CR> มีวิธีดำเนินการคำสั่งนี้เมื่อเริ่มต้นสำหรับ.pyไฟล์เท่านั้นหรือไม่

6
วิธีลบบรรทัดด้านบน / ล่างเคอร์เซอร์ แต่ไม่ใช่บรรทัดปัจจุบัน
มีคำสั่งสำหรับการลบบรรทัด (หรือ n บรรทัด) เหนือบรรทัดปัจจุบันหรือไม่? ดังกล่าวข้างต้น = ปัจจุบันไม่รวม คือมีทางเลือกอื่นdkที่จะไม่ลบบรรทัดปัจจุบันหรือไม่ คล้ายกับวิธีo/ Oและp/ Pทำงาน แต่มีการลบ ขณะนี้ฉันกำลังทำอยู่kddซึ่งย้ายเคอร์เซอร์หนึ่งบรรทัดขึ้นและลบออก ฉันสามารถทำได้nnoremap <Leader>d kddและnnoremap <Leader>D jdd-แต่มีทางเลือกที่ไม่ย้ายเคอร์เซอร์ดูเหมือนว่าเป็นตัวเลือกที่ดีกว่า มีแบบนี้เหรอ?

1
ใช้กรณีสำหรับ `gs '
ตามเอกสารสำหรับgs: เข้าสู่โหมดสลีปเป็นเวลา N วินาที (ค่าเริ่มต้น 1) ดังนั้นคุณสามารถใส่เป็นกลุ่มเพื่อการนอนหลับเป็นเวลา 10 10gsวินาทีโดยใช้ กรณีใช้งานที่ดีสำหรับคำสั่งนี้คืออะไร

6
ลบ n lines ข้าม 1 สคริปต์บรรทัด
ฉันต้องการสร้างสคริปต์ Vim พื้นฐานที่เพียงแค่ลบบรรทัด n ข้าม 1 บรรทัดและทำซ้ำจนกว่าจะสิ้นสุดของเอกสาร ฉันไม่สนใจการจับคู่ที่เฉพาะเจาะจงฉันแค่ต้องการลบบรรทัด ตัวอย่างเช่น; ดังนั้นฉันต้องการทำซ้ำคำสั่ง3ddjสำหรับเอกสารทั้งหมด Text I want to keep. Text I want to delete. Text I want to delete. Text I want to delete. Text I want to keep. Text I want to delete. Text I want to delete. Text I want to delete. …

2
ฉันจะพลิกตัวละครหรือคำเช่น emacs ได้อย่างไร
ใน readline ของ bash ในโหมด emacs ฉันเพิ่งค้นพบฟังก์ชั่นการแปลงสัญญาณทำให้ฉันมีโอกาสที่จะแก้ไขการพิมพ์ผิดอย่างรวดเร็วเช่น dc dir ถึง cd dir โดยกดCTRL+ Tที่cตัวละคร มีบางอย่างที่คล้ายกันใน Vi / Vim ที่ให้ฉันสลับอักขระและคำต่าง ๆ ได้ไหม?

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