ความแตกต่างระหว่าง w และ W ในโหมด Escape ของ vim คืออะไร?


19

ฉันกำลังดูคำสั่ง vim help quickref สำหรับการย้ายเคอร์เซอร์ บรรทัดต่อไปทำให้ฉันสับสนเพราะฉันพบว่าทั้งคู่ทำงานเหมือนกัน บางคนสามารถอธิบายให้ฉันเห็นความแตกต่างด้วยตัวอย่าง

N  w            N words forward
N  W            N blank-separated WORDS forward

คำถามเดียวกันนั้นเป็นจริงสำหรับ e และ E เช่นกัน

คำตอบ:


34

ตามเอกสารสูตรนี้ดูเหมือนว่าจะลงมาเพื่อใช้เครื่องหมายวรรคตอน

w   jump by start of words (punctuation considered words)
W   jump by words (spaces separate words)
e   jump to end of words (punctuation considered words)
E   jump to end of words (no punctuation)

ตัวอย่าง

สาธิตการใช้ w

          เอสเอสจาก w

สาธิตการใช้ W

          เอสเอสของ W

โปรดสังเกตในการสาธิตครั้งแรกว่าเมื่อwใดที่เคอร์เซอร์ตกลงไปที่เครื่องหมายวรรคตอนอย่างต่อเนื่องในขณะที่ในการสาธิตครั้งที่ 2 เครื่องหมายวรรคตอนจะถูกข้าม นี่คือความแตกต่างระหว่างคำสั่งตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เทียบเท่า


@slm: ขอบคุณมากสำหรับการสาธิตที่ยอดเยี่ยม ด้วยการสาธิตดังกล่าวไม่จำเป็นต้องอ่านคำตอบเช่นกัน
rahul.deshmukhpatil

5

จริงๆแล้วมันค่อนข้างง่ายwเพียงแค่ข้ามไปที่คำถัดไป แต่เครื่องหมายวรรคตอนหรือช่องว่างใด ๆ จะแบ่งคำ Wเป็นเหมือนคำสั่งถัดไปของคำว่า strong-strength คำนี้คั่นด้วยช่องว่างเท่านั้นไม่ว่าจะเป็นแท็บเว้นวรรคหรือขึ้นบรรทัดใหม่ wหยุดที่เครื่องหมายวรรคตอน delimiting ในกรณีที่คุณต้องการจัดการกับสิ่งนั้น

ฉันพบความแตกต่างที่มีประโยชน์กับชื่อโฮสต์บ่อยที่สุด:

birdman.cartoons.fictional.com # Fictional host

ด้วยwคุณหยุดในแต่ละส่วนของชื่อโฮสต์และจุด เพียงข้ามชื่อโฮสต์ทั้งหมดและไปบนW #ทั้งสองนี้ใช้กับdและcสำหรับการลบและการเปลี่ยนคำ

หากวางตำแหน่งที่จุดเริ่มต้นของบรรทัดด้านบนหากคุณต้องการแทนที่birdman.cartoonsด้วยสิ่งอื่นคุณจะใช้3cwเพื่อแทนที่ทั้งสองส่วนแรกและจุดที่อยู่ตรงกลาง คุณไม่สามารถทำได้ด้วยWโดยไม่ต้องพิมพ์ชื่อโฮสต์ทั้งหมดใหม่


2

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

ในกรณีของข้อความตัวอย่างนี้:

This line is space separated with no commas
however, this line is—note—comma, separated,see

wจะข้ามไปที่ตัวอักษรแรกของแต่ละคำอย่างมีความสุขในบรรทัดแรกเนื่องจากมีที่ว่างสำหรับการเจรจาเท่านั้น มันจะล้มเหลวอย่างรุนแรงในบรรทัดที่ 2 ด้วยเครื่องหมายวรรคตอนลงบนตัวอักษรตัวแรกของแต่ละคำและเครื่องหมายจุลภาคและขีดกลาง ต้องการย้ายจากคำคำในบรรทัดที่ 2 คุณจะต้องใช้1Shiftw

1. ถึงตอนนั้น Vim เห็นว่า "is – note – comma" เป็นคำเดียว


1

ความแตกต่างสามารถพบได้ในหน้าช่วยเหลือภายในของกลุ่ม ครั้งแรกให้คำอธิบายของ w และ W กับ:helpw หรือ:help W:

  • w [นับ] คำล่วงหน้า | พิเศษ | การเคลื่อนไหว
  • W [นับ] WORDS ไปข้างหน้า | พิเศษ | การเคลื่อนไหว

ตอนนี้เราต้องการที่จะรู้ว่าคำจำกัดความของคำและคำว่าอะไร ค้นหาคู่มืออีกครั้งด้วย:help wordและ:help WORDเราจะพบพวกมัน

  • คำประกอบด้วยa sequence of letters, digits and underscoresหรือa sequence of other non-blank characters, separated with white space(ช่องว่างแท็บ) สิ่งนี้สามารถเปลี่ยนแปลงได้ด้วยตัวเลือก 'iskeyword' บรรทัดว่างยังถูกพิจารณาว่าเป็นคำ
  • a sequence of non-blank characters, separated with white spaceคำประกอบด้วย บรรทัดว่างยังถูกพิจารณาว่าเป็นคำ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.