Có phải dap không xóa tất cả mọi thứ?


15

Tôi quen thuộc với các lệnh "dd" và "d {motion}", nhưng không thể tìm thấy "dap" trong help.txt của vim. "Dap" làm gì trong chế độ bình thường và tại sao? (Ngoài ra, làm thế nào tôi có thể tự mình tìm ra loại điều này?)

Câu trả lời:


29

"Dap" không thực sự xóa tất cả mọi thứ. Ví dụ: thử đặt cái này vào bộ đệm của bạn:

1
1

2
2

3
3

Sau đó đặt con trỏ của bạn vào '2' và nhập "dap". Nó sẽ để lại '1 và' 3 '.

Điều này là do "dap" xóa một đoạn văn . Trong thực tế, đó thực sự là ghi nhớ: "(D) elete (A) (P) aragraph". Bạn có thể thấy nó trong phần trợ giúp dưới :h apđây:

                            *v_ap* *ap*
ap          "a paragraph", select [count] paragraphs (see
            |paragraph|).
            Exception: a blank line (only containing white space)
            is also a paragraph boundary.
            When used in Visual mode it is made linewise.

Đây được gọi là "đối tượng văn bản". Bạn có thể đọc về những điều này dưới : :h text-objects, hoặc bạn có thể đọc bài viết tuyệt vời này về các đối tượng văn bản.

Dù bằng cách nào, ý tưởng cơ bản của các đối tượng văn bản là bạn đang xác định ranh giới của một đối tượng và sau đó áp dụng các lệnh cho toàn bộ đối tượng đó ngay cả khi bạn ở giữa nó. Ví dụ, tôi chắc chắn rằng bạn biết bạn có thể sử dụng dwđể xóa một từ. Nhưng nếu bạn đang ở trong kịch bản này thì sao?

Hello world
Cursor: ^

Nếu bạn gõ dw, bạn vẫn sẽ có wobên trái. Nếu bạn gõ diw, nó sẽ xóa bên trong từ , vì vậy đối với hầu hết các phần, nó tương đương với việc gõ bdw.

Làm thế nào tôi có thể tìm ra loại điều này cho bản thân mình?

Bạn đã có ý tưởng cơ bản xuống! Kiểm tra sự giúp đỡ luôn là một khởi đầu tốt. Trong trường hợp này, bạn có thể nhận ra rằng đó dlà một toán tử, vì vậy sự giúp đỡ mà bạn thực sự tìm kiếm là đối số cho toán tử, trong trường hợp này ap.


+1! Để được phạm vi: diw rời khỏi không gian dấu, trong khi bdw thì không. diw sẽ giống như bde ;-) Mặt dây chuyền cho bdw thực sự là daw, sử dụng cùng một "a" như nét trong câu hỏi.
M.Herzkamp

1
@ M.Herzkamp: Chưa hết diwbdevẫn không hoàn toàn giống nhau: nếu con trỏ của bạn là trên đầu của một từ. Tương tự như vậy, nếu con trỏ của bạn nằm trên một khoảng trắng giữa các từ, sau đó bdwsẽ xóa từ bên trái, trong khi dawsẽ xóa từ bên phải. Tôi nghĩ rằng câu trả lời ban đầu là "cho phần lớn nhất" có lẽ là câu trả lời hay nhất mà chúng ta có được về các tương đương này.
wchargein
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.