web-dev-qa-db-ja.com

Visual Studio C ++トグルコメント?行全体が選択されていないときにコメントしますか?

実際に2つの質問:

1)選択した行でtoggle commentへのショートカット? notepad ++以降で使用したすべてのiDEで使用可能

2)ctrl-k, ctrl-cはこの振る舞いを示します(うまく表現された場所から引用):

C#:テキストが選択されている各行は、行でコメント化されます-ダブルスラッシュで始まります。何も選択されていない場合は、カーソルがある行がコメント化されます。

C++:何も選択されていないか、完全な行が選択されている場合、上記のように動作します。ただし、行の一部が選択されていて、選択の一部としてコメントが選択されていない場合(たとえば、コード行の途中で何かを選択する場合)、選択は/ *と* /で囲まれます。

私はC++でコーディングしているので、この動作が煩わしいと感じています-部分的に選択された行をコメントアウトできるようにしたい-回避策はありますか?

19
Mr_and_Mrs_D

一部のテキストが選択されている各行は、行でコメント化されています-ダブルスラッシュで始まります。何も選択されていない場合は、カーソルのある行にコメントが付けられます。

複数行選択の場合:私のソリューションは、選択範囲内のすべての行がコメント化されている場合にのみコメントを解除します。私はそれがより直感的だと思いました。


解決:

ツール-> マクロ-> マクロIDE ...

Macro ExplorerMacrosを右クリックし、New Macro Project ...をクリックします。

たとえば、マクロに名前を付けます。 MyMacroProjectそして追加をクリックします。

Macro Explorerの新しいマクロプロジェクトでModule1を右クリックし、編集をクリックします。

これをマクロエディタウィンドウに貼り付けます。

Option Strict Off
Option Explicit Off
Imports EnvDTE
Imports System.Text.RegularExpressions

Public Module Module1
    Sub ToggleCommentLine()
        Dim sel As TextSelection = DTE.ActiveDocument.Selection

        Dim firstLine As Integer = sel.TopPoint.Line
        Dim lastLine As Integer = sel.BottomPoint.Line

        sel.GotoLine(firstLine, True)
        sel.LineDown(True, lastLine - firstLine)
        sel.EndOfLine(True)

        'we un-comment only if there is no commented line
        Dim allLinesCommented As Boolean = True

        Dim lineIndex As Integer = firstLine
        While allLinesCommented And (lineIndex <= lastLine)
            sel.GotoLine(lineIndex, True)
            allLinesCommented = Regex.IsMatch(sel.Text, "^\s*//.*$")
            lineIndex += 1
        End While

        'iterate over the lines
        For lineIndex = firstLine To lastLine
            sel.GotoLine(lineIndex, True)
            Dim line As String = sel.Text
            Dim m As Match = Regex.Match(line, "^(\s*)(//)(.*)$")
            If allLinesCommented Then
                sel.Text = m.Groups(1).Value & m.Groups(3).Value
            ElseIf Not m.Success Then
                sel.StartOfLine(vsStartOfLineOptions.vsStartOfLineOptionsFirstColumn)
                sel.Text = "//"
            End If
        Next

        'select all the affected lines
        sel.GotoLine(firstLine, True)
        sel.LineDown(True, lastLine - firstLine)
        sel.EndOfLine(True)
    End Sub
End Module

このファイルを保存して、マクロエディタウィンドウを閉じます。

マクロをキーにバインドします。

ツール-> オプション...-> 環境-> キーボード

これを次を含むコマンドを表示に入力します:ToggleCommentLine

Macros.MyMacroProject.Module1.ToggleCommentLineを選択します。

キーをに設定します。ショートカットキーを押します:。 、次に割り当てをクリックし、次に[〜#〜] ok [〜#〜]をクリックします。

楽しい。

9
ch0kee

動作は意図的なものです。 Ctrl + K、Ctrl + Cショートカットペアを使用して、ユーザーが1行に小さな一時的な変更を加え、行全体を書き直す必要がない場合は、変更全体ではなく変更のみをコメントアウトできます。ライン。

編集:

質問1については、同じショートカットペアです。Ctrl+ K、Ctrl + Cでコメントをオンに切り替え、Ctrl + K、Ctrl + Uでコメントをオフに切り替えます。

編集2:

それでも満足できない場合は、トマトソフトウェア全体からVisual Assist Xを入手してください。 http://www.wholetomato.com/ 「/」キーと「*」キーにコメントショートカットマッピングを追加します。テキストが強調表示されます。

2
Casey

Visual Studio 2019では、最初の行をトリプルクリックしてから一番下の行にドラッグすることで、探している機能をほぼ正確に取得できます。これにより、フルラインが選択されます。

次に、通常どおりCtrl-KCtrl-Cを使用します。 //ではなく/**/を挿入します。

0
BitPusher16

トグルコメントのキーショートカットをctrl + /キーに変更したい場合。 VisualStudioのホットコマンドを実行してインストールできます。 Visual Studioを再起動すると、機能します。

https://marketplace.visualstudio.com/items?itemName=JustinClareburtMSFT.HotCommandsforVisualStudio

0
imanzabet