โหมดเลือกคืออะไรและเมื่อไหร่ที่เกี่ยวข้องกับการใช้งาน?


36

ฉันตั้งใจกดghในโหมดปกติและเริ่มการเลือกดังนั้นฉันเงยหน้าขึ้นมอง doc :h Select-modeและพบว่า

จากสิ่งที่ฉันเข้าใจโหมดเลือกอยู่ใกล้กับโหมดภาพยกเว้นว่า:

  • การพิมพ์อักขระที่พิมพ์ได้<CR>หรือ<BS>จะลบการเลือกเริ่มต้นโหมดแทรกและแทนที่การเลือกด้วยอินพุต
  • hjkl และการเคลื่อนไหวโหมดปกติหรือโหมดภาพอื่น ๆ จะไม่ขยายการเลือกเว้นแต่ว่าจะนำหน้าด้วย <Shift>
  • <CTRL-O>และ<CTRL-G>จะเปลี่ยนเป็นโหมดภาพ
  • หมอบอกว่าสิ่งต่อไปนี้ซึ่งถ้าฉันเข้าใจถูกต้องหมายความว่ามันเป็นไปได้ที่จะทำการเลือก linewise ซึ่งจะได้รับการปฏิบัติตามตัวอักษร:

    เมื่อใช้โอเปอเรเตอร์ในโหมดเลือกและการเลือกเป็น linewise บรรทัดที่เลือกจะถูกดำเนินการตาม แต่เหมือนในการเลือกตามตัวอักษร ตัวอย่างเช่นเมื่อลบทั้งบรรทัดจะสามารถวางในภายหลังได้ครึ่งบรรทัด

ฉันสับสนเล็กน้อยเพราะฉันไม่เข้าใจว่าทำไมโหมดนี้จึงถูกสร้างขึ้น: ทั้งหมดที่ฉันเห็นคือมันสะดวกกว่าโหมดภาพเล็กน้อยและไม่มีคุณสมบัติเพิ่มเติม

นอกจากนี้การค้นหาที่ฉันทำทั้งหมดให้ผลลัพธ์เกี่ยวกับการเลือกในโหมดภาพ แต่ไม่ถือว่าโหมดการเลือก

ดังนั้นคำถามของฉันคือ:

  • เหตุใดจึงสร้างโหมดเลือก
  • สิ่งที่เป็นข้อได้เปรียบเมื่อเทียบกับโหมดภาพ?
  • กรณีการใช้งานที่น่าสนใจมากขึ้นที่จะใช้โหมดเลือกคืออะไร?

MetaNoteฉันไม่มีความคิดว่าแท็กใดที่เกี่ยวข้องกับคำถามนี้อย่าลังเลที่จะทดสอบซ้ำหากจำเป็น


สำหรับฉันดูเหมือนว่าสิ่งที่คุณคาดหวังจากโปรแกรมแก้ไข GUI ส่วนใหญ่ (การเลือกบรรทัดไม่ได้หมายความว่ามันจะไปยังบรรทัดใหม่เมื่อวาง, Shift + ลูกศรขยาย, พิมพ์แทนที่การเลือกสิ่งที่ฉันคาดหวังจาก, พูด, notepad)
muru

@muru: ฉันยอมรับว่ามันเตือนถึงการแก้ไขประเภทนี้ แต่หมายความว่าโหมดนี้จะถูกนำไปใช้เพื่อเอาใจผู้ใช้บางคนที่ต้องการใช้ Vim เป็นตัวแก้ไขข้อความที่ไม่ดีใช่ไหม? มันดูแปลกสำหรับฉันจริง ๆ
statox

จริงๆแล้วคุณสมบัติการวางนั้นมีประโยชน์ในบางกรณี ฉันแน่ใจว่ามีคนโพสต์คำถามเกี่ยวกับการวางแบบนี้ และสำหรับการเขียนทับการบันทึกการกดแป้นพิมพ์ (คุณไม่ต้องกดc) ดังนั้นขึ้นอยู่กับสิ่งที่คุณต้องการโหมดการเลือกอาจมีประโยชน์ น่าเสียดายที่ฉันลืมไปตลอด
muru

ฉันจะพยายามหาคำถามนี้แล้ว สำหรับการเขียนทับฉันไม่รู้สึกว่าcมันเป็นการกดแป้นพิมพ์ที่บันทึกไว้เพราะการเลือกไม่สะดวกเท่ากับในโหมดภาพ (เนื่องจากคุณไม่สามารถใช้eหรือiwโดยตรง)
statox

1
คุณพูดถูก: เมื่อ'selectmode'มีmouseและ'mouse'มีการตั้งค่าสถานะสำหรับโหมดปัจจุบันการเลือกด้วยเมาส์จะเริ่มเลือกโหมด (ตามเอกสาร)
statox

คำตอบ:


23

จุดทั้งหมดของโหมดการเลือกคือการจัดเตรียมพฤติกรรมการเลือกคล้ายกับที่ใช้ในโปรแกรมแก้ไขทั่วไป

ในบันทึกเดียวกันนั้นมีmswin.vimซึ่งเปลี่ยนตัวเลือกและการแมปจำนวนมากเพื่อให้ Vim รู้สึกเหมือนตัวแก้ไขทั่วไป

ฉันสามารถสันนิษฐานได้ว่าสิ่งเหล่านั้นถูกเพิ่มเข้ามาเพื่อโปรดกลุ่มย่อยของผู้ใช้ Vim ซึ่งในเวลานั้น Vim ได้รับการย้ายไปยัง Windows (ฉันรู้สึกไม่พอใจกับ Windows ในเอกสาร)

อย่างไรก็ตามโหมดการเลือกเป็นสิ่งจำเป็นสำหรับส่วนเสริมการขยายตัวอย่างและสามารถใช้เพื่อความสนุกสนานและกำไร:

nnoremap § *``gn<C-g>
inoremap § <C-o>gn<C-g>
snoremap <expr> . @.

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

1
เมื่อเลือกคำแล้วให้พิมพ์บางสิ่งจากนั้นกด§เพื่อเลือกเหตุการณ์ที่เกิดขึ้นถัดไปพิมพ์สิ่งอื่นแล้วกด§อีกครั้งเพื่อเลือกเหตุการณ์ที่เกิดขึ้นถัดไปและอื่น ๆ คุณสามารถกด.เพื่อแทรกครั้งสุดท้ายซ้ำ มันแตกต่างจาก "สูตรดอท"
romainl

ฉันยังไม่เข้าใจ พฤติกรรมการเลือกเป็นอย่างไรมากกว่าบรรณาธิการทั่วไป
still_dreaming_1

7
@ still_dreaming_1 ในตัวแก้ไขทั่วไปให้พิมพ์fooและเลือก คุณไม่จำเป็นต้องกดปุ่มใด ๆ เพื่อแทนที่สิ่งที่เลือกไว้ใช่ไหม นั่นคือสิ่งที่เลือกโหมดจำลอง
romainl

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