Câu hỏi Visual Studio, mỗi cài đặt thụt đầu dòng giải pháp


Tôi đang làm việc trên một vài điều khác nhau và một số tab sử dụng, một số sử dụng 2 khoảng trống cho thụt lề, một người dùng khác 4 khoảng trống cho thụt lề, v.v.

Tùy chọn để thiết lập điều này trong Visual Studio là trong Tools-> Options-> Text Editor -> <language> -> Tabs

Có cách nào để ghi đè lên các cài đặt này trên mỗi cơ sở giải pháp không?


76
2017-07-31 11:44


gốc


Tôi muốn nó có thể phát hiện phong cách tab / thụt đầu dòng trên mỗi cơ sở tập tin. tức là khi một tệp được mở, tệp sẽ sử dụng kiểu tab / thụt đầu dòng cho tệp đó. Sublime Text hiện nó. - IsmailS


Các câu trả lời:


Đây là một cách (thừa nhận là hacky) để đạt được những gì bạn đang tìm kiếm:

1) tạo macro thay đổi thụt đầu dòng (nguồn)

 Sub Set-Indent(indent As integer)
     Dim props As EnvDTE.Properties = DTE.Properties("TextEditor", "C/C++")
     Dim ts As EnvDTE.Property = props.Item("TabSize")
     Dim ins As EnvDTE.Property = props.Item("IndentSize")
     ts.Value = indent 
     ins.Value = indent 
 End Sub

2) Hook lên với tải giải pháp của bạn: Trong trình khám phá macro, chọn EnvironmentEvents, lựa chọn SolutionEvents trong menu thả xuống đầu tiên, Opened trong lần thứ hai. Bây giờ bạn có một macro sẽ kích hoạt mỗi khi bạn mở một giải pháp. Bạn chỉ cần ánh xạ các giải pháp của bạn đến thụt đầu dòng theo yêu cầu.


16
2017-07-31 12:27



Hack, vâng, nhưng nó hoạt động. Cảm ơn. Đối với các nhà phát triển C #, đó là DTE.Properties ("TextEditor", "CSharp") - Mike Stockdale
Nếu bạn đặt điều này trong một giải pháp, bạn sẽ phải đặt nó trong tất cả các giải pháp. Khó sử dụng, đặc biệt là cho các dự án công cộng. EditorConfig (câu trả lời tiếp theo bên dưới) là IMHO tốt hơn. - rustyx
Có vẻ như các macro không tồn tại trong VS 2013 nữa ... - Jeff Bridgman


CẬP NHẬT: VS 2017 hỗ trợ EditorConfig nguyên bản: https://blogs.msdn.microsoft.com/dotnet/2016/12/15/code-style-configuration-in-the-vs2017-rc-update/

Trong VS 2010 trở lên, có phần mở rộng đặt thụt đầu dòng dựa trên .editorconfig tập tin trong thư mục gốc của giải pháp / dự án:

http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328

Cũng tương tự mở rộng cho Visual Studio Code.


74
2017-07-12 15:47



Tôi thích điều này - nhanh chóng thiết lập, nó không có cùng một vấn đề chậm như một số tùy chọn khác, và nó có thêm tiền thưởng mà bạn có thể thay đổi các thiết lập trên các dự án riêng lẻ trong một giải pháp, nếu bạn cần đến. - karaken12
@ondatra Tôi không thể làm cho nó hoạt động khi tôi đặt tệp trong thư mục Solution của tôi (đồng thời với .sln tệp), chỉ trong mỗi thư mục dự án. Ngoài ra, nó có hỗ trợ không indent_brace_style? - drzaus
@ondatra vừa phát hiện ra nó không hỗ trợ indent_brace_style chưa -- Tôi có đã mở một vấn đề cho nó. - drzaus
cảm ơn bạn. xin lưu ý, tôi đã phải sử dụng bản cập nhật 0.4.0 từ github.com/editorconfig/editorconfig/issues/116 cho vs2012update3 - SteelBytes
VS2017 v15.3 hỗ trợ rất nhiều thuộc tính mã hóa kiểu. - Frédéric


Ngoài ra còn có một Add-in gọi là "Rebracer" bây giờ ... liên kết là ở đây: http://visualstudiogallery.msdn.microsoft.com/410e9b9f-65f3-4495-b68e-15567e543c58


6
2017-08-06 16:27



