2010-01-07 14 views
59

Ich bin ein C# -Entwickler, der gerade erst beschlossen hat, mein Wissen über die mir zur Verfügung stehenden Werkzeuge zu erweitern. Das erste Tool, das ich zu lernen gelernt habe, ist Vi/Vim. Alles wurde gut geht so weit, aber es gibt ein paar Fragen kann ich nicht auf die Antwort zu finden scheinen:Vim yanking Bereich von Linien

  1. Lets sagen, dass ich eine Reihe von Linien zerren wollte. Ich weiß, es gibt viele Möglichkeiten, dies zu tun, aber ich würde es gerne nach Zeilennummer machen. Ich dachte, es wäre ähnlich wie die Ersatzbefehle funktionieren, etwa 81,91y. Gibt es eine Möglichkeit, dies zu tun?

  2. Ich bin ein wenig verwirrt über die g Befehl im normalen Modus. Es scheint eine Vielzahl von Dingen zu tun und ich kann nicht wirklich bestimmen, was der g-Befehl in seinem Kern tut. Ich bin verwirrt darüber, ob es ein Bewegungsbefehl oder eine Art "alles auffangen" für andere Befehle im normalen Modus ist. Kann jemand bitte dies erklären oder mich auf eine Referenz verweisen, die eine gute Erklärung des Befehls g gibt?

+1

Linie Haben Sie über den Befehl wissen ": help" in vim (1)? –

+0

Ja, aber ich konnte es nicht in allen Referenzen finden. Es stellte sich heraus, dass ich dachte, ich würde es aus dem normalen Modus tun, aber Hometoast zeigte, wie es aus dem Befehlsmodus gemacht werden musste. Für den g-Befehl finde ich nur, dass die Hilfe nicht alles zusammenhält, wie ich es von den anderen Befehlen erwarten würde. – jnadro52

+3

Nebenbei möchte ich vielleicht einen Beitrag pro Frage machen. – Dana

Antwort

96

Yank Linien 81-91

:81,91y<enter> 

Wenn Sie Ihre Finger die : und , Schlüssel zu finden, nicht gefällt, würde dies auch (gehen 81 an die Leitung, zerren 11 Zeilen) arbeiten

Meine einzige Verwendung von g ist 5gg. In die 5. Zeile gehen. 22gg: 22. Zeile. Wie Jimbo sagte, ist es wirklich nur ein Modifikator für einige andere Befehle.

Der Vollständigkeit halber erklärt (http://vim.wikia.com/wiki/Power_of_g) eine Menge, wie g im Befehlsmodus funktioniert.

+0

Wow, das war schnell! Ich habe es nicht aus dem Kommandomodus heraus versucht, duh! Vielen Dank für die schnelle Antwort. – jnadro52

+2

Die Verwendung von Großbuchstaben bietet auch Variationen: 'gg' wird in die erste Zeile gehen, während' G' zum letzten geht. Auch "5G" geht zu Zeile 5. Zeichen können auch anstelle von Zeilennummern verwendet werden (gut für Makros), dh: ': 'a, 52y' – NVRAM

+5

Sie können auch: 5 im Befehlsmodus, um zur fünften Zeile zu gelangen usw. – rmeador

4

g macht nichts an sich. Es ist einer von ein paar Meta-Befehlen, die eine Reihe von sort-nicht verwandten Befehlen enthält.

z ist noch ein weiterer Befehl wie folgt.

+0

Danke. Ich verstehe jetzt, dass es nur für verschiedene Zwecke verwendet wird. Wenn ich versuche, diese Werkzeuge zu lernen, versuche ich, die Befehle mit etwas zu verbinden, das ich abstrahieren kann, damit ich mich daran erinnere, wie man es richtig benutzt. Es scheint, als wäre der Befehl g nur eines dieser Dinge, die Sie sich merken müssen, um es richtig zu benutzen. – jnadro52

2

Vims :help index beschreibt g wie:

|g|    g{char}   extended commands, see |g| below 

Scroll down (oder :help g) für eine Liste.

+1

Ich war vertraut mit der: Hilfe, aber ich war nicht vertraut mit: Hilfe (Befehl). Das wird in Zukunft sehr nützlich sein. Vielen Dank, Sir. – jnadro52

6

Ich mag auch relativ Zeilennummer Option Vims verwenden, was bedeutet, kann ich geben Sie bitte:

:-10,-7ya a 

den Text in einen Puffer namens heftig zu ziehen.

N.B. Durch Angeben von A wird der aktuelle Inhalt von Puffer a angehängt.

Vergessen Sie nicht, dass Sie auch Textblöcke kopieren und Textblöcke bewegen und mit den ähnlichen Befehlen:

:-10,-7co . 

Mittel, um die vier Textzeilen 10 Zeilen oberhalb bis unterhalb der aktuellen Zeile kopieren und

bedeutet, bewegen Sie die vier Zeilen des Textes 10 Zeilen oben bis unter die aktuelle Zeile.

11

Sie können die aktuellen Zeilen auch mit 't' an die aktuelle Cursorposition kopieren.

:81,91t.<enter> 

Dadurch werden die Zeilen 81-91 unter der Zeile eingefügt, auf der sich der Cursor befindet.

Ich habe dies von http://vimcasts.org gelernt, die eine ausgezeichnete Ressource auf VIM ist.

5

Der Befehl G geht an eine bestimmte Zeilennummer, wenn ein Zählerwert angezeigt wird. 81G bringt Sie auf Linie 81.

Der y Befehl kann mit einer Bewegung kombiniert werden, wie G. Um also alles bis Zeile 91 zu zerren, können Sie y91G verwenden.

Zusammen erhalten Sie:

81Gy91G 

Go 81 Zeile, dann Yank beim Gehen 91.

+1

Ich wünschte, ich könnte das mehr als einmal aufbessern. Etwas, das mir half, war, dies zu verwenden, um zu einem Register zu springen (in meinem Fall Register + d. H. Das Klemmbrett): '' '81G" + y91G''' – mgarey