2016-07-14 8 views
2

Ich habe mich gefragt, ob es einen Weg gibt, nach einem Wort auf die Position zu springen. Ich war die Formatierung den folgenden Text:Formatieren von Text in vim + Cursor nach der Interpunktion eines Worts springen

$scope, $rootScope, $state, $ionicPopup 

in:

$scope, 
$rootScope, 
$state, 
$ionicPopup 

ich die folgenden Befehle verwendet:

Eli<enter><escape> 
Eli<enter><escape> 
Eli<enter><escape> 
Eli<enter><escape> 

Diese schrecklich ineffizient scheint .. es muss einen besseren Weg geben!

Wenn ich an den Punkt nach einem Wort des Satz springen kann (es X Befehl nennen), konnte ich verwenden:

Xi<enter><escape> 
+1

Muss es eine Bewegung sein? So etwas funktioniert unabhängig von der Anzahl der Spalten: ':% s /, \ zs/\ r/g'. Oder Sie könnten ein Makro verwenden. –

+0

@SatoKatsura Ich hatte nicht gedacht, Regex zu verwenden, ist das, was Sie in einer Situation wie diesem empfehlen würden? Vielleicht muss ich meine Regex-Fähigkeiten wirklich verbessern. –

+0

Ich bin nicht sicher, was "Situation wie folgt" bedeutet. Aber im Allgemeinen, ja, ein einzelnes Ersetzen ist in der Regel besser als das Wiederholen einer Sequenz vier Mal. –

Antwort

1

ich es mit einer Substitution tun würde:

:s/ /\r/g 

Aber Sie etwas tun könnte wie:

f r<CR>;.;. 

Siehe :help f, :help r, :help ; und :help ..

+0

Ausgezeichnet! Vielen Dank. Ich muss mich auf meine Regex konzentrieren. Wie lernst du es? irgendwelche empfohlenen Ressourcen? –

+1

Auch hatte ich nicht, whitespace Zeichen als tatsächliche Charaktere zu behandeln und sie mit "f" zu finden. –

+0

Ich würde diese Regex empfehlen, die viel genauer ist ': s/\ (\ $ \) \ @ = Es gibt einen Fall, in dem Sie nicht wissen, wie viele Leerzeichen zwischen den Wörtern stehen. –