Phần mở rộng Rebracer hoạt động rất tốt. Vì nó tích hợp và sửa đổi các cài đặt tích hợp của Visual Studio, nó đạt được mục đích mà không cần tài nguyên chuyên sâu. - Alex Essilfie


Từ phần mở rộng VS EditorConfig (http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328) trang mạng:

Dự án EditorConfig định nghĩa một định dạng tệp đơn giản để định cấu hình   các tùy chọn soạn thảo văn bản phổ biến chẳng hạn như kích thước thụt đầu dòng. Những   tệp cấu hình được thiết kế để ngồi cùng với nguồn của dự án   mã, cho phép trình chỉnh sửa văn bản sử dụng các tùy chọn phù hợp trên tệp theo từng tệp   nền tảng. Dự án EditorConfig cung cấp các plugin cho nhiều văn bản phổ biến   biên tập viên, làm cho định dạng hoàn toàn đa nền tảng.

(tôi nhấn mạnh)

Tiết lộ đầy đủ: Tôi đã không thể kiểm tra cá nhân nó (vì ReSharper đã tiếp quản).


3
2017-09-23 14:22





VS2017 RC đã thêm hỗ trợ cho định dạng .editorconfig.


3
2017-11-28 11:32



có nhưng một ví dụ về tập tin đã hoàn thành sẽ tốt đẹp :) - toddmo


Bạn có thể đặt cài đặt Chèn tab / không gian bằng props.Item("InsertTabs") = bool

Kiểm tra điều này: https://github.com/jamesfoster/VS-Whitespace-Macros


0
2018-05-04 10:18





CẬP NHẬT: có vẻ như thụt lề không được quản lý bởi Resharper, vì vậy câu trả lời này không thực sự giải quyết câu hỏi cụ thể. Tuy nhiên, nó được áp dụng theo các thuật ngữ chung; I E. "Visual Studio, mỗi cài đặt giải pháp" trong trường hợp bất cứ ai tình cờ tìm thấy điều đó.


Nếu bạn đang sử dụng Resharper, bạn có thể lưu cài đặt định dạng (thực sự, bất kỳ cài đặt nào) chỉ cho giải pháp. Bạn có thể chỉ định thêm nếu chỉ dành cho bạn (nghĩa là không cam kết kiểm soát nguồn) hoặc cài đặt giải pháp cụ thể được chia sẻ (nghĩa là cam kết kiểm soát nguồn).

Resharper > Options > Code Editing > C# (or whatever language) > Formatting Style > Braces Layout

Sau đó, ở dưới cùng của cửa sổ, dưới Save To chọn "Giải pháp XYZ cá nhân" (hoặc được chia sẻ, tùy thuộc vào mục đích của bạn).

Điều này tạo ra một tập tin xml YOURSOLUTION.sln.DotSettings.user với các giá trị như:

<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/ANONYMOUS_METHOD_DECLARATION_BRACES/@EntryValue">NEXT_LINE</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/CASE_BLOCK_BRACES/@EntryValue">NEXT_LINE</s:String>

Resharper Settings - Save for Solution Only


0
2017-07-09 14:21



Cài đặt chia sẻ lại nào được sử dụng để đặt thụt lề thành 2 khoảng trắng hoặc 4 dấu cách? - Endy Tjahjono
@EndyTjahjono là cài đặt VS: Công cụ> Tùy chọn> Trình chỉnh sửa văn bản> (Ngôn ngữ)> Tab> "Kích thước tab" hoặc "Kích thước thụt lề". Và điều tốt đẹp về VS2012 là bạn có thể sử dụng tìm kiếm khởi chạy nhanh (CTRL+Q) và nhập "Tab" để chuyển ngay đến tất cả các cài đặt ngôn ngữ có sẵn. - drzaus
Nhưng thiết lập VS đó là toàn cầu (không phải cho mỗi giải pháp / dự án) và bạn đề nghị sử dụng resharper vì nó có cho mỗi cài đặt giải pháp / dự án? - Endy Tjahjono
Bạn đã cho tôi - Tôi đang ở giữa việc thay đổi một số cài đặt khác trong việc chia sẻ lại, vì vậy tôi cho rằng nó cũng sẽ quản lý thụt đầu dòng. Tôi chỉ cần xem xét lại việc resharper một lần nữa cho các thiết lập tab, nhưng tôi không thể tìm thấy nó. Vì vậy, caveat là "cho bất kỳ thiết lập khá nhiều ngoại trừ những người mà resharper không quản lý, như kích thước indent". Tôi sẽ cập nhật câu trả lời, cảm thấy tự do để downvote vì tôi đã không chú ý đủ. - drzaus
Cảm ơn các cập nhật. FYI Tôi đã không cố gắng để sửa chữa bạn, nhưng đã thực sự hy vọng rằng resharper đã cho mỗi thiết lập indent dự án và tôi chỉ không tìm thấy nơi để thiết lập nó. - Endy Tjahjono


