Microsoft MVP성태의 닷넷 이야기
VS.NET IDE: 96. Visual Studio에서 /* ~ */ 주석을 위한 단축키(매크로) [링크 복사], [링크+제목 복사],
조회: 31856
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

Visual Studio에서 /* ~ */ 주석을 위한 단축키(매크로)

다음과 같은 질문이 있습니다.

C#에서 범위로 주석을 다는 /* ~ */종류의 주석은 따로 단축키가 유무 문의 드립니다? 보이지가 않습니다.
; https://social.msdn.microsoft.com/Forums/ko-KR/18d2922d-e452-4376-822a-dc4df3c6b12e/c-?forum=dotnetko

예전에도 한번 이와 유사한 질문을 받았던 기억이 나는데... 그래서 이참에 아예 글로 정리해 봅니다.

일단, 현재 Visual Studio의 공식 단축키는 없습니다. 대신 매크로를 이용하시면 됩니다. Visual Studio 2012 이상의 환경에서 매크로 사용법은 다음의 글에 정리해 두었으니 참고하시고,

Visual Studio 2012/2013에서의 매크로 구현 - Visual Commander
; https://www.sysnet.pe.kr/2/0/1767

Macros for Visual Studio 2013
; https://www.sysnet.pe.kr/2/0/1817

여기서는 간단하게 Visual Studio 2013에서 "Macros for Visual Studio 2013" 도구로 구현하는 방법을 살펴보겠습니다.

가장 중요한 매크로 구현 코드는 다음과 같습니다.

if (dte.ActiveDocument == null) {
}
else {
    var selection = dte.ActiveDocument.Selection;
    selection.Mode = 0;

    var startPoint = selection.BottomPoint.CreateEditPoint();
    var endPoint = selection.TopPoint.CreateEditPoint();

    var firstPos = endPoint.AbsoluteCharOffset;

    var text = selection.Text;
    var startPos = text.indexOf("/*");

    dte.UndoContext.Open("SetCommentArea");
    try {
        if (startPos != -1) {
            text = text.replace(/\/\*/g, "");
            text = text.replace(/\*\//g, "");
            endPoint.ReplaceText(startPoint, text, 1);
        }
        else {
            endPoint.ReplaceText(startPoint, "/*" + text + "*/", 1);
            var lastPos = selection.BottomPoint.AbsoluteCharOffset;
            selection.MoveToAbsoluteOffset(firstPos, false);
            selection.MoveToAbsoluteOffset(lastPos, true);
        }
    }
    finally
    {
        dte.UndoContext.Close();
    }
}

제 경우에 이 매크로의 이름을 "ToggleComment"라고 했으며, "Macros for Visual Studio 2013" 도구에서는 단축키를 Ctrl + M, 1 부터 Ctrl + M, 9까지 할당할 수 있으니 원하는 것을 쓰시면 됩니다. (참고로, 좀 더 자유로운 단축키를 원하신다면 "Visual Commander" 도구를 사용해야 합니다.)

이 정도면... 그런대로~~~! ^^




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 7/10/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 46  47  48  49  50  51  52  53  54  55  56  57  58  59  [60]  ...
NoWriterDateCnt.TitleFile(s)
12441정성태12/4/202015013오류 유형: 690. robocopy - ERROR : No Destination Directory Specified.
12440정성태12/4/202016646오류 유형: 689. SignTool Error: Invalid option: /as
12439정성태12/4/202018767디버깅 기술: 176. windbg - 특정 Win32 API에서 BP가 안 걸리는 경우 (2) [1]
12438정성태12/2/202017932오류 유형: 688. .Visual C++ - Error C2011 'sockaddr': 'struct' type redefinition
12437정성태12/1/202018165VS.NET IDE: 155. pfx의 암호 키 파일을 Visual Studio 없이 등록하는 방법
12436정성태12/1/202018299오류 유형: 687. .NET Core 2.2 빌드 - error MSB4018: The "RazorTagHelper" task failed unexpectedly.
12435정성태12/1/202025458Windows: 181. 윈도우 환경에서 클라이언트 소켓의 최대 접속 수 (4) - ReuseUnicastPort를 이용한 포트 고갈 문제 해결 [1]파일 다운로드1
12434정성태11/30/202019242Windows: 180. C# - dynamicport 값의 범위를 알아내는 방법
12433정성태11/29/202017933Windows: 179. 윈도우 환경에서 클라이언트 소켓의 최대 접속 수 (3) - SO_PORT_SCALABILITY파일 다운로드1
12432정성태11/29/202019494Windows: 178. 윈도우 환경에서 클라이언트 소켓의 최대 접속 수 (2) - SO_REUSEADDR [1]파일 다운로드1
12431정성태11/27/202016252.NET Framework: 976. UnmanagedCallersOnly + C# 9.0 함수 포인터 사용 시 x86 빌드에서 오동작하는 문제파일 다운로드1
12430정성태11/27/202018717오류 유형: 686. Ubuntu - E: The repository 'cdrom://...' does not have a Release file.
12429정성태11/25/202018863디버깅 기술: 175. windbg - 특정 Win32 API에서 BP가 안 걸리는 경우
12428정성태11/25/202016967VS.NET IDE: 154. Visual Studio - .NET Core App 실행 시 dotnet.exe 실행 화면만 나오는 문제
12427정성태11/24/202017748.NET Framework: 975. .NET Core를 직접 호스팅해 (runtimeconfig.json 없이) EXE만 배포해 실행파일 다운로드1
12426정성태11/24/202016125오류 유형: 685. WinDbg Preview - error InitTypeRead
12425정성태11/24/202017831VC++: 141. Visual C++ - "Treat Warnings As Errors" 옵션이 꺼져 있는데도 일부 경고가 에러 처리되는 경우
12424정성태11/24/202018080VC++: 140. C++의 연산자 동의어(operator synonyms), 대체 토큰 [1]
12423정성태11/22/202018671.NET Framework: 974. C# 9.0 - (16) 제약 조건이 없는 형식 매개변수 주석(Unconstrained type parameter annotations)파일 다운로드1
12422정성태11/21/202016096.NET Framework: 973. .NET 5, .NET Framework에서만 허용하는 UnmanagedCallersOnly 사용예파일 다운로드1
12421정성태11/19/202015383.NET Framework: 972. DNNE가 출력한 NE DLL을 직접 생성하는 방법파일 다운로드1
12420정성태11/19/202015424오류 유형: 684. Visual C++ - MSIL .netmodule or module compiled with /GL found; restarting link with /LTCG; add /LTCG to the link command line to improve linker performance
12419정성태11/19/202016248VC++: 139. Visual C++ - .NET Core의 nethost.lib와 정적 링크파일 다운로드1
12418정성태11/19/202018485오류 유형: 683. Visual C++ - error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MDd_DynamicDebug'파일 다운로드1
12417정성태11/19/202016272오류 유형: 682. Visual C++ - warning LNK4099: PDB '...pdb' was not found with '...lib(pch.obj)' or at '...pdb'; linking object as if no debug info
12416정성태11/19/202017412오류 유형: 681. Visual C++ - error LNK2001: unresolved external symbol _CrtDbgReport
... 46  47  48  49  50  51  52  53  54  55  56  57  58  59  [60]  ...