VScode

```
C:\> code <file_name>
```

extension

그냥 검색하고 나서 정렬기준 설치 수로 놓고 조회해서 상위권 다운받으면 된다.
  • Active File in statusbar
  • Path Intellisense
  • git history
  • C/C++
  • HTML Snippets
  • Partial Diff
  • sftp


원격 코딩

rmate는 파일단위고 원격에서 열 파일을 지정해서 명령어 쳐야해서 되게 불편하고.
호스트<>가상머신 간 작업만 할거면 공유폴더로 처리해도 되기는 하는데, 
ftp를 사용하는 편이 좋은게 ftp를 쓰면 파일을 실수로 지워도 한 쪽에는 남아있기 때문. 
auto upload만 활성화 하면 공유 폴더 처럼 동기화 신경 안쓰고 쓸 수 있기도 해서. ftp를 쓰는게 제일 괜찮은 듯.

compile

`` Ctrl+Shift+B`` - Other을 누르면 뜨는 `` tasks.json``에 다음을 입력
```js
{
    "version": "???",
    "command": "python",
    "isShellCommand": true,
    "showOutput": "always",
    "args": [
        "${file}"
    ]
}
```

remote vscode

rmate는 파일 하나 단위로 동작해서 하나 열 때 마다 명령어 써줘야해 너무 불편.
ftp를 사용하는게 더 편하고, extension 중에서는 sftp가 제일 깔끔한 듯.

로컬에서 가상머신이랑만 사용할 목적이면 그냥 공유폴더로 묶는 것도 괜찮다.

입/출력을 terminal로 변경하기 지금은 해결됐다.

VScode에서 msbuild로 build할 때 task run( Ctrl + Shift + B ) 를 사용하게 되는데, task 동작의 입출력은 기본 panel의 OUTPUT으로 연결되어 있다.

문제는 OUTPUT창에서 한글이 깨져나온다는 점과 scanf같은 입력 함수가 있을 때 입력을 넣을 수가 없어 대기하게 된다는 것이다. 


디버그를 사용해도 되지만, 입/출력을 terminal로 변경하는 편이 더 좋다.

https://code.visualstudio.com/updates/v1_9#_task-execution-in-terminal

```json

{

    "version": "0.1.0",

    "_runner": "terminal",

    "tasks": [

        {

            "taskName": "python3",

            "command": "python3",

            "args": ["${file}"],

            "isShellCommand": true,

            "isBackground": true,

            "isBuildCommand": true

        }

    ]

}

```

`` "command"``에 full path를 지정해도 된다.


실행할 파일은 task.json의 arg에 지정. 

근데 어차피 vsproject.vcxproj만 실행하게 될거니까 수정할 일은 거의 없을 듯.

https://code.visualstudio.com/docs/languages/cpp

https://code.visualstudio.com/docs/editor/tasks


실행할 파일은 .c파일이 아니라 프로젝트 파일을 지정해야 함.

프로젝트 만드는 방법

https://msdn.microsoft.com/ko-kr/library/dd293607.aspx

```xml

<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">  

  <ItemGroup>  

    <ProjectConfiguration Include="Debug|Win32">  

      <Configuration>Debug</Configuration>  

      <Platform>Win32</Platform>  

    </ProjectConfiguration>  

    <ProjectConfiguration Include="Release|Win32">  

      <Configuration>Release</Configuration>  

      <Platform>Win32</Platform>  

    </ProjectConfiguration>  

  </ItemGroup>  

  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.default.props" />  

  <PropertyGroup>  

    <ConfigurationType>Application</ConfigurationType>  

    <PlatformToolset>v140</PlatformToolset>  

  </PropertyGroup>  

  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />  

  <ItemGroup>  

    <ClCompile Include="tes.c" />  

  </ItemGroup>  

    <!--

  <ItemGroup>  

    <Compile Include="${workspaceRoot}/tes.h" />  

  </ItemGroup>  

  -->

  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Targets" />  

</Project>  

```


debug

https://code.visualstudio.com/Docs/editor/debugging

task.json처럼 launch.json의 program에 파일 이름을 지정해서 사용해야 하지만

어차피 ${workspaceRoot}/Debug/vsproject.exe로 고정이라 수정할 일은 거의 없을 듯.


pylint 비활성화

settings.json에 다음 항목 추가
```json
    "python.linting.pylintArgs": [
        "--rcfile",
        "pylint.config",
        "--disable",
        "missing-docstring"
    ]
```


.vscode 폴더에 pylint.config 파일 만들어 다음 내용 추가

```c

[MESSAGES CONTROL]

#C0111 Missing docstring

#C0103 Invalid constant name

#C0301 Line too long

#C0303 trailing whitespace

disable=C0111,C0103,C0303,C0301

```


msbuild ( MS C++ compiler )

http://landinghub.visualstudio.com/visual-cpp-build-tools

설치하고 msbuild 위치를 PATH에 추가해줘야함.

근데 include 할 때 .h경로도 못찾아서 그냥 sdk도 추가로 설치해줘야하는듯

또는 

https://msdn.microsoft.com/en-us/library/dd334499.aspx