วิธีที่ง่ายที่สุดในการลบคำว่า "คอมโพสิต"?


20

ขออภัยหาก "คอมโพสิต" ไม่ใช่คำศัพท์ด้านเทคนิค ฉันหมายถึงต่อไปนี้:

Hi, I-am-a-composite-word and we are not

ฉันต้องการลบเฉพาะคำประสม ในโหมดคำสั่งถ้าฉันเลื่อนเคอร์เซอร์ไปที่Iจากนั้นทำซ้ำdwสองสามครั้งหรือพิมพ์dwอีกครั้งดีกว่าตามด้วยการ.กดไม่กี่ครั้งจะเป็นการหลอกลวง อย่างไรก็ตามด้วยเหตุผลต่าง ๆ ฉันพบว่าตัวเองทำสิ่งนี้ค่อนข้างบ่อยในระหว่างวันดังนั้นฉันจึงสงสัยว่ามีวิธีที่เรียบง่ายกว่านี้หรือไม่

ป.ล. ฉันไม่คิดว่าคำสั่งd9wจะเป็นวิธีที่ง่ายกว่า การนับลำดับของคำและขีดคั่นที่ยาวนานนั้นไม่ใช่ความคิดของฉัน "เรียบง่าย"

คำตอบ:


33

สิ่งที่คุณกำลังเรียกคำว่าคอมโพสิตคือ WORD (ตรงกันข้ามกับคำ) การอ่าน:h wordและ:h WORDควรเป็นประโยชน์:

                            *word*
A word consists of a sequence of letters, digits and underscores, or a
sequence of other non-blank characters, separated with white space (spaces,
tabs, <EOL>).  This can be changed with the 'iskeyword' option.  An empty line
is also considered to be a word.
                            *WORD*
A WORD consists of a sequence of non-blank characters, separated with white
space.  An empty line is also considered to be a WORD.

สิ่งที่คุณกำลังมองหาที่นี่คือdWเมื่อคุณอยู่ในIหรือdiWเมื่อคุณอยู่ที่ใดก็ได้ในคำว่า

บางทีในอนาคตคุณจะต้องอ่าน:h 'iskeyword'ด้วย


1
ขอบคุณสำหรับคำตอบ: มันใช้งานได้ เรื่องของคำนิยาม: A WORD consists of a sequence of non-blank characters, separated with white space. Separated with white spaceหมายความว่าคำว่าถูกคั่นด้วยคำอื่น ๆ หรือคำที่มีช่องว่างใช่ไหม?
DeltaIV

2
@DeltaIV Yup in-this-sentence there are four"WORDs4 คำin-this-sentence, there, และare four"WORDsเป็นเรื่องง่ายที่จะเห็นเมื่อคุณใช้wและWหรือbและBตัวอย่างเช่น โปรดทราบว่าช่องว่างอาจเป็นช่องว่าง "ปกติ" หรืออักขระแท็บ
statox

1
คำตอบนี้จะมีประโยชน์มากขึ้นทันทีหากเริ่มต้นด้วย "สิ่งที่คุณกำลังมองหาที่นี่คือ dW .. " แทนที่จะบังคับให้ผู้อ่านลุยผ่านไปที่ย่อหน้ากลางเพื่อค้นหาวิธีแก้ปัญหา
ทำเครื่องหมาย Meuer

9

อีกวิธีแก้ปัญหาทั่วไปมากขึ้นคือการลบได้ถึงตัวละครช่องว่างโดยใช้dt (มีช่องว่างหลังt) ซึ่งหมายถึง "ลบไปที่ [ตัวละคร] นี้มักจะมีประโยชน์สำหรับสิ่งที่ชอบdt:และคล้ายกันเช่นกัน


สิ่งที่ไม่dt: ทำอะไร?
DeltaIV

1
เมื่อฉันโพสต์คำตอบเดียวกันฉันเรียนรู้ว่าคุณสามารถใช้<code>dt </code>เพื่อรวมช่องว่างในตอนท้าย
BurnsBA

2
@DeltaIV ที่จริงแล้วสิ่งที่คุณต้องการจริงๆคือการอ่าน:h motion.txtและการใช้vimtutorซึ่งจะช่วยให้คุณได้รับพื้นฐานของ Vim
statox

@statox ฉันเคยมีทักษะที่ VIM ... 10 ปีที่ผ่านมา :-) vimtutorฟังดูน่าสนใจมาก ฉันไม่แน่ใจว่าติดตั้งบนเซิร์ฟเวอร์ระยะไกล (ดูเหมือนไม่ได้manติดตั้งยูทิลิตี้) อย่างไรก็ตามฉันจะตรวจสอบ: หากมีการติดตั้งโดยอัตโนมัติพร้อมกับvimแพคเกจโอกาสสูงที่ฉันจะสามารถใช้งานได้
DeltaIV

1
@BurnsBA ขอบคุณจริง ๆ มันมีประโยชน์มากสำหรับเว็บไซต์นี้ Btw คุณสามารถแก้ไขโพสต์จากคนอื่น ๆ และได้รับ 2 ชื่อเสียงถ้าการแก้ไขของคุณทำให้มันผ่านกระบวนการตรวจสอบเพื่อน แต่ด้วยวิธีนี้ฉันได้เรียนรู้สิ่งใหม่ ๆ เช่นกัน :-)
อัลโล

4

หากคุณต้องการใช้ต่อไปdwและชอบและยังต้องการให้มันทำงานด้วยการคลิกสองครั้งที่คำคุณสามารถเพิ่ม

set iskeyword+=-

ถึงคุณ.vimrcซึ่งเพิ่ม-เป็นอักขระคำ

ตัวอย่าง:

ดับเบิลคลิกที่ตัวอักษรใด ๆ ในไฮไลท์สายตาab-cdab-cd


ฉันสบายดีกับการเปลี่ยนไปใช้dWแต่โซลูชันของคุณก็ค่อนข้างเท่ห์เพราะมันส่งผลต่อโหมดภาพด้วยเช่นกันฉันเดา ผมหมายถึงโดยการปรับเปลี่ยนiskeyword, ดับเบิลคลิกแล้วกดฉันควรจะสามารถที่จะลบd ab-cdขวา?
DeltaIV

หรือบางทีฉันควรเปลี่ยนเป็นโหมดแสดงภาพด้วยvแทนที่จะคลิกสองครั้ง ขวา?
DeltaIV

1
@DeltaIV โดยการปรับเปลี่ยน iskeyword คุณสามารถใช้วิธีการใด ๆ กับวัตถุคำ (รวมถึง iw หรือ aw ง่ายกว่าการใช้เมาส์หรือโหมดภาพ)
D. Ben Knoble

4

อย่าลืมคำสั่งf(ค้นหา) และt(ถึง) ฉันอาจจะแค่dt หรือdf (สังเกตพื้นที่ตอนท้าย)

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