Cách đơn giản nhất để xóa một từ ghép tổng hợp?


20

Xin lỗi nếu "tổng hợp" không phải là thuật ngữ kỹ thuật. Ý tôi là như sau:

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

Tôi chỉ muốn xóa từ tổng hợp. Trong chế độ lệnh, nếu tôi di chuyển con trỏ đến I, sau đó lặp lại dwmột vài lần, hoặc tốt hơn là gõ dwmột lần, sau đó là một vài lần .nhấn, sẽ thực hiện thủ thuật. Tuy nhiên, vì nhiều lý do khác nhau, tôi thấy mình làm việc này khá thường xuyên trong ngày, do đó tôi tự hỏi liệu có cách nào đơn giản hơn không.

PS Tôi sẽ KHÔNG coi lệnh d9wlà một cách đơn giản hơn. Đếm một chuỗi dài các từ và dấu gạch ngang không phải là ý tưởng của tôi về "đơn giản hơn".

Câu trả lời:


33

Những gì bạn đang gọi một từ tổng hợp thực sự là một WORD (bởi sự đối lập với một từ). Đọc :h word:h WORDnên hữu ích:

                            *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.

Những gì bạn đang tìm kiếm ở đây là dWkhi bạn đang ở trên Ihoặc diWkhi bạn ở bất cứ đâu trong từ.

Có thể trong tương lai bạn cũng sẽ cần phải đọc :h 'iskeyword'.


1
cảm ơn vì câu trả lời: nó hoạt động Cung cấp định nghĩa : A WORD consists of a sequence of non-blank characters, separated with white space. Separated with white spacecó nghĩa là WORD được phân tách bằng các từ khác hoặc WORDS với khoảng trắng, phải không?
DeltaIV

2
@DeltaIV Yup in-this-sentence there are four"WORDs4 từ được in-this-sentence, there, arefour"WORDs. Thật dễ dàng để xem khi bạn sử dụng wWhoặc bBchuyển động chẳng hạn. Lưu ý rằng khoảng trắng có thể là khoảng trắng "thông thường" hoặc ký tự tab.
statox

1
Câu trả lời này sẽ hữu ích hơn ngay lập tức nếu nó bắt đầu bằng "Điều bạn đang tìm kiếm ở đây là dW .." thay vì buộc người đọc phải lội qua đoạn giữa để tìm giải pháp.
Mark Meuer

9

Một giải pháp tổng quát khác là xóa tối đa ký tự khoảng trắng bằng cách sử dụng dt (có khoảng trắng sau dấu t), có nghĩa là "xóa thành [ký tự]. Điều này thường hữu ích cho những thứ dt:tương tự và tương tự.


những gì dt: làm gì?
DeltaIV

1
Khi tôi đăng cùng một câu trả lời, tôi biết rằng bạn có thể sử dụng <code>dt </code>để bao gồm một khoảng trắng ở cuối.
BurnsBA

2
@DeltaIV Trên thực tế những gì bạn thực sự cần là đọc :h motion.txtvà sử dụng vimtutor, điều đó sẽ giúp bạn rất nhiều để có được những điều cơ bản của Vim
statox

@statox Tôi từng có kỹ năng tại VIM ... 10 năm trước :-) vimtutornghe rất thú vị. Tôi không chắc nó được cài đặt trên máy chủ từ xa (có vẻ như thậm chí không mancài đặt tiện ích). Tuy nhiên, tôi sẽ kiểm tra: nếu nó tự động được cài đặt cùng với vimgói, thì khả năng cao là tôi sẽ có thể sử dụng nó.
DeltaIV

1
@BurnsBA Cảm ơn bạn, điều đó thực sự hữu ích cho trang web này. Btw. bạn có thể chỉnh sửa bài đăng từ người khác và thậm chí có được danh tiếng +2 nếu chỉnh sửa của bạn thực hiện thông qua một số quy trình đánh giá ngang hàng. Nhưng theo cách này, tôi cũng đã học được một điều mới :-).
allo

4

Nếu bạn muốn tiếp tục sử dụng dwvà những thứ tương tự, và cũng muốn để nó hoạt động với cách nhấp đúp vào một từ, bạn có thể thêm

set iskeyword+=-

để của bạn .vimrc, mà thêm -như là một nhân vật từ.

Thí dụ:

Nhấp đúp vào bất kỳ ký tự nào trong phần ab-cdnổi bật trực quan ab-cd.


Tôi ổn với việc chuyển sang dW, nhưng giải pháp của bạn cũng khá tuyệt vì nó cũng ảnh hưởng đến chế độ trực quan, tôi đoán vậy. Ý tôi là, bằng cách sửa đổi iskeyword, nhấp đúp chuột và sau đó nhấn dtôi sẽ có thể xóa ab-cd. Đúng?
DeltaIV

Hoặc có lẽ tôi nên chuyển sang chế độ trực quan với v, thay vì nhấp đúp. Đúng?
DeltaIV

1
@DeltaIV bằng cách sửa đổi từ khóa, bạn có thể sử dụng bất kỳ phương thức nào với các đối tượng từ (bao gồm cả iw hoặc aw, đơn giản hơn đáng kể so với sử dụng chuột hoặc chế độ trực quan)
D. Ben Knoble

4

Đừng quên các lệnh f(tìm) và t(đến). Có lẽ tôi chỉ dt hoặc df (lưu ý khoảng trống ở cuối).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.