Câu trả lời:
"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ó wo
bê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 đó d
là 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
.
diw
và bde
vẫ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 đó bdw
sẽ xóa từ bên trái, trong khi daw
sẽ 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.