Ich war mir kürzlich der Filtertechnik bewusst !
und ich liebe sie. Leider kann ich es nicht in einem Visual-Block-Modus verwenden. Hoffe, einige Experten hier würden mir helfen.
Grundsätzlich möchte ich eine Spalte wie die dritte unten (nur eine MWE) direkt sortieren. Und ich möchte die anderen Spalten beim Sortieren nicht stören.
Ich habe versucht, !
die visuell (Blockmodus) ausgewählte dritte Spalte durch das sort
Dienstprogramm zu filtern ( ) . Die Sortierung geht jedoch eher über die Auswahl hinaus, dh alle Zeilen werden vertauscht, nicht nur die Auswahl, sondern auch die Sortierung anhand der ersten Spalte!
1. LARGEST 40
2. SECOND-LARGEST 168
3. MID 2.8
4. MID 540
5. MID 14.84
6. MID 40
7. SECOND-LEAST 64
8. LEAST 8
Ich habe die letzte Spalte mit dem visuellen Block ausgewählt und gesagt, !sort --reverse
welche als angezeigt wird
'<,'>!sort --reverse
Und das Ergebnis ist seltsam im Gegensatz zu dem, was ich erwartet hatte. Das Ergebnis hat die gesamten Zeilen sortiert / vertauscht, nicht nur eine Spalte, und das auch, basierend auf der ersten Spalte, unabhängig von meiner Auswahl in der dritten Spalte!
8. LEAST 8
7. SECOND-LEAST 64
6. MID 40
5. MID 14.84
4. MID 540
3. MID 2.8
2. SECOND-LARGEST 168
1. LARGEST 40
Sofern nicht anders unmöglich, möchte ich eine reine vim + sort-Lösung anstelle der relativ fortschrittlichen Tools wie sed
/ awk
. Es ist wichtiger, mich selbst zu kennen, wie begrenzt der visuelle Blockmodus im Vergleich zum visuellen Modus ist.
quelle
sort
Befehl von vim verfügbar ist, sodass Sie den externen Befehl nicht aufrufen müssen, um!sort
eine reguläre Sortierung durchzuführen.:help filter
), sondern auch standardisiert (sorry, ich weiß nicht, wie ich diesen POS verknüpfen soll). Sie können sich nicht beschweren, wenn Sie nicht RFTM.Antworten:
Ich denke, Ihre beste Hoffnung ist das vis.vim- Plugin. Dieses Plugin bietet einen Befehl
B
, mit dem ein Befehl auf einen Block angewendet werden kann.Hier wählen Sie nach der Installation des Plugins Ihren Block aus und verwenden dann:
Beachten Sie, dass der Befehl beliebig sein kann, sodass Sie stattdessen
!sort
viele andere Verarbeitungen für den Block ausführen können, z. B. das Speichern in einer anderen Datei (:'<,'>B w foo.txt
) oder das Anwenden einer Ersetzung (:'<,'>B s/foo/bar/g
).quelle
$
im blockweisen visuellen Modus verwendet wird.