Visual Studio、ソリューションごとのインデント設定


89

私はいくつかの異なることに取り組んでおり、タブを使用するもの、インデントに2つのスペースを使用するもの、インデントに4つのスペースを使用するユーザーなどがあります。

Visual Studioでこれを設定するオプションは、[ツール]-> [オプション]-> [テキストエディター]-> [<言語>]-> [タブ]にあります。

ソリューションベースでこれらの設定を上書きする方法はありますか?


14
ファイルごとにタブ/インデントスタイルを検出できるといいのですが。つまり、ファイルを開くと、そのファイルにはタブ/インデントスタイルが使用されます。Sublime Textはそれを行います。
IsmailS 2014年

回答:


20

ここにあなたが探しているものを達成する(確かにハッキーな)方法があります:

1)インデントを変更するマクロを作成します(ソース

 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)ソリューションの読み込みに接続します。マクロエクスプローラーでEnvironmentEvents、を選択SolutionEventsし、最初のドロップダウンで選択Openedし、2番目のドロップダウンで選択します 。これで、ソリューションを開くたびにトリガーされるマクロができました。ソリューションを必要なインデントにマップするだけです。


8
ハック、はい、しかしそれは機能します。ありがとう。C#開発者にとっては、DTE.Properties( "TextEditor"、 "CSharp")です
マイクストックデール

2
これを1つのソリューションに含める場合は、すべてのソリューションに含める必要があります。特に公共プロジェクトではほとんど使用できません。EditorConfig(次の回答は以下)はより良いIMHOです。
rustyx

93

更新:VS 2017はEditorConfigをネイティブでサポートしています:https : //blogs.msdn.microsoft.com/dotnet/2016/12/15/code-style-configuration-in-the-vs2017-rc-update/

VS 2010 以降では、ソリューション/プロジェクトルートの.editorconfigファイルに基づいてインデントを設定する拡張機能があります。

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

Visual Studio Codeにも同様の拡張機能があります


2
私はこれが好きです-すばやくセットアップできますが、他のいくつかのオプションと同じスローダウンの問題はありません。必要に応じて、ソリューションの個々のプロジェクトの設定を変更できるという追加のボーナスがありますに。
karaken12

@ondatraソリューションフォルダー(.slnファイルと同時に)にファイルを配置すると、各プロジェクトフォルダーのみに機能しません。また、それはサポートしていindent_brace_styleますか?
drzaus 2013

@ondatraはちょうどそれが判明サポートしていないindent_brace_style、まだ私がしました- 問題を開いたそれのために。
drzaus 2013

ありがとうございました。vs2012update3のgithub.com/editorconfig/editorconfig/issues/116 から0.4.0アップデートを使用する必要があったことに注意してください
SteelBytes

1
VS2017 v15.3では、多くのコーディングスタイルプロパティがサポートされるようになりました。
フレデリック

7

「Rebracer」と呼ばれる別のアドインもあります...リンクはこちらです:http ://visualstudiogallery.msdn.microsoft.com/410e9b9f-65f3-4495-b68e-15567e543c58


Rebracerエクステンションは非常にうまく機能します。Visual Studioの組み込み設定と統合して変更するため、リソースを集中的に使用せずに目的を達成します。
Alex Essilfie

4

VS拡張EditorConfig(http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328)Webサイトから:

EditorConfigプロジェクトは、インデントサイズなどの一般的なテキストエディターオプションを構成するための単純なファイル形式を定義します。これらの構成ファイルは、プロジェクトのソースコードと一緒に配置されるように設計されているため、テキストエディターはファイルごとに適切なオプションを使用できます。EditorConfigプロジェクトは、多くの一般的なテキストエディター用のプラグインを提供し、フォーマットを完全にクロスプラットフォームにします。

(強調鉱山)

完全な開示:(ReSharperが引き継ぐため)私は個人的にテストすることができませんでした。


2

VS2017 RCは.editorconfig形式のサポートを追加しました。


5
はい、しかし完成したファイルの例はいいでしょう:)
toddmo


0

更新:インデントはResharperによって管理されていないようなので、この回答は実際には特定の質問を扱っていません。ただし、それは一般的な条件で適用されます。つまり、「Visual Studio、ソリューションごとの設定」です。


Resharperを使用している場合は、ソリューションのみのフォーマット設定(実際にはすべての設定)を保存できます。さらに、自分専用(つまり、ソース管理にコミットしない)または共有ソリューション固有の設定(つまり、ソース管理にコミット)を指定できます。

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

