2014-06-25 12 views

Antwort

15

Meine erste Idee, eine Substitution, am Ende der Suche zu viel wie Birei ist so ging ich mit AWK (dass ich nicht sehr viel wissen) als Filter verwendet:

:%!awk '{print $2, $1}' 
+2

Darf ich fragen, warum der Downvote? – romainl

+0

Ihre Lösung funktioniert, ich weiß nicht, warum jemand abgelehnt – c4f4t0r

+0

@ c4f4t0r, yeah ... 1. Es funktioniert. 2. Es ist kürzer als eine Substitution. 3. Es ist sehr "vimm-y" und "unix-y", da es ein anderes spezialisiertes Programm als Filter verwendet ... Was auch immer. – romainl

7

Sie können es mit einem regulären Ausdruck erreichen mit \S für Nicht-Leer und \s für Zuschnitte, wie:

:%s/\v^(\S+)\s+(\S+).*$/\2 \1/ 

Es ergibt:

dog cats 
cats dog 
+2

Falls jemand anderes muss die erste Spalte tauschen die letzte zu sein, wenn es mehr als zwei Spalten: (Hunde Frettchen Katzen -> Katzen Frettchen Hunde) ':% s/\ v^(\ S +) \ s + (\ S +) (. *) $/\ 2 \ 3 \ \ 1/' – sventechie

1

Wenn die Spalten die gesamte Datei übernehmen Verwenden Sie diese:

:%normal "adt xA <CTRL-v><CTRL-r>a 

Wenn es nur ein sectio ist n der Datei, machen eine visuelle Auswahl Endanwendung dieses:

:'<,'>normal "adt xA <CTRL-v><CTRL-r>a 

Erläuterung:

  • % oder '<,'>: Führen Sie den folgenden Befehl auf die gesamte Datei (%) oder in einem bestimmten Abschnitt ('<,'>);
  • "adt: Löscht alles bis zum ersten Leerzeichen (Leerzeichen nicht enthalten) und speichert den gelöschten Text im Register a.
  • x: löscht das nachgestellte Leerzeichen;
  • A: beginnt Text anzufügen;
  • <CTRL-v><CTRL-R>a: Eingabe des Befehls <CTRL-r> (es wird ^R angezeigt), der den Inhalt des Registers a einfügt.
1

Sie können archivieren dies in diesem einfachen Weg, alle caracters in der ersten und zweiten Spalte

:%s/\(.\+\)\(\s\+\)\(.\+\)/\3\2\1/g 
1

folgende Makro kann verwendet werden:

qaqqadf A <esc>[email protected] 
  1. qaq löscht das Register a.
  2. qa Aufnahme Makro in Register a starten.
  3. df bis der Raum
  4. A append nach dem Ende der Zeile löschen und ein Raum
  5. <esc>p in den normalen Modus und Paste gehen geben.
  6. j0 Gehe zur ersten Spalte in der nächsten Zeile.
  7. q Stop Makro ein
  8. 99 @ einem Lauf dieses Makro 99 mal (vorausgesetzt, Sie 99 Spalten links haben)
1

«Swap zwei Spalten» Plugin

Ja, es ist so etwas wie ein swap two columns Vim-Plugin.

 111 222 333 444 555  333 222 111 444 555 
     111 222 333 444 555  333 222 111 444 555 
     111 222 333 444 555 → 333 222 111 444 555 
     111 222 333 444 555  333 222 111 444 555 
     111 222 333 444 555  333 222 111 444 555 
Verwandte Themen