2010-06-14 8 views
27

Es gibt eine "tabify" -Befehl in"Tabify" alle Dateien in Visual Studio-Lösung?

Bearbeiten> Erweitert> Tabify Ausgewählte Lines

(und die Power Tools 2010 auch diese Funktionalität auf einer Basis pro-Datei zur Verfügung stellen), aber es gibt einen Weg, dies zu tun für alle Codedateien in einer Lösung?

ReSharper hat einen Cleanup-Befehl, aber die einzige halbwegs passende Option, die ich dort gefunden habe, ist die Formatierung aller Dateien, die mehr als ich will (ich möchte keine komplette Formatierung ausführen, nur tabifying).

+1

Hey, gibt es irgendwelche Neuigkeiten zu diesem Problem? – brokenisfixed

Antwort

3

Soweit ich weiß, was "Tabify" tut, ist dies - es ersetzt nur "" (4 Leerzeichen) mit einem Tab, ändert es nicht die Formatierung oder irgendetwas anderes.

Obwohl ich vorschlagen würde, Dokumentformatierung zu verwenden, könnte die "Tabifizierung" leicht über eine benutzerdefinierte Anwendung erfolgen, die die gleiche Aktion für alle gewünschten Dateien nachahmen würde.

Hoffe, das hilft!

+0

Sie haben nicht erwähnt, ob dies lösungsweit funktioniert? – Borek

+1

Sie können den folgenden Code für den gesamten Quellcode für die Lösung 'Regex.Replace (sInput," 4_spaces "," \ t ") ausführen;' er wird den Quellcode auf die gleiche Weise tabifyieren wie Power Tools. Ändern Sie die "4_spaces" in tatsächliche Leerzeichen im Code als StackOverflow streift mehrere Leerzeichen. – brokenisfixed

+1

Muss es auschecken, aber es kann Kanten Fällen wie benutzerdefinierte Einzug, die spezielle Behandlung erfordern und globale Suche und ersetzen funktioniert möglicherweise nicht richtig. Aber danke für den Tipp. – Borek

14

Wenn Sie die Microsoft Productivity Power tools Erweiterung hinzugefügt haben (die, wenn Sie nicht ich würde empfohlen) fügt es eine Option zum Tabifizieren von Dateien. Dies gilt nicht für alle Dateien in einer Lösung, wird jedoch beim Bearbeiten jeder Datei auf Dateibasis angefordert. Nicht ganz, was du willst, aber eine Hilfe.

Sie könnten auch versuchen, Ihre IDE-Editor-Einstellungen für die Verwendung von Tabs, dann menu-edit-advanced-format Dokument (STRG + E, D). Dadurch werden Gruppen von Tab-Längenbereichen durch eine Registerkarte ersetzt, die über ein Makro für alle Dateien in der Lösung skriptfähig sein sollte.

+0

Könnten Sie bitte mehr darüber erfahren, wie Microsoft Productivity Power Tools in VS2013 tabifyiert wird? Vielen Dank. – Eliko

+0

Es stellt eine "Eingabeaufforderungsleiste" am oberen Rand eines Bearbeitungsfensters zur Verfügung, wenn gemischte Tabstopps und Leerzeichen erkannt werden, die das Tabifizieren oder Platzieren der Datei ermöglichen. Wenn Speicher beim Ladevorgang auf der Ladeanzeige erscheint, glaube ich nicht, dass es eine andere Möglichkeit gibt, die Aktion für eine Datei zu erzwingen. Wenn Sie nur die Tab/Space-Korrektur möchten, tut diese Erweiterung genau das: https: //visualstudiogallery.msdn.microsoft.com/91a3f8ae-3152-438a-b5fc-fb37878dd007 –

+0

Yeah. Ich habe diesen prompten Balken gefunden. Es scheint jedoch, dass es keine Möglichkeit gibt, die Dateien der gesamten Lösung zu tabrizieren. Wie auch immer, danke nochmal. – Eliko

4

Die Anfrage enthält Links zu IDE-Makros, die die Arbeit tun können:
http://blogs.msdn.com/b/kevinpilchbisson/archive/2004/05/17/133371.aspx
http://web.archive.org/web/20090217094033/http://chriseargle.com/post/Format-Solution.aspx

Hier Beispielcode für ein Visual Studio-Makro, das automatisch alle * .cs Formate, * .h, *. CPP und * .hpp Dateien in einer offenen Lösung, die Umwandlung von Leerzeichen zu Tabulatoren (je nach Tab Einstellungen in Extras> Optionen> Texteditor> spezifische Sprache oder "Alle Sprachen"> Tabs) enthält:

