2010-09-29 20 views
7

Es gibt eine surprisingnumber von questions auf thissubject, aber einige, wie keiner von ihnen beantworten, was ich will.Wie kann ich einen Codeblock ausschließlich in vim einrücken?

Ich habe einen Code-Block wie folgt:

void foo { 

somecodehere 
morecode 
... 

} 

Wie Sie den Mut meiner Funktion sind Einzüge auf dem gleichen Niveau wie der Rest meines Code-Block zu sehen. Was ich gerade mache, ist >% am Ende meines Blocks (dh die }), die den gesamten Block einschiebt, einschließlich der Zeilen mit meinen geschweiften Klammern.

Was ich tun möchte, ist ein ähnlicher Befehl, der jede Zeile zwischen ohne meine geschweiften Klammern eingerückt.

Ich kann nicht anfangen zu sagen, wie viel Zeit das würde mich retten.

+1

Verwenden Sie '=' zum Formatieren (nicht Einrücken, aber für mich gibt es gleiche oder bessere Ergebnisse). Es sei denn, Sie mögen nicht, wie vim Ihren Code formatiert. 'gg = G' wird die gesamte Datei formatieren. – FrustratedWithFormsDesigner

+0

@Frustrated nicht genau das, was ich suche (wie manchmal möchte ich nicht mit der inneren Formatierung zu stören), aber auch hilfreich zu wissen. Also +1 an Sie Sir – tzenes

Antwort

11

Anstatt etwas neu zuordnen, scheint >i{ zu tun, was Sie hier wollen, aber es bewegt den Cursor.

+0

+1 - noch kürzer als meine Antwort –

+0

Ich bin in Ordnung mit dem Cursor bewegen – tzenes

+0

Slick. Das geht definitiv in meinem Versteck von Vim-Ness. – alesplin

1

Einsatz

map sb v%><<%<< 

in Ihr .vimrc (ersetzen 'sb' mit einer beliebigen Tastenkombination Sie wollen). verschiebt es die ganze Funktion nach rechts und dann die erste und die letzte Zeile zurück nach links. Es funktioniert in der ersten oder letzten Zeile eines Blocks

2

Setzen Sie den Cursor in den Block, den Sie einrücken möchten, und geben vi{>

v visuellen Modus wechselt.

i{ wählt alles innerhalb des innersten {} Block

> Einzüge den visuellen Block und geht zurück in den normalen Modus

Sie können dann '' verwenden Sie den Cursor wieder in seine ursprüngliche Linie zu bewegen.

N.B. Wenn Sie auch die Klammern einrücken möchten, ersetzen Sie i{ durch a{.

1

Ich benutze Markierungen, die manchmal ein Schmerz sein können, aber es funktioniert.
Gehen Sie auf die letzte Zeile Ihrer Funktion (die Linie über dem})
ma Zeichen erstellen ‚a‘
an die Spitze der Funktion Gehen Sie zurück und dies tun.

> ` ein

, die von einer Ebene nur sagt Einzug, bis es eine erreicht markieren.

Verwandte Themen