Löscht "dap" alles?


15

Ich kenne die Befehle "dd" und "d {motion}", kann aber "dap" nicht in der help.txt von vim finden. Was macht "dap" im normalen Modus und warum? (Alternativ, wie kann ich so etwas für mich selbst herausfinden?)

Antworten:


29

"dap" löscht eigentlich nicht alles. Versuchen Sie beispielsweise, dies in Ihren Puffer zu legen:

1
1

2
2

3
3

Stellen Sie dann Ihren Cursor auf '2' und geben Sie "dap" ein. Es wird die 1er und 3er verlassen.

Dies liegt daran, dass "dap" einen Absatz löscht . In der Tat ist das eigentlich das Mnemon: "(D) elete (A) (P) aragraph". Sie finden es in der Hilfe unter :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.

Dies wird als "Textobjekt" bezeichnet. Sie können darüber lesen unter :,:h text-objects oder Sie können diesen fantastischen Artikel über Textobjekte lesen .

In beiden Fällen besteht die Grundidee von Textobjekten darin, dass Sie die Grenzen eines Objekts definieren und dann Befehle auf das gesamte Objekt anwenden, selbst wenn Sie sich in der Mitte befinden. Ich bin mir zum Beispiel sicher, dass Sie damit dwein Wort löschen können. Aber was ist, wenn Sie in diesem Szenario sind?

Hello world
Cursor: ^

Wenn Sie tippen dw, haben Sie immer noch die wolinke Seite. Wenn Sie tippen diw, wird das Wort innerhalb des Wortes gelöscht , sodass es zum größten Teil der Eingabe entspricht bdw.

Wie kann ich so etwas für mich selbst herausfinden?

Sie hatten die Grundidee unten! Das Überprüfen der Hilfe ist immer ein guter Anfang. In diesem Fall hätten Sie erkennen können, dass des sich um einen Operator handelt. Die Hilfe, nach der Sie wirklich gesucht haben, war in diesem Fall das Argument für den Operator ap.


+1! Um pedantisch zu sein: diw verlässt den abschließenden Raum, bdw nicht. diw wäre dasselbe wie bde ;-) Der Anhänger für bdw ist eigentlich daw, der das gleiche "a" wie der Strich in der Frage verwendet.
M.Herzkamp

1
@M.Herzkamp: Und doch diwund bdesind doch nicht ganz die Gleichen: wenn dein Cursor am Anfang eines Wortes steht. Befindet sich der Cursor auf einem Leerzeichen zwischen Wörtern, bdwwird das Wort links und dawdas Wort rechts gelöscht. Ich denke, die ursprüngliche Antwort "zum größten Teil ..." ist wahrscheinlich die beste, die wir in Bezug auf diese Äquivalenzen erhalten werden.
Wchargin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.