次に、ウィンドウの下部にある[ Save ToSolution XYZ personal](または目的に応じて共有)を選択します。

これにより、次のYOURSOLUTION.sln.DotSettings.userような値を持つxmlファイルが作成されます。

<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設定-ソリューション用にのみ保存


1
インデントを2スペースまたは4スペースに設定するために使用されているリシャープ設定はどれですか?
Endy Tjahjono 2013

VS設定の@EndyTjahjono:[ツール]> [オプション]> [テキストエディター]>(言語)> [タブ]> [タブサイズ]または[インデントサイズ]。VS2012の良い点は、クイック起動検索(CTRL+Q)を使用して「タブ」と入力すると、使用可能なすべての言語設定に直接ジャンプできることです。
drzaus 2013

しかし、そのVS設定は(ソリューション/プロジェクトごとではなく)グローバルであり、ソリューション/プロジェクトごとの設定があるため、resharperの使用を提案しましたか?
Endy Tjahjono 2013

あなたは私を手に入れました-私はリシャーパーの他のいくつかの設定を変更している最中でしたので、それがインデントも管理すると想定しました。タブの設定についてもう一度reshaperを調べましたが、見つかりませんでした。したがって、注意点は、「インデントサイズなど、リシャーパーが管理できない設定を除くほとんどすべての設定」です。答えを更新します。十分な注意を払っていなかったので、遠慮なく投票してください。
drzaus 2013

更新していただきありがとうございます。参考までに、私はあなたを修正しようとはしていませんでしたが、実際には、プロジェクトごとにインデント設定があり、それを設定する場所が見つからなかったことを期待していました。
Endy Tjahjono、2013

0

だから、受け入れられた解決策は「あなたがあなたの解決策を必要なインデントにマッピングする必要があるだけです」と言います、それはあなたがそれをどのように行うかを除いて素晴らしいです?それを理解しようと多くの時間を費やした後、私はここで私が好む方法を見つけました。このメソッドは、ソリューションごとに異なる可能性があるエクスポートされた設定をいくつでもロードします。設定には、インデントから色、ウィンドウレイアウトまで、あらゆるものを含めることができます(私はそう思います)。

  • Visual Studio 2008で、[ツール]> [マクロ]> [マクロエクスプローラー]を開きます。
  • MyMacros> Module1をダブルクリックします(Module1がない場合は、MyMacrosを右クリックし、[新しいモジュール...]を選択して作成します)。
  • マクロエクスプローラーウィンドウで、左側の[EnvironmentEvents]をダブルクリックします。
  • 左上のドロップダウンで、「SolutionEvents」を選択します。
  • 右上のドロップダウンで、「オープン」を選択します。
  • SolutionEvents.Openedイベントを処理するコードが自動的に追加されます。そのコードを次のように変更します。

    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
    
  • マクロを保存します。

  • [ツール]> [オプション]を使用して、UIを変更し、タブ設定やその他の設定を行います。
  • ツール>設定のインポートとエクスポート...>選択した環境設定のエクスポート>次へ
  • タブ設定のみをエクスポートするには、[すべての設定]をオフにして、[オプション]> [テキストエディタ]> [C / C ++]をオンにします
  • [次へ]をクリックし、「solution.vssettings」を「設定ファイルに何を付けたいですか?」と入力します。そして、これらの設定を使用するソリューションがある場所にファイルを保存します。
  • solution.vssettingsをソリューションエクスプローラーウィンドウの任意の場所にドラッグします。
  • Visual Studioを終了し、次にsolution.vssettingsを含むソリューションを開くと、それらの設定が読み込まれます。

マクロが実行されない場合は、MSセキュリティパッチが原因である可能性があります。基づくと、この、次の文字列を追加します。

<AllowDComReflection enabled="true"/>

次の3つのファイルの<runtime>タグの下:

"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"

これらのファイルの編集に使用するエディタを管理者権限で起動してください(つまり、メモ帳を右クリックして[管理者として実行]を選択します)。

上記のマクロと同じことをするはずのプラグインも見つけましが、インストーラを実行した後、何らかの理由で何も実行されませんでした。


0

clang-formatは、ソースコードをフォーマットするための非常に洗練されたオプションを提供します。

Visual Studioプラグインは非常に初歩的なものです。つまり、自動的には実行されませんが、(手動で呼び出すと)うまく機能します。

http://llvm.org/builds/

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.