備忘録とか日常とか

学んだこととかを書きます。

Visual Studio Codeの拡張とか初期設定とか

約一年半の沈黙を破り更新。
いや沈黙というか普通にサボってただけなんだが・・・

社会人になってもコンスタントに更新できるだけの気力があるかどうかはわからない。
でもできるだけ勉強したこととかを更新していきたい


エディタの話。最近Visual Studio Codeに乗り換え、いい感じなので初期設定などをメモしておく。


自分は最初Sublime textを使ってたが、拡張の設定などが煩雑であまり好きになれなかった。
あと「これ無料版やで!気に入ったら買ってや!」っていうポップアップも地味に鬱陶しかった。。
なのでAtomに切り替えたのだが、拡張を入れていくとかなり重くなってしまい、ついにイライラがピークに達したのでリストラした。


VSCode

  • 拡張を入れても十分軽い
  • gitやターミナルにデフォルトで対応
  • デバッグ機能も最初から搭載

と、かなり使い勝手が良い。
というか最初からある程度の機能が備わっているので、拡張を入れずともそこそこ使えるのである。
それがVSCodeの魅力とも言える。

逆に不便に感じたことは

  • 複数プロジェクトを同時に開けない
  • たまにauto formatが効かない(OS依存?)

などがある。
異なる場所にあるディレクトリをサイドバーで同時に開く機能がVSCodeにはないらしい。
シンボリックリンクを使う方法もあるようだが、まあデフォで対応してくれたらその方が嬉しい。
あとubuntuで使用してる時にpythonのauto formatが効かない時がある。
これに関してはよくわからん。誰か直してくれ(他力本願)


とまあ色々あるがいい感じなので初期設定をメモしておく。
当方現在はpythonがメインなのでpython系の拡張が多いです。

拡張

Atom Keymap

その名の通り、Atomキーバインドをそのまま持ち込める。
もちろんVSCode内でキーバインドをカスタムすることもできるが、他のエディタに慣れた人ならそのまま使えるのが良い。
Sublime Text Keymapもありますよ。

Shortcuts

画面下のステータスバーにターミナルなどのショートカットを追加する。
あんま使わないけどあったら便利か?

Linux Themes for VSCode

テーマが追加される。
デフォルトではなんとなく好きじゃない配色ばかりだったので、これは気に入っている。

file-icons

サイドバーのアイコンが変わる。
いっぱい種類があるので調べて見ると楽しいかも。

LaTeX Workshop

latexがビルドできるようになり、pdfファイルをvscode内のtabで表示できる。
pdfはブラウザでも表示できる。
シンタックスハイライトやオートフォーマットも追加される。便利。
詳しくは以下
qiita.com
VSCode でLatexの日本語環境を作る · GitHub

Project Manager

プロジェクトを切り替えるコマンドを追加できる。
上述の通り、VSCodeではサイドバーで異なる場所にあるディレクトリを同時に開くことができない。
代案としてこの拡張を使えば、同時には開けないが切り替えはスムーズにできる。

Python

とりあえず入れた。シンタックスハイライトやらスニペットやらが追加される。
この中でも`Python`はpythonでコーディングするなら必ず入れる。lintとCode formatが使えるので便利

Setting Sync

非常に便利。gistを使って複数の端末で設定を共有できる。
利用するにはGithubアカウントが必要になる。利用方法は以下を見ればわかりやすい
marketplace.visualstudio.com

設定

Macなら設定ファイルは`/Users/ユーザー名/Library/Application Support/Code/User/settings.json`に書かれているが、
VSCode⌘ + ,GUI的に設定できる。windowslinuxならctl+,だと思う

ここに設定を書き込むわけだが、検索して変えたい設定をクリックするだけで設定ファイルに自動で記述される。
例えばエディタ内のルーラの位置を変えたければ、検索窓にrulersとか入れて出てきた設定を選択すればよい。
拡張の設定もここで変えられる。

以下に自分の設定をのせとく
【18/2/1 更新】

