Czy „dap” usuwa wszystko?


15

Znam polecenia „dd” i „d {motion}”, ale nie mogę znaleźć „dap” w help.txt vima. Co robi „dap” w trybie normalnym i dlaczego? (Alternatywnie, jak mogę dowiedzieć się tego rodzaju rzeczy dla siebie?)

Odpowiedzi:


29

„dap” nie usuwa wszystkiego. Na przykład spróbuj umieścić to w buforze:

1
1

2
2

3
3

Następnie umieść kursor na „2” i wpisz „dap”. Opuści „1” i „3”.

Jest tak, ponieważ „dap” usuwa akapit . W rzeczywistości jest to w rzeczywistości mnemoniczny: „(D) elete (A) (P) aragraph”. Możesz to zobaczyć w pomocy pod :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.

Nazywa się to „obiektem tekstowym”. Możesz o nich przeczytać w: :h text-objectslub możesz przeczytać ten niesamowity artykuł na temat obiektów tekstowych.

Tak czy inaczej, podstawową ideą obiektów tekstowych jest to, że definiujesz granice obiektu, a następnie stosujesz polecenia do całego obiektu, nawet gdy jesteś w jego środku. Na przykład jestem pewien, że wiesz, że możesz użyć dwdo usunięcia słowa. Ale co jeśli jesteś w tym scenariuszu?

Hello world
Cursor: ^

Jeśli wpiszesz dw, nadal wopozostanie ci lewo. Jeśli wpiszesz diw, spowoduje to usunięcie słowa , więc w większości jest to równoznaczne z pisaniem bdw.

Jak mogę znaleźć coś takiego dla siebie?

Miałeś podstawowy pomysł! Sprawdzanie pomocy to zawsze dobry początek. W tym przypadku mogłeś zrozumieć, że djest to operator, więc pomoc, której tak naprawdę szukałeś, była argumentem dla operatora, w tym przypadku ap.


+1! Być pedantycznym: diw opuszcza końcową przestrzeń, a bdw nie. diw byłby taki sam jak bde ;-) Wisior dla bdw to tak naprawdę daw, który używa tego samego „a” co uderzenie w pytaniu.
M.Herzkamp

1
@ M.Herzkamp: A jednak diwi bdenadal nie są zupełnie takie same: jeśli kursor znajduje się na początku wyrazu. Podobnie, jeśli kursor znajduje się na spacji między słowami, bdwusunie słowo po lewej stronie, a dawsłowo po prawej. Myślę, że pierwotna odpowiedź „w przeważającej części…” jest prawdopodobnie najlepsza, jaką otrzymamy pod względem tych równoważności.
wchargin
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.