“dap”은 모든 것을 삭제합니까?


15

"dd"및 "d {motion}"명령에 익숙하지만 vim의 help.txt에서 "dap"을 찾을 수 없습니다. "dap"은 일반 모드에서 어떤 역할을합니까? 그 이유는 무엇입니까? (또는, 어떻게 이런 종류의 것을 스스로 찾을 수 있습니까?)

답변:


29

"dap"은 실제로 모든 것을 삭제하지는 않습니다. 예를 들어 이것을 버퍼에 넣으십시오.

1
1

2
2

3
3

그런 다음 커서를 '2'에 놓고 "dap"을 입력하십시오. '1'과 '3'을 그대로 둡니다.

"dap"은 단락을 삭제하기 때문 입니다. 사실, 그것은 실제로는 니모닉입니다 : "(D) elete (A) (P) aragraph". 아래 도움말에서 볼 수 있습니다 :h ap.

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

이것을 "텍스트 객체"라고합니다. 에 대한 내용을 읽을 수 있습니다 : :h text-objects또는 텍스트 객체에 대한이 멋진 기사를 읽을 수 있습니다 .

어느 쪽이든, 텍스트 개체의 기본 개념은 당신이의 경계를 정의하는 것입니다 오브젝트를 하고 당신이 그것의 중간에있을 경우에도 그 전체 개체에 명령을 적용합니다. 예를 들어, dw단어를 삭제하는 데 사용할 수 있다는 것을 알고 있습니다 . 그러나이 시나리오에 있다면 어떨까요?

Hello world
Cursor: ^

을 입력 dw해도 여전히 wo왼쪽이됩니다. 을 입력 하면 단어 내부diw 가 삭제 되므로 대부분을 입력하는 것과 같습니다 .bdw

이런 종류의 물건을 어떻게 알 수 있습니까?

당신은 기본 아이디어를 가지고 있었다! 도움말 확인은 항상 좋은 시작입니다. 이 경우 d연산자 임을 알 수 있었으므로 실제로 찾고자하는 도움은 연산자에 대한 논거였습니다 (이 경우) ap.


+1! pedantic하기 위해 : diw는 후행 공간을 떠나지 만 bdw는 그렇지 않습니다. diw는 bde와 동일합니다. ;-) bdw의 펜던트는 실제로 daw이며 질문의 획과 동일한 "a"를 사용합니다.
— M.Herzkamp

1
M.Herzkamp @ : 그리고 아직 diw하고 bde여전히 같은 꽤 있습니다 : 커서가 단어의 시작에 있는지. 마찬가지로 커서가 단어 사이의 공백에 있으면 bdw왼쪽 daw의 단어는 삭제되고 오른쪽의 단어는 삭제됩니다. 나는 원래 답변의 "대부분…"이 아마도 우리가 이러한 동등성 측면에서 얻을 수있는 최선이라고 생각합니다.
— wchargin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.