Imports System 
Imports EnvDTE 
Imports EnvDTE80 
Imports System.Diagnostics 

Public Module ConvertTabsToSpaces 

    Public Sub FormatSolution() 
     Dim sol As Solution = DTE.Solution 
     For i As Integer = 1 To sol.Projects.Count 
      FormatProject(sol.Projects.Item(i)) 
     Next 
    End Sub 

    Private Sub FormatProject(ByVal proj As Project) 
     If Not proj.ProjectItems Is Nothing Then 
      For i As Integer = 1 To proj.ProjectItems.Count 
       FormatProjectItem(proj.ProjectItems.Item(i)) 
      Next 
     End If 
    End Sub 

    Private Sub FormatProjectItem(ByVal projectItem As ProjectItem) 
     If projectItem.Kind = Constants.vsProjectItemKindPhysicalFile Then 
      If projectItem.Name.LastIndexOf(".cs") = projectItem.Name.Length - 3 Then 
       Dim window As Window = projectItem.Open(Constants.vsViewKindCode) 
       window.Activate() 
       projectItem.Document.DTE.ExecuteCommand("Edit.FormatDocument") 
       window.Close(vsSaveChanges.vsSaveChangesYes) 
      ElseIf ((projectItem.Name.LastIndexOf(".cpp") = projectItem.Name.Length - 4) OrElse (projectItem.Name.LastIndexOf(".hpp") = projectItem.Name.Length - 4) OrElse (projectItem.Name.LastIndexOf(".h") = projectItem.Name.Length - 2)) Then 
       Dim window As Window = projectItem.Open(Constants.vsViewKindCode) 
       window.Activate() 
       projectItem.Document.DTE.ExecuteCommand("Edit.SelectAll") 
       projectItem.Document.DTE.ExecuteCommand("Edit.FormatSelection") 
       window.Close(vsSaveChanges.vsSaveChangesYes) 
      End If 
     End If 

     'Be sure to format all of the ProjectItems. 
     If Not projectItem.ProjectItems Is Nothing Then 
      For i As Integer = 1 To projectItem.ProjectItems.Count 
       FormatProjectItem(projectItem.ProjectItems.Item(i)) 
      Next 
     End If 

     'Format the SubProject if it exists. 
     If Not projectItem.SubProject Is Nothing Then 
      FormatProject(projectItem.SubProject) 
     End If 
    End Sub 

End Module 

Anweisungen (Vi sual Studio 2005, aber ähnlich für neuere Versionen):

  1. von Visual Studio Einführung
  2. Extras> Makros> Makros IDE ...
  3. Rechtsklick auf MyMacros> Hinzufügen> Neues Element hinzufügen ...
  4. Select Module
  5. Enter "ConvertSpacesToTabs" ohne Anführungszeichen in das Feld Name
  6. Klicken Sie auf Hinzufügen
  7. Ersetzen Sie den Inhalt des neuen Moduls mit dem Code oben
  8. Klicken Sie auf Speichern
  9. Schließen Sie die Makro-IDE
  10. Extras> Makros> Makro-Explorer
  11. MyMacros erweitern> ConvertSpacesToTabs
  12. Doppelklicken Sie auf FormatSolution
  13. Warten, bis das Makro

bearbeiten
ich den Code aktualisiert beenden auch * .h, * CPP zu unterstützen und * .hpp Dateien mit Code von Siegmunds Frenzel hier: https://stackoverflow.com/a/14766393/90287

+0

+1 für den Chris Eargle Link. Sein Makro macht das, wonach das OP gefragt hat. –

+0

Chris Eargle Link führt jetzt zu nichts. – William

+0

@William, Ich habe einen Link zu einem Archiv dieser Seite hinzugefügt. Vielen Dank. –

1

Für vs2010 können Sie die folgenden suchen und ersetzen (dieses Beispiel ist für Registerkarten auf 4 Leerzeichen).

im Suchfeld eingeben: ^{ *} (^{ Raum *} tab)

im Feld ersetzen, \1 (\1 space space space space)

Überprüfen Sie den Zustand Box und auf reguläre Ausdrücke eingeben. Neuere Versionen von vs verwenden unterschiedliche Syntax für reguläre Ausdrücke, aber das gleiche sollte machbar sein.

aktualisieren Das funktionierte, indem Sie einmal für vb Dateien ausgeführt wird, aber erforderlich, um mehrere Durchgänge für eine resx Datei, so dass Sie auf den Dateityp abhängig mehrmals ausführen müssen möglicherweise ...

Verwandte Themen