2010-06-14 40 views
27

Có một "tabify" lệnh trong"Tabify" tất cả các tệp trong giải pháp Visual Studio?

Chỉnh sửa> Advanced> Dòng Tabify chọn

(và Power Tools 2010 cũng cung cấp chức năng này trên một cơ sở cho mỗi tập tin) nhưng là có một cách để làm điều này cho tất cả các tệp mã trong một giải pháp?

ReSharper có lệnh Dọn sạch nhưng chỉ có một tùy chọn phù hợp mà tôi tìm thấy ở đó là chạy định dạng trên tất cả các tệp nhiều hơn tôi muốn (Tôi không muốn chạy định dạng đầy đủ, chỉ cần lập bảng).

+1

Hey, là có bất kỳ tin tức về vấn đề này? – brokenisfixed

Trả lời

3

theo như tôi biết "Tabify" là gì - nó chỉ thay thế "" (4 dấu cách) bằng một tab, nó không thay đổi định dạng hoặc bất kỳ thứ gì khác.

Mặc dù tôi khuyên bạn nên sử dụng định dạng tài liệu, "tabification" có thể dễ dàng được thực hiện thông qua một ứng dụng tùy chỉnh sẽ bắt chước hành động tương tự trên tất cả các tệp bạn muốn.

Hy vọng điều này sẽ hữu ích!

+0

Bạn không đề cập đến việc điều này có hoạt động trên toàn bộ giải pháp không? – Borek

+1

Bạn có thể chạy mã sau trên tất cả mã nguồn cho giải pháp 'Regex.Replace (sInput," 4_spaces "," \ t ");' nó sẽ tabify mã nguồn theo cùng cách thức Power Tools làm. Thay đổi "4_spaces" thành không gian thực trong mã như StackOverflow dải nhiều khoảng trắng .. – brokenisfixed

+1

Sẽ cần phải kiểm tra xem nó nhưng có thể có các trường hợp cạnh như tùy chỉnh thụt đầu dòng mà có thể cần xử lý đặc biệt và tìm kiếm toàn cầu & thay thế có thể không hoạt động đúng. Nhưng cảm ơn về tiền boa. – Borek

14

Nếu bạn đã thêm tiện ích mở rộng Microsoft Productivity Power tools (nếu bạn chưa yêu cầu), nó sẽ thêm tùy chọn để tabify tệp. Điều này không áp dụng trên tất cả các tệp trong một giải pháp, nhưng nó được nhắc khi chỉnh sửa từng tệp, trên cơ sở mỗi tệp. Không hoàn toàn là những gì bạn đang theo đuổi mà là một sự giúp đỡ.

Ngoài ra, bạn có thể thử đặt cài đặt trình chỉnh sửa IDE để sử dụng tab, sau đó thực hiện chỉnh sửa tài liệu định dạng menu-chỉnh sửa nâng cao (CTRL + E, D). Điều này sẽ thay thế các nhóm không gian có độ dài tab bằng một tab và có thể được viết cho tất cả các tệp trong giải pháp thông qua macro.

+0

Bạn có thể vui lòng giải thích chi tiết hơn về cách sử dụng Công cụ Powerivity Power của Microsoft để tabify trong VS2013 không? Cảm ơn. – Eliko

+0

Nó cung cấp "thanh dấu nhắc" ở đầu cửa sổ chỉnh sửa khi nó phát hiện các tab hỗn hợp và các khoảng trống cung cấp để tabbify hoặc làm trống tệp. Nếu bộ nhớ phục vụ điều này xảy ra trên quảng cáo tải khi bạn lưu, tôi không nghĩ rằng có một cách khác để buộc hành động trên một tệp. Nếu bạn chỉ muốn sửa/mở rộng tab/không gian, tiện ích mở rộng này chỉ thực hiện: https: //visualstudiogallery.msdn.microsoft.com/91a3f8ae-3152-438a-b5fc-fb37878dd007 –

+0

Vâng. Tôi đã tìm thấy thanh dấu nhắc đó. Tuy nhiên, có vẻ như không có cách nào để tabify toàn bộ các tập tin của giải pháp. Dù sao, cảm ơn một lần nữa. – Eliko

4

Yêu cầu có chứa các liên kết đến các macro IDE có thể thực hiện công việc:
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

Đây là mẫu mã cho một Visual Studio macro tự động định dạng tất cả * .cs, * .h, *. cpp, và tập tin * .hpp trong một giải pháp mở, trong đó bao gồm không gian chuyển đổi các tab (tùy thuộc vào thiết lập Tab của bạn trong Tools> Options> Text Editor> ngôn ngữ cụ thể hoặc "Mọi ngôn ngữ"> Tabs):

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 

Hướng dẫn (Vi Sual Studio 2005, nhưng tương tự cho các phiên bản mới hơn):

  1. Launch Visual Studio
  2. Tools> Macro> Macros IDE ...
  3. Kích chuột phải vào MyMacros> Add> Add New Item ...
  4. Chọn module
  5. Enter "ConvertSpacesToTabs" không có dấu ngoặc kép trong trường Name
  6. Nhấn Add
  7. Thay thế nội dung của các mô-đun mới với mã trên
  8. Nhấp vào Lưu
  9. Đóng Macros IDE
  10. Công cụ> Macro> Macro Explorer
  11. Mở rộng MyMacros> ConvertSpacesToTabs
  12. Double-click vào FormatSolution
  13. Chờ vĩ mô để thúc

Sửa
tôi cập nhật các mã cũng để hỗ trợ * .h, * .cpp, và tập tin * .hpp sử dụng mã từ Siegmund Frenzel ở đây: https://stackoverflow.com/a/14766393/90287

+0

+1 cho liên kết Chris Eargle. Macro của anh ta làm những gì mà OP yêu cầu. –

+0

Liên kết Chris Eargle hiện không dẫn đến đâu cả. – William

+0

@William, tôi đã thêm một liên kết vào lưu trữ của trang đó. Cảm ơn bạn. –

1

Đối với vs2010, bạn có thể sử dụng tìm và thay thế sau (ví dụ này dành cho các tab đến 4 dấu cách).

Trong tìm hộp, hãy nhập: ^{ *} (^{ gian *} tab)

Trong thay thế hộp, nhập \1 (\1 không gian không gian không gian không gian)

Kiểm tra hộp điều kiện và thiết lập để biểu thức thông thường. Phiên bản mới hơn so với sử dụng cú pháp biểu thức chính quy khác nhau, nhưng cũng nên thực hiện tương tự.

Cập nhật này làm việc bằng cách thực hiện một lần cho các tập tin vb, nhưng cần nhiều đèo cho một tập tin resx, vì vậy bạn có thể phải thực hiện nhiều lần tùy thuộc vào loại tập tin ...

Các vấn đề liên quan