MicrosoftのVisualStudioCodeがオープンソースになったので使ってみた


オープンソースになってからじゃあ使うか！ってなったので1週間ちょっとと長くはないですが、メインエディタとして使う日々を過ごして気付いたことなどをまとめます。

※ Atomを普段使っているので、部分的に比較するときがあると思います。
※ Mac OSXで使ってます。Yosemiteです。帰国したらアップグレードします。

## Visual Studio Codeとは
Microsoft製のエディタ。[Electron](http://electron.atom.io/)で作っていてクロスプラットフォームなエディタ。IDEではない。
Windows以外でも使えますということで4月頃に話題に。オープンソースになって11月頃また話題に。この際に、Extension Galleryで拡張やテーマをインストールできるようになったらしい。
まだベータ版なので正式版来てまた話題になるのでしょう。

+ 速い
+ 軽い

と巷で好評です。

### インストール

ダウンロードページは[こちら](https://code.visualstudio.com/download)

homebrew-cask使う人は以下のコマンドでいけると思います。（最新版降って来てるのかな？）

```
brew cask update
brew cask install visual-studio-code
```

## ショートカット
PreferenceからKeyboard Shortcutを選ぶとまた画面分割された状態で左がデフォルト、右がユーザーが追記するjsonとして表示されます。
追記のことを考えてか、他にも設定できる機能一覧がデフォルトの下の方にまとめてコメントアウトされています。

適宜ご参照ください。
Windows - [VS Code キーボードショートカット一覧 （オススメ付き）](http://qiita.com/eluestk/items/cdab6fca64da386a690b)
Mac - [【Mac版】 VisualStudioCode キーボードショートカット](http://qiita.com/naru0504/items/99495c4482cd158ddca8)


## 個人的に欠かせない機能とショートカット

### 画面分割
なにはともあれこいつが必要です。
どうやら横方向のPane分割しかできない模様。
しかも無制限ではなく3画面まで。これだけあれば十分だろうと思いますが。
`cmd + \`がショートカットです。

### ファイル検索
`cmd + P`
開いているプロジェクト内のファイルを検索します。

### コマンドパレット
`shift + cmd + P`
メニューから探してとかめんどうなことはせずにしたいことわかっているならここからどうぞ。

![Kobito.fCwblQ.png](https://qiita-image-store.s3.amazonaws.com/0/58800/b7cb2ab4-c612-9eb9-23d3-df1a6d6a89cd.png "Kobito.fCwblQ.png")

ところで、このコマンドパレットにの検索ボックスには`>`の文字が入っていて、それを消すとファイル検索になります。
以下の3つも知っておくと役に立つかもしれません。

`!` - デバッグ
`#` - シンボル検索
`:` - 指定した行数に飛ぶ

### ファイルのヒストリー
`ctrl+tab`
自分が直近開いたファイルの一覧が出ます。かなり使う頻度高い気がします。

### マルチカーソル
Alt押してクリックするとカーソルを複数にできます。

## ユーザー設定
Preference - User Setting `⌘,` を開くと2分割された画面になります。
左側がデフォルトで右側がユーザーがオーバーライドした設定です。
jsonで書かれています。
パッと流し見たところ。

+ エディタ自体の設定
+ エディタのウインドウの設定
+ ファイルの設定
+ ファイルエクスプローラの設定
+ HTTPの設定
+ gitの設定
+ 検索の設定
+ JavaScriptの設定
+ jsonの設定
+ エラーレポートの設定
+ Markdownの設定
+ CSSの設定
+ LESSの設定
+ Sassの設定
+ TypeScriptの設定
+ PHPの設定

といったものが書かれています。
CSSやLESS、Sassは割と細かくLinterの設定変更できそうです。

今回はまず最低限やっておこうかなってことで以下の2つだけやっておきました。

+ エラーレポートをさせない。
+ 半角スペース、タブを表示させる。
+ ハードタブを使わない。ソフトタブにする。

![Kobito.vuzgEd.png](https://qiita-image-store.s3.amazonaws.com/0/58800/c6f6378c-32a4-262d-2e04-aba8e46af51c.png "Kobito.vuzgEd.png")


右側に追記したのは以下の通り

```
"telemetry.enableCrashReporter": false,
"editor.renderWhitespace": "boundary", // "all"との違いは単語間のスペースを表示するかどうか
"editor.insertSpaces": true,
```

[記事追記]
Window幅に合わせて文字を折り返すようにするために以下のものも追記します。

```
"editor.wordWrap": 0,

```

日本語対応も今はできているように見えます。

[2017追記]
"editor.wrappingColumn"は"editor.wordWrap"になってるぜ的なアラートたくさん出てたので修正しました。


## ターミナルから起動できるようにする
Qiitaに書きました。
ご参考までにどうぞ。
[ターミナルからVisual Studio Codeを起動する方法](http://qiita.com/naru0504/items/c2ed8869ffbf7682cf5c)

## Emmet
EmmetというかEmmetライク？
Tab押せば展開します。なんかテキストの検索モード？かなんか入ってると展開しないことがあります。うまく展開しなかったら一回esc叩けばいんですけど、このあたりの条件がよくわかってないので使っていくうちに詳しく知りたいです。

![CfZMulyrRI.gif](https://qiita-image-store.s3.amazonaws.com/0/58800/b46b98fd-3e85-c0a9-7a56-c4276a421766.gif "CfZMulyrRI.gif")

## Markdownを使う

[Visual Studio Code を使って Markdown のプレビュー](http://qiita.com/poemn/items/8094c04bba86bd4fbe54)の記事をどうぞ。

三行でまとめると。
画面分割してプレビューは`⌘K + V` 
同じ画面で切り替えたい場合は `Shift Cmd V`

![E9pdCvA2PJ.gif](https://qiita-image-store.s3.amazonaws.com/0/58800/1e44ca2a-763a-9adc-dd62-d91c86cd1ff8.gif "E9pdCvA2PJ.gif")

## gitを使う
基本的なgitの機能はデフォルトで入っているのでとにかく使ってみましょう。

エディタの左下にGitの状態やら、何やら出ます。ここ押すとブランチの切り替えもできます。

![Kobito.L8vhj4.png](https://qiita-image-store.s3.amazonaws.com/0/58800/c984f7d7-a4bf-5b17-4008-de019f57a778.png "Kobito.L8vhj4.png")

Sidebarにもgitのための何やらがあります。

![Kobito.x6mo5L.png](https://qiita-image-store.s3.amazonaws.com/0/58800/b6e7d3cf-ec1b-ff4f-f6f3-6d424cefd42f.png "Kobito.x6mo5L.png")

![Kobito.W7liqr.png](https://qiita-image-store.s3.amazonaws.com/0/58800/71fd8209-7df4-8bce-4f1c-d50525d79e0d.png "Kobito.W7liqr.png")

[Visual Studio Code - Version Control](https://code.visualstudio.com/Docs/editor/versioncontrol)

Syncってなんやって思うけどたぶん`git fetch`なんだと思う。

stashとかなさそうなので公式のアップデート前にgit用の拡張が出てくるんじゃないだろうか。

## タスクランナー - gulp/Grunt/Jake
自動で認識するらしい。
何が原因かわからないものの自分のプロジェクトでは自動で認識してくれなかったのでちょっと調査が必要。

## エクステンション - 機能拡張

せっかくなので試しに拡張入れます。
`F1`あるいは`Cmd + Shift + P`からextensionって打つとsearchできます。

![Kobito.mNrD0C.png](https://qiita-image-store.s3.amazonaws.com/0/58800/48d2b0a6-ad07-ad44-638f-4d18695a8073.png "Kobito.mNrD0C.png")
*Extension*

![Kobito.OQbBgy.png](https://qiita-image-store.s3.amazonaws.com/0/58800/05b35650-8362-9213-8348-df84eaadf7ca.png "Kobito.OQbBgy.png")
*選ぶとこうなる*

![Kobito.xKX5Qt.png](https://qiita-image-store.s3.amazonaws.com/0/58800/9c0ef7c8-a06e-69c6-dd51-3d4b871588a1.png "Kobito.xKX5Qt.png")
*検索するとこうなる*

2日違いで同じ名前の拡張作った人がいるんですね……。まあ話題になってるオープンソースではあるあるなんでしょうが、タイトルかぶらないような仕組みにしてほしかったなとすこし思います。
区別するのにバージョン情報や概要では変わりうるので、作者の名前が必要とかそんな感じですかね。今後おすすめ拡張とかそういう記事を書くつもりがある方はご注意ください。そのときになくてもあとで同じ名前の拡張を他の人が作るかもしれないので。

あと内容を見るためにREADMEを押して開くんですが、その際ブラウザを前面に開いてくれてエディタに戻ると **また検索しなおし** ってかなりめんどくさい仕様なのでこっそり改善してほしい。

今回このStylus用の拡張では下のもの `stylus - Vitor Buzinaro`を選びました。理由はGitHubのリポジトリをちら見してテスト書いてるっぽかったからです。どっちもGitHubのStarはまだゼロでした。

こちらのページにまとまってます。
[Visual Studio Marketplace - Visual Studio Code](https://marketplace.visualstudio.com/#VSCode)

### AsciiDOCを使う
あんまり需要ないと思いつつも拡張が2つ出ていたのを確認しました。
[AsciiDoc Support](https://marketplace.visualstudio.com/items/justusadam.language-asciidoc) - Atom用のパッケージをフォークしたものの模様
テキスト入力の段階でなんとなくスタイルがわかるあの手のやつです。
プレビューはできない模様。

[Asciidoc](https://marketplace.visualstudio.com/items/amoiseev.Asciidoc) - 使えませんでした。READMEがMarkdownの転載なあたり怪しさ満点でしたがプレビューできる詐欺でした。

つまりAtomほど快適なAsciiDOC環境は得られないこととやはり初期の拡張は玉石混交だよねってことがわかりました。

### 日本語の対応
使っている限り問題なさそう。
人任せで申し訳ないけど、下の見てもらうとわかりやすいと思います。
[第2回 Qiita プライド: Atom 対 Brackets 対 Lime Text 対 Visual Studio Code](http://qiita.com/raccy/items/50c176d0458e0c686970)

LimeTextがアレなのも非常にわかりやすいです。

### EditorConfig

Editorconfigについては自分の記事で僭越ですが、ご参照ください。
[どんなエディタでもEditorConfigを使ってコードの統一性を高める](http://qiita.com/naru0504/items/82f09881abaf3f4dc171)

こいつがないと始まらない。ともだちなくす。
**ない**
終わったわ。
VisualStudioにはあるんだけどなあ。
でもすぐ作るでしょ。Atomのフォークとかしちゃうでしょ。そのうち来るの待ちます。

**って下書きしてた数日後に来てました。**
いますぐ`shift+cmd+P`押してインストールしましょう。
[EditorConfig](https://marketplace.visualstudio.com/items/chrisdias.vscodeEditorConfig)

## .vscodeについて
じゃあもろもろコードの統一性が高められないのかというと別にそんなことはなくて。
project毎に`.vsconfig`っていうディレクトリができてその中に設定ファイルを置けます。WebStormにもこんなのありましよね感。
とはいえ、その場合はプロジェクトのメンバーみんなVisual Studio使ってなきゃいけないとかいう状況な気がするので、個人的にはスキな方法じゃないかなあといった感じです。
とにかくあんまりわかってないので調査は必要しておきます。

## 所感
+ JavaScript書いてて補完性能高いと思った。
+ Open Recentは当然デフォルトで存在します。（なぜAtomはデフォルトでない）
+ 折り返し設定がjsonで文字数指定できるんだけど、ウィンドウ幅に合わせて柔軟にごにょごにょしてほしい。 => **[追記] 解決済です。**
+ どうやらAtomのようにキーボードショートカットで文字サイズ**だけ**を変更なんてことはできない模様。`cmd + =` でズームインして、`cmd + -`でズームアウトする。左側のアイコンやらなにやらまで大きくなるので違和感を抱く。設定でフォントサイズ指定してお気に入りのサイズを見つけて使っていく感じになりそうです。
+ なんか全文検索はAtomの方が早い気がする。なんだろう、その辺のインデックスとかの扱いの差で初期起動のパフォーマンス差が出てるんだろうか。
+ Atom使用時に意外と絵文字補完にめっちゃ依存してた。コミットメッセージにemojiつける文化のため、Atomでコミットメッセージ書くときに絵文字補完を超使っていた自分に気付く。:sushi:と:ok_woman:しか脳内に出てこなくて草。
+ タブ開きまくるような芸当はできないけど `ctrl+tab`での履歴の切り替えめっちゃ爆速なのでタブエディタじゃなくてもいいかもしれない。
+ 複数ペイン開いているときにどっちがアクティブかわかりにくいので、わかりやすいテーマなどあったら変えたい。
+ 矩形選択できない。
+ EditorConfigはやくくださいって思ってたら来たから拡張コミュニティ活発になる予感がして将来もっと期待できます。

**所感に何でも詰め込んどきゃいいかとか思うのやめろよ**

## 総括
メインのエディタとして使うのに今の段階で結構なレベルに来ています。
かゆいところがないわけではないですが。エクステンションのコミュニティがどれだけ盛り上がってくれるかで今後の使用者の増加具合は左右されるよなと思いました。

あとがき的な感じですが、Visual Studio Codeについてアドベントカレンダー書こうって決めて見てみたら初日が空いていたのでいったれ精神で予約しました。何もインドからシンガポールに移動した翌日とかいうハードスケジュールの中に入れなくてよかったんじゃないだろうかと反省してます。
カジノで**ボロ負け**したあとにQiita書いてます。
次は時間的にも精神的にも余裕があるときに書きたいと思います。

以上、あんまりまとまっていないVisual Studio / Visual Studio Code Advent Calendar 2015の1日目でした。