{
    "editor.multiCursorModifier": "ctrlCmd",
    "editor.formatOnPaste": true,
    "editor.renderWhitespace": "all",
    "python.linting.pylintEnabled": false,
    "python.linting.pep8Enabled": true,
    "editor.wordWrap": "on",
    "editor.rulers": [
        80
    ],
    "[python]": {
        "editor.rulers": [
            79
        ]
    },
    "editor.formatOnSave": true,
    "[latex]": {
        "editor.formatOnSave": false
    },
    "latex-workshop.latex.toolchain": [
        {
            "command": "ptex2pdf",
            "args": [
                "-l",
                "-ot",
                "-kanji=utf8 -synctex=1",
                "%DOC%"
            ]
        },
        {
            "command": "pbibtex",
            "args": [
                "%DOCFILE%",
                "-kanji=utf8"
            ]
        },
        {
            "command": "ptex2pdf",
            "args": [
                "-l",
                "-ot",
                "-kanji=utf8 -synctex=1",
                "%DOC%"
            ]
        },
        {
            "command": "ptex2pdf",
            "args": [
                "-l",
                "-ot",
                "-kanji=utf8 -synctex=1",
                "%DOC%"
            ]
        }
    ],
    "latex-workshop.latex.autoBuild.onSave.enabled": false,
    "editor.renderControlCharacters": true,
    "workbench.startupEditor": "newUntitledFile",
    "workbench.activityBar.visible": true,
    "python.linting.mypyArgs": [
        "--errors-only"
    ],
    "python.formatting.autopep8Args": [
        "--errors-only"
    ],
    "workbench.colorTheme": "Adapta Nokto",
    "window.title": "${activeEditorLong}",
    "sync.gist": "2adb76066f632f1f22a2798c7d57e1c2",
    "sync.lastUpload": "2018-02-01T03:57:43.855Z",
    "sync.autoDownload": false,
    "sync.autoUpload": false,
    "sync.lastDownload": "",
    "sync.forceDownload": false,
    "sync.anonymousGist": false,
    "sync.host": "",
    "sync.pathPrefix": "",
    "sync.quietSync": false,
    "sync.askGistName": false,
    "editor.minimap.showSlider": "always",
    "workbench.iconTheme": "file-icons",
}

メモしておくと、

  • `Python`拡張はデフォルトでpylintを使うが、自分はpep8派なので以下の記述を加える
"python.linting.pylintEnabled": false,
"python.linting.pep8Enabled": true,
  • pep8でwarningとerrorの箇所を示してくれるが、warning山ほど出すぎてしんどいのでとりあえずerrorだけ表示するように設定
"python.linting.mypyArgs": [
        "--errors-only"
    ],
    "python.formatting.autopep8Args": [
        "--errors-only"
    ],
  • latex関係を導入。
    "latex-workshop.latex.toolchain": [
        {
            "command": "ptex2pdf",
            "args": [
                "-l",
                "-ot",
                "-kanji=utf8 -synctex=1",
                "%DOC%"
            ]
        },
        {
            "command": "pbibtex",
            "args": [
                "%DOCFILE%",
                "-kanji=utf8"
            ]
        },
        {
            "command": "ptex2pdf",
            "args": [
                "-l",
                "-ot",
                "-kanji=utf8 -synctex=1",
                "%DOC%"
            ]
        },
        {
            "command": "ptex2pdf",
            "args": [
                "-l",
                "-ot",
                "-kanji=utf8 -synctex=1",
                "%DOC%"
            ]
        }
    ],
    "latex-workshop.latex.autoBuild.onSave.enabled": false,

toolchainを指定することでbibtexファイルとかを一発でビルドしてくれる。詳しくは上述のサイト。

ついでにlatex-workshop.latex.autoBuild.onSave.enabledをtrueにすると保存時に自動ビルドされる。デフォルトでtrueになっているが煩わしいのでfalseにした

  • 保存時にオートフォーマットする。この機能がAtomの拡張より格段に軽くて使いやすい。
"editor.formatOnSave": true,
  • ウィンドウのタイトルバーにカレントディレクトリのパスを表示。
"window.title": "${activeEditorLong}"
  • 言語ごとに設定を変えることができる。pep8は79文字制限があるので、pythonの時はルーラを79文字の位置にする
 "[python]": {
        "editor.rulers": [
            79
        ]
    },

また自分のlatexファイルはぐっちゃぐちゃなのでもはや我流で行きたい。latexでは切る。

"[latex]": {
        "editor.formatOnSave": false
},

latexでオートフォーマットするにはlatexindentというツールを導入する必要がある。
以下のサイトでなにかわかるかもしれない。
tex.stackexchange.com



Setting Sync使えばこれも自動でバックアップされるのでメモする意味もないかもしれないが一応。
今後VSCodeがもっと栄えてくれると嬉しい。