2010-11-10 7 views
42

Moje rozwiązanie (projekt 30+) jest trochę nieładne, jeśli chodzi o miksowanie zakładek i spacji, i chcę to naprawić jednym prostym krokiem.Narzędzie/trik do zamiany tabulatorów we wszystkich plikach całego rozwiązania VS

Czy ktoś zna sztuczkę/narzędzie do zrobienia tego w jednym kroku dla całego rozwiązania?

EDYCJA: Nie dokładnie to, co miałem na myśli. Chcę, aby dokumenty były ładnie sformatowane. Po prostu znajdź/zamień to, czego nie zrobisz .. dokumenty nadal będą bałaganem. chcę coś takiego formatu -> Zaawansowane -> Document Format polecenia

+0

powershell? ... –

+0

zrobi to szybki skrypt. Jeśli możesz uruchomić IronPython, IronRuby lub Boo, byłoby to bardzo łatwe. zrobienie tego jest C# również nie jest zbyt skomplikowane. Mogę dołączyć jako scenariusz jako odpowiedź, jeśli chcesz –

Odpowiedz

59

Jeśli twoje pliki zawierają spacje jako tabulacje o równej szerokości wzdłuż całego rozwiązania (tj. 4 spacje na kartę), powinieneś użyć zwykłego narzędzia VS: Quick replace. Aby przestrzegać reguł formatowania StyleCop, należy używać spacji zamiast tabulacji, więc przejdź do Quick replace (CTRL-h), wybierz Use wildcard, a następnie w polu Find what możesz użyć symbolu 4-spacji dla wszystkich rozwiązań (Look in pole).

Ale jeśli pliki roztwór zawiera zaczepy wykonane z pomieszczeń o różnej szerokości, lub chcesz zastosować formatowanie pojedynczy stylu, to na pewno powinien używać Resharper „s funkcję do formatowania kodu. Ta funkcja nazywa się Code Cleanup. Aby zastosować code cleanup do całego rozwiązania lub wybranego projektu, przejdź do eksploratora rozwiązań i wybierz Cleanup code w menu kontekstowym. Ale przed uruchomieniem ponownego formatowania całego rozwiązania spróbuj i dostosuj go do jednego pliku, istnieje wiele opcji w ustawieniach programu Resharper.

+0

Tego właśnie szukałem .. ponowne formatowanie – Flores

3

tam przejść:

using System; 
using System.IO; 

class _Runner { 
    static void Main(string[] args) { 

    var root=args[0]; 
    var filePaths = Directory.GetFiles(root, "*.cs", SearchOption.AllDirectories); 

    int updated = 0; 
    foreach (var path in filePaths) { 
     var content = File.ReadAllText(path); 
     var replaced = content.Replace(" ", "\t"); 
     if (replaced == content) { 
     continue; 
     } 

     ++updated; 
     Console.WriteLine("fixing " + path); 
     File.WriteAllText(path, replaced); 
    } 

    Console.WriteLine("fixed {0} files", updated); 
    } 
} 

Zapis jako spaces-to-tabs.cs i uruchom:

C:>c:\Windows\Microsoft.NET\Framework\v3.5\csc spaces-to-tab.cs 
C:>spaces-to-tabs.exe C:\path\to\your\solution 
3

Trzymam narzędzie unix katalog na mojej ścieżce podczas pracy w systemie Windows, tylko na takie sytuacje awaryjne. Na przykład zamieniłoby to wszystkie karty na 4 spacje w dowolnych plikach .cs w katalogu c: \ myproject lub jego podkatalogach.

find c:\myproject -name *.cs -exec sed -i -e "\"s/\t/ /g\"" {} ";" 
0

Ctrl-h, ustaw "Szukaj w:" na "całe rozwiązanie"

także można nagrać makro.

0

Prostym i szybkim sposobem jest otwarcie pliku w Notatniku ++ i zastąpienie go ręcznie (włącz "pokaż wszystkie znaki", a zakładki będą podświetlone) lub zastąp je automatycznie (musisz grać z "Ustawieniami")

Powiązane problemy