2016-05-27 6 views
1

Ich bin auf der Suche nach einem Befehl zum Löschen von der Position nach dem Cursor auf das erste Nicht-Leerzeichen in der gleichen Zeile. Ich habe mehrere Möglichkeiten ausprobiert, und nichts scheint zu funktionieren. d2w kommt am nächsten, löscht jedoch das Zeichen unter dem Cursor.Wie lösche ich den AFTER-Cursor sofort zum ersten Nicht-Whitespace-Zeichen in vim?

z.B. Ich möchte diesen Code

$obj-> 
    set('foo')-> 
    and('bar'); 

(beachten Sie die führenden Leerzeichen!) Zu

$obj->set('foo')->and('bar'); 

So stelle ich den Cursor auf den ersten >, d2w treffen sich ändern, und mit $obj-set('foo')-> auf einer einzigen Zeile am Ende . Beachten Sie das fehlende '>'.

Was ist die Antwort?

Danke!

+0

In diesem Fall möchten Sie beitreten. Versuchen Sie 2J. Es wird drei Linien zu einer Linie verbinden. Ist das was du wolltest, aber anders gefragt? Oder Sie wollten das Richtige, aber Ihr Beispiel ist ein Sonderfall wie das, was ich gesagt habe? – SibiCoder

+0

Schließen, aber funktioniert nicht ganz (insbesondere wenn mehrere Zeilen gleichzeitig ausgeführt werden), da zwischen beiden ein Leerzeichen steht. Jx entfernt den Platz, wenn Sie nur einen Join machen, aber wenn Sie 4Jx tun, hilft das nicht viel. Irgendwelche Vorschläge? – Codemonkey

+0

3gJ hätte funktioniert, oder? – SibiCoder

Antwort

1

J verbindet die aktuelle Zeile mit der nächsten Zeile, aber mit einem Leerzeichen, löscht jedoch führende Leerzeichen in der nächsten Zeile.

gJ verbindet die aktuelle Zeile mit der nächsten Zeile ohne Leerzeichen, aber wenn die zweite Zeile führendes Leerzeichen enthält, wird sie so beibehalten, wie sie ist. Sie können einen Zähler hinzufügen, bevor es n Zeilen, wie 3gJ

Beispiel anschließen:

`3gJ` - join three consecutive lines without spaces. 

In Ihrem Fall

 Jx - Join two lines with space and delete space 

Geben Sie diesen Befehl zweimal, wie JxJx für Ihren Fall.

Sie können nicht 2Jx geben, da J und x zwei Operatoren sind und 2 nur für J allein genommen werden. Außerdem funktioniert gJ in Ihrem Fall nicht, wenn die zweite Zeile führende Leerzeichen enthält.

Verwandte Themen