Visual Studio, cài đặt thụt lề cho mỗi giải pháp


89

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

Tùy chọn để đặt điều này trong Visual Studio nằm trong Công cụ-> Tùy chọn-> Trình soạn thảo văn bản-> <language> -> Tab

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


14
Tôi ước nó có thể phát hiện kiểu tab / thụt lề trên mỗi tệp. tức là khi một tệp được mở, nó sẽ sử dụng kiểu tab / thụt lề cho tệp đó. Sublime Text làm được điều đó.
IsmailS

Câu trả lời:


20

Đây là một cách (phải 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 lề ( 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) Kết nối với việc tải giải pháp của bạn: Trong trình khám phá macro, hãy chọn EnvironmentEvents, chọn SolutionEventstrong menu thả xuống đầu tiên, Openedtrong menu 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 mình tới chỗ thụt lề cần thiết.


8
Hack, có, nhưng nó hoạt động. Cảm ơn. Đối với nhà phát triển C #, đó là DTE.Properties ("TextEditor", "CSharp")
Mike Stockdale,

2
Nếu bạn đặt vấn đề này trong một giải pháp, bạn sẽ phải đưa nó vào tất cả các giải pháp. Hầu như không sử dụng được, đặ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.
gỉyx

93

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ó một tiện ích mở rộng đặt thụt lề dựa trên .editorconfig tệp trong giải pháp / gốc dự án:

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

Cũng có phần mở rộng tương tự cho Visual Studio Code .


2
Tôi thích điều này - thiết lập nhanh chóng, nó không có vấn đề chậm như một số tùy chọn khác và nó có phần thưởng bổ sung là bạn có thể thay đổi cài đặt trên các dự án riêng lẻ trong một giải pháp, nếu bạn cần đến.
karaken

@ondatra Tôi không thể làm cho nó hoạt động khi tôi đặt tệp vào thư mục Giải pháp của mình (đồng thời với .slntệp), chỉ trong mỗi thư mục dự án. Ngoài ra, nó có hỗ trợ indent_brace_stylekhông?
drzaus

@ondatra vừa phát hiện ra nó không hỗ trợ indent_brace_stylechưa - Tôi đã 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

1
VS2017 v15.3 hiện hỗ trợ rất nhiều thuộc tính kiểu mã hóa .
Frédéric


4

Từ trang web VS extension EditorConfig ( http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328 ):

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

(nhấn mạnh của tôi)

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


2

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


5
có nhưng một ví dụ về tệp đã hoàn thành sẽ rất hay :)
toddmo


0

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 thực sự không giải quyết được câu hỏi cụ thể. Tuy nhiên, nó áp dụng trong các điều kiện chung; tức là "Visual Studio, cho mỗi cài đặt giải pháp" trong trường hợp bất kỳ ai tình cờ ở đây tìm kiếm đ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 đó, ở cuối cửa sổ, Save Tochọn "Giải pháp XYZ cá nhân" (hoặ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 xml YOURSOLUTION.sln.DotSettings.uservớ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>

Cài đặt trình sạc lại - Chỉ lưu cho giải pháp


1
Cài đặt bộ nạp lại nào được sử dụng để đặt thụt lề thành 2 khoảng trắng hoặc 4 khoảng trắng?
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 thú vị về VS2012 là bạn có thể sử dụng tìm kiếm khởi chạy nhanh ( CTRL+Q) và gõ "Tabs" để chuyển ngay đến tất cả các cài đặt ngôn ngữ có sẵn.
drzaus

Nhưng cài đặt VS đó là toàn cầu (không phải cho mỗi giải pháp / dự án) và bạn đề xuất sử dụng trình bán lại vì nó có cài đặt cho mỗi giải pháp / dự án?
Endy Tjahjono 19/09/13

Bạn hiểu rồi - Tôi đang trong quá trình thay đổi một số cài đặt khác trong trình sạc lại, vì vậy tôi cho rằng nó cũng sẽ quản lý thụt lề. Tôi vừa xem qua trình sạc lại một lần nữa để biết cài đặt tab, nhưng tôi không thể tìm thấy nó. Vì vậy, cảnh báo là "đối với khá nhiều cài đặt ngoại trừ những cài đặt mà trình sạc lại không quản lý, như kích thước thụt lề". Tôi sẽ cập nhật câu trả lời, vui lòng phản đối 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 lỗi cho bạn, nhưng thực sự hy vọng rằng resharper có cài đặt thụt lề cho mỗi dự án và tôi chỉ chưa tìm thấy nơi để đặt nó.
Endy Tjahjono

0

Vì vậy, giải pháp được chấp nhận nói rằng "Bạn chỉ cần ánh xạ các giải pháp của mình đến thụt lề cần thiết", điều này thật tuyệt, ngoại trừ cách bạn thực hiện đ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 hơn ở đây . Phương pháp 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í là bố cục cửa sổ (tôi nghĩ vậy).

  • Trong Visual Studio 2008, mở Công cụ> Macro> Trình khám phá Macro
  • Nhấp đúp vào MyMacros> Module1 (nếu bạn không có Module1, hãy nhấp chuột phải vào MyMacros và chọn 'Mô-đun mới ...' để tạo).
  • 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 thêm tự động. Thay đổi mã đó thành như sau:

    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 mà 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ài đặt tab, bỏ chọn 'Tất cả cài đặt' rồi chọn Tùy chọn> Trình chỉnh sửa văn bản> 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 kỳ nơi nào bạn có giải pháp mà 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 tới khi bạn mở một giải pháp có chứa solution.vssettings, nó sẽ tải các cài đặt đó.

Nếu macro không chạy, có thể là do bản vá bảo mật MS. Dựa trên điều này , hã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"

Đảm bảo khởi động trình chỉnh sửa bạn sử dụng để chỉnh sửa các tệp đó với đặc quyền Quản trị viên (tức là nhấp chuột phải vào Notepad và chọn 'Chạy với tư cách Quản trị viên').

Tôi cũng đã tìm thấy một trình cắm được cho là thực hiện điều tương tự như macro được đề xuất ở trên nhưng vì một số lý do mà nó không hoạt động gì sau khi tôi chạy trình cài đặt của nó.


0

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 (nghĩa là khi được gọi thủ công).

http://llvm.org/builds/

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.