ฉันจะเปลี่ยนจนกระทั่งขีดล่างถัดไปเป็น VIm ได้อย่างไร


60

หากฉันมีข้อความนี้เป็นกลุ่มและเคอร์เซอร์ของฉันอยู่ที่ตัวอักษรตัวแรก:

www.foo.com

ฉันรู้ว่าฉันสามารถทำได้:

  • cwเพื่อเปลี่ยนเป็นช่วงแรกเนื่องจาก a word(ตัวพิมพ์เล็ก) สิ้นสุดที่เครื่องหมายวรรคตอนหรือพื้นที่สีขาว
  • cWเพื่อเปลี่ยนที่อยู่ทั้งหมดเนื่องจากWord(ตัวพิมพ์ใหญ่ w) สิ้นสุดที่ช่องว่างเท่านั้น

ตอนนี้ถ้าฉันมีสิ่งนี้:

stupid_method_name

และต้องการเปลี่ยนเป็นสิ่งนี้หรือไม่?

awesome_method_name

ทั้งสองcwและcWเปลี่ยนแปลงสิ่งทั้งหมด แต่ฉันต้องการเปลี่ยนชิ้นส่วนก่อนขีดเส้นใต้

เทคนิคทางเลือกของฉันคือc/_ความหมาย 'เปลี่ยนจนกว่าคุณจะกดขีดเส้นใต้ถัดไปในการค้นหา' แต่สำหรับฉันแล้วยังทำให้ขีดเส้นใต้ทั้งหมดถูกเน้นเป็นข้อความค้นหาซึ่งน่ารำคาญเล็กน้อย

มีตัวระบุที่ชอบwหรือWไม่รวมขีดเส้นใต้


มีอะไรผิดปกติกับ:nohl?
Ignacio Vazquez-Abrams

ฉันทำต้องการคำค้นหาที่จะมีการเน้นมากที่สุดของเวลา; ไม่ใช่เมื่อฉันใช้การค้นหาเป็นการเคลื่อนไหว (ฉันเพิ่งถามคำถามนี้: superuser.com/questions/244042/ … )
Nathan Long

คำตอบ:


82

cf_คุณสามารถทำได้ f จะไม่เน้นอักขระที่ค้นหา

คุณสามารถทำได้ct_ถ้าคุณไม่ต้องการรวม _


15
คุณกำลังสับสน f, t, F และ T ทำให้fไปข้างหน้ากับตัวละคร; Fย้ายกลับไปที่ตัวละคร; tก้าวไปข้างหน้าต่อหน้าตัวละคร; และTเลื่อนไปด้านหลังของอักขระไปทางขวาของอักขระเป้าหมาย ct_ดังนั้นตัวอย่างที่สองของคุณควรจะได้รับ
garyjohn

2
ตอนนี้คำตอบของฉันถูกแก้ไข ขออภัยและขอบคุณ
doubleface

4
ct_เป็นสิ่งที่ฉันต้องการ ตอนนี้กลายเป็นส่วนหนึ่งของเวิร์กโฟลว์ปกติของฉัน ขอบคุณ!
Nathan Long

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

2
เป็นกลุ่มไม่เคยล้มเหลวเพียงคนเดียวที่เข้าใจในสิ่งที่มันสามารถ!
Benjamin R

64

วางสิ่งนี้ไว้ใน. vimrc ของคุณ:

set iskeyword-=_

จากนั้น _ จะถือว่าเป็นขอบเขตของคำ (แม้ว่าไม่ใช่ขอบเขตของคำ) และ cw สามารถใช้เพื่อเปลี่ยน "ยอดเยี่ยม" และ cW เพื่อเปลี่ยนสิ่งทั้งหมด

ดู:

:help iskeyword

และ

:help word

สำหรับข้อมูลเพิ่มเติม


6
เป็นเรื่องที่ดีมากที่ได้รู้ว่าฉันสามารถกำหนดขอบเขตของคำศัพท์ของตัวเองได้ แต่หลังจากความคิดบางอย่างฉันคิดว่าวิธีแก้ปัญหาที่ดีที่สุดคือct_doubleface พูดด้านล่างเนื่องจากกระชับและเป็นพฤติกรรมเริ่มต้น
Nathan Long

นี่คือรายการโปรดส่วนตัวของฉัน
เจย์

2
ฉันชอบอันนี้ แต่มันทำให้การเข้ารหัสสีของฉันเป็นแบบซินแท็กซ์ใน php
Aaron Surrain

ฉันจะยกเลิกการตั้งค่าหรือสลับนี้ได้อย่างไร
Behe

1

camelcasemotionเป็นปลั๊กอินเสียงเรียกเข้าที่ค่อนข้างใช้งานง่ายซึ่งช่วยให้คุณเลื่อนดูคำต่าง ๆ ได้เมื่อใช้เครื่องหมายขีดล่างหรือเครื่องหมาย camelcase การใช้ปลั๊กอินนี้คุณสามารถวางเครื่องหมายจุลภาคไว้ข้างหน้าคำสั่งการเคลื่อนไหว vim แบบดั้งเดิมจำนวนมากซึ่งจะช่วยให้คุณสามารถใช้คำในเครื่องหมายขีดล่างหรือตัวอักษร camelcase เป็นคำเต็ม

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