Vì vậy, giải pháp được chấp nhận cho biết "Bạn chỉ cần lập bản đồ các giải pháp của mình cho sự thụt lề theo yêu cầu", điều này thật tuyệt vời, ngoại trừ cách bạn làm điều đó? Sau khi lãng phí rất nhiều thời gian để tìm ra điều đó, tôi đã tìm thấy một phương pháp tôi thích đây. Phương thức này tải bất kỳ số lượng cài đặt đã xuất nào có thể khác nhau cho mọi giải pháp. Cài đặt có thể bao gồm bất kỳ thứ gì, từ thụt lề đến màu sắc hoặc thậm chí bố cục cửa sổ (tôi nghĩ).

  • Trong Visual Studio 2008, mở Tools> Macros> Macro explorer
  • Nhấn đúp MyMacros> Module1 (nếu bạn không có Module1, nhấn chuột phải vào MyMacros và chọn 'New module ...' để tạo nó).
  • Trong cửa sổ trình khám phá macro, nhấp đúp vào 'EnvironmentEvents' ở bên trái.
  • Trong menu thả xuống phía trên bên trái, chọn 'SolutionEvents'.
  • Trong menu thả xuống phía trên bên phải, chọn 'Đã mở'.
  • Mã để xử lý sự kiện SolutionEvents.Opened được tự động thêm vào. Thay đổi mã đó thành:

    Private Sub SolutionEvents_Opened() Handles SolutionEvents.Opened
        Dim item As ProjectItem = DTE.Solution.FindProjectItem("solution.vssettings")
        If Not item Is Nothing Then
            'MsgBox("Uncomment this to see a message when settings are loaded")
            Dim name = item.FileNames(1)
            DTE.ExecuteCommand("Tools.ImportandExportSettings", "/import:""" & name & """")
        End If
    End Sub
    
  • Lưu macro.

  • Sử dụng Công cụ> Tùy chọn để thay đổi giao diện người dùng của bạn để có cài đặt tab và bất kỳ cài đặt nào khác bạn muốn đặt.
  • Công cụ> Cài đặt nhập và xuất ...> Xuất cài đặt môi trường đã chọn> Tiếp theo
  • Để chỉ xuất các thiết lập tab, bỏ chọn 'All Settings' rồi chọn Options> Text Editor> C / C ++
  • Nhấp vào Tiếp theo, sau đó nhập 'solution.vssettings' là 'Bạn muốn đặt tên cho tệp cài đặt của mình' là gì? và lưu tệp vào bất cứ nơi nào bạn có giải pháp bạn muốn sử dụng các cài đặt đó.
  • Kéo solution.vssettings đến bất kỳ vị trí nào trong cửa sổ Solution Explorer.
  • Thoát Visual Studio và lần sau bạn mở một giải pháp chứa solution.vssettings, nó sẽ tải các thiết lập đó.

Nếu macro không chạy, nó có thể là do một bản vá bảo mật MS. Dựa trên điều này, thêm chuỗi sau:

<AllowDComReflection enabled="true"/>

Bên dưới thẻ <runtime> trong ba tệp sau:

"C:\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv\vsmsvr.exe.config"
"C:\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv\vsaenv.exe.config"
"C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe.config"

Hãy chắc chắn để bắt đầu trình soạn thảo bạn sử dụng để chỉnh sửa các tập tin với quyền quản trị (tức là kích chuột phải vào Notepad và chọn 'Run as Administrator').

Tôi cũng tìm thấy một cục sạc đó là nghĩa vụ phải làm điều tương tự như macro đề xuất ở trên nhưng vì một lý do nào đó nó không làm bất cứ điều gì sau khi tôi chạy trình cài đặt của nó.


0
2018-05-23 21:02





clang-format cung cấp các tùy chọn khá phức tạp để định dạng mã nguồn của bạn.

Plugin Visual Studio khá thô sơ, tức là nó không chạy tự động, nhưng nó hoạt động tốt (khi được gọi theo cách thủ công, nghĩa là).

http://llvm.org/builds/


0
2017-07-08 08:59