【2017年末】「マウスに触らない」Visual Studio Codeを目指して

こんにちは。インフルエンザはほぼ治りました shundroid です。
もう 2017 年も終わりですね。

そこで今回は今年が終わる時点での、
ぼくの Visual Studio Code の開発環境を紹介していこうと思います。
多分これから変わることはないと思いますので・・。

コンセプト

マウスを触らない

もともとぼくは Vim というエディタで開発をしてきましたが、
auto-complete とかを入れまくったら、重くなってしまい、
ほかのエディタで Vim っぽくできないかと、Spacemacs や、Atom など試してきて、
そこで一番高速で高機能な Visual Studio Code に落ち着いた次第なのです。

マウスを触らない―それは究極の効率でコードを書くための手段。
キーボードから手を離すことによるタイムロスを防ぐことができます。

そのために工夫しているキーバインドやプラグインを紹介していきたいと思います。

プラグイン

Vim

必須プラグインです。VSCode で Vim ライクなキー入力に対応します。
またこのプラグインにより後ほどキーバインドを設定していきます。

検索や保存も完ぺきにできます。
しかしちょっと C-e C-y によるスクロールのレスポンスが遅い気がします。
それはしゃーなし。

Trailing Spaces

行末のスペースを表示してくれます。
便利ですね。

vscode-icons

vscode-icons

VSCode をカラフルに彩ってくれます。きれいですね。

Settings Sync

来ました神プラグイン。
User Settings や Keybindings ファイルを複数の端末で同期してくれます!
同期には Gists を使います。ロマンあふれますね。

複数のパソコンで開発する人には必須ですね。
あれ、設定したはずのキーバインドが使えねえ・・あ、こっちで設定してなかっためんどっ
っていうのがなくなります。

ぼくも壊れかけのノートパソコンでもたまに開発するので、Sync するようにしています。

Gif では手動アップロードの方法を紹介しましたが、
なんと自動同期もしてくれるんです。なんてすばらしい・・・!

この記事が詳しいので、続きはこちらをご覧ください。ありがとうございます。

Visual Studio Code 入門~導入から Gist による設定管理まで~ - 雀巽の日記帳
Windows 環境のエディタが Notepad のみという尖りきった環境だったので、Visual Studio Code を入れてみることにしました。 インストール Setting up Visual Studio Co...

その他

Vue ファイルに対応する Vetur、stylus に対応する language-stylus
C/C++、Git Log が見れる Git History(ほぼ使用しない)を入れています。

キーバインド

Vim(vscode-vim)で、 <leader> キーを使用したキーバインドができるので、
Space キーをリーダーキーにして、
マウスを触らず、手が疲れないキーバインドを実現!!

<leader> キーを使ったキーバインドの方法

ふつう、キーバインドだと、Ctrl や Alt などを使うことが多いのですが、
キーを使うことによって、Space キーなどでキーバインドを組むことができるようになります。

右側の USER SETTINGS に、

{
    "vim.leader": "<space>"
}

この行を追加します。(波かっこは不要です)
これで Space キーをリーダーキーにできました!

NORMAL MODE のキーバインドを設定する

設定とかを開きたいときって、Normal Mode のときですよね。
ステータスバーに -- NORMAL MODE -- と表示されているときです。

vscode-vim だとその時のキーバインドでは、Other Modes という類に追加するそうなので、
ためしに、otherModes のキーバインドに、 <leader> + p でファイルを開けるようにしてみましょー。

{
    "vim.otherModesKeyBindings": [
        {
            "before": ["<leader>", "p"],
            "after": [],
            "commands": [
                { "command": "workbench.action.quickOpen" }
            ]
        }
    ]
}

これを設定して、保存( :w でできます)して、
Normal Mode でないときは ESC を押してから、
Spaceキー + P で、ファイルを開くあれが出てくると思います。

その他のキーバインド

ほかに、ぼくは上の要領で、次のキーバインドを追加しています。

キー 動作 コマンド
<leader> + w + l 右のパネルへ after を ["<C-w>", "l"] とする
<leader> + w + h 左のパネルへ after を ["<C-w>", "h"] とする
<leader> + o Open Recent workbench.action.openRecent
<leader> + s Show Commands workbench.action.showCommands
<leader> + f プロジェクト内検索 workbench.action.findInFiles
<leader> + d フォルダーを開く workbench.action.files.openFolder
<leader> + b サイドバーの表示・非表示 workbench.action.toggleSidebarVisibility
<leader> + @ ターミナルの表示・非表示 workbench.action.terminal.toggleTerminal

command の部分を書き換えることで、様々な動作に対応できます。
また、上2つは after を使っていますが、
after を使うと、キーの動きをさらにキーの動きにして返すことができます。

例えば1番上のだと、

{
    "vim.otherModesKeyBindings": [
        {
            "before": ["<leader>", "w", "l"],
            "after": ["<C-w", "l"]
        }
    ]
}

こうなるので、 <leader> + w + l で、Ctrl + w + l をシミュレートできるのです。

コマンドの種類は、keybindings.json に一覧が乗っているので、そちらを参照してください。

ドヤる

キーボードだけで操作しています。

実は左側のファイル一覧の画面も、Vim ライクな操作ができるんです。

あと、ステータスバーの色が insert 時変わっていますが、
それは次の設定を USER SETTINGS にすることにより変えられます。

{
    "vim.statusBarColorControl": true,
    "vim.statusBarColors" : {
        "normal": "#005f5f",
        "insert": "#5f0000",
        "visual": "#5f00af",
        "visualline": "#005f87",
        "visualblock": "#86592d",
        "replace": "#000000"
    }
}

他にも、選択時・行・ブロック選択時・置き換え時も色を変えられます。

しかしまだ課題もあります。
いったん左側のサイドメニューやターミナルにフォーカスが当たると、
そこから自分で設定したキーバインドが使えなくなってしまいます。

それが直ればもうマウスとはおさらばですね!
実機テストのときはどっちみち使いますが・・・w

Visual Studio Code の言語を変えたい時【Insiders も書くよ】

追記!! 2016/03/31
Version 0.10.13 から、言語の変更が可能となりました。
下の手順2 の、引数付きで起動(英語)にした状態で、
Ctrl + Shift + P から「Configure Language」、
locale.json が開くので、そこで言語を変更できます。
参考 : https://github.com/Microsoft/vscode-docs/blob/vnext/release-notes/latest.md#localization

こんにちはー。

ついに、VSCode が、日本語に対応したっぽいです!!
リリースノートを見ると、v0.10.10 で、There is support for localization and accessibility. と書いてあります。

しかし、今回はあえて英語に戻したいと思います。
同時に、日本語・フランス語にする方法も書きます。
Insiders の場合の方法も書くよ☆

英語に戻したい理由

  • 日本語だと、Ctrl+Shift+P で呼び出せる、コマンドパレットの項目も日本語で打ちにくい
  • 今まで頑張って覚えた機能はすべて英語 -> 水の泡・・
  • 英語の勉強がしたい

手順1: VSCode のパスを見つける

ぱぱっとやり方をいうと、引数を付けて起動するのですが、
アプリがどこにあるのかわからないと出来無いので、探しましょう。

インストール先は、デフォルトで 64bit だと、C:\Program Files (x86)
32 bit だと、C:\Program Files かな?

Visual Studio Code(通常版) の場合:

アイコンが青ければこちらです。

<インストール先>\Microsoft VS Code\Code.exe
僕の場合: C:\Program Files (x86)\Microsoft VS Code\Code.exe

Visual Studio Code – Insiders の場合:

アイコンが緑のほうです。

<インストール先>\Microsoft VS Code Insiders\Code - Insiders.exe
僕の場合: C:\Program Files (x86)\Microsoft VS Code Insiders\Code - Insiders.exe

手順2: 引数付きで起動する

まず、英語に戻してみます。
コマンドプロンプトとか Cygwin とかで、次のようにして起動します。

"<手順1 VSCodeのパス>" --locale=en

僕の場合:

"C:\Program Files (x86)\Microsoft VS Code Insiders\Code - Insiders.exe" --locale=en

vscode-changed-lang
英語で起動したぞ!

オプションは、次のような形式です。

--locale=言語

言語は、
– 日本語: ja
– フランス語: fr

という感じで指定ができます!

手順3: ショートカットを作る

普段から bash で起動している人はいいですが、
そうでない人にはこのままだと使いにくいので、ショートカットを作ってみましょう。
先ほど 手順1 で確認した、
Code.exe (Code – Insiders.exe) が入っているフォルダをエクスプローラーで開きます。

右クリックで、「ショートカットの作成」。
普通に開くと、エクスプローラーの権限の問題で、デスクトップにショートカットが作成されます。

作成されたショートカットを右クリックで、「プロパティ」。
「リンク先」を、先ほど 手順2 で打ったパスと引数にします。
(僕の場合: "C:\Program Files (x86)\Microsoft VS Code Insiders\Code - Insiders.exe" --locale=en)

vscode-shortcut-lang-option

OK を押してウィンドウを閉じ、ショートカットを開くと、先ほどのようになるはずです。

手順4: Open With Code で開いた時も、設定した言語にする

今の状態だと、ショートカットで開いた時のみ、言語が反映されます。
今度は、ファイルを右クリック -> Open With Code ( – Insiders ) で開いた時の言語も変更しましょう。

レジストリの変更になります。
変更は自己責任で行ってください。よろしくおねがいします。

Win + R で、「regedit」と入力し、レジストリ エディターを開きます。
※ 途中、UAC が表示される場合があります。

Visual Studio Code (通常版) の場合

アイコンが青ければこちらです。

左のビューで、「HKEY_CLASSES_ROOT\*\shell\VSCode\command」とたどります。
(既定) のデータを修正します。(“%1” の前に、locale オプションを設定します)

"<インストール先>\Microsoft VS Code Insiders\Code - Insiders.exe" --locale=en "%1"

"%1" を忘れずに!
(僕の場合: "C:\Program Files (x86)\Microsoft VS Code\Code.exe" --locale=en "%1")

これで、ファイルを右クリックした時の設定は終わりました。

次に、フォルダを右クリックした時の設定です。
左のビューで、「HKEY_CLASSES_ROOT\Directory\shell\VSCode\command」とたどります。
(既定) のデータを修正します。(“%V” の前に、locale オプションを設定します)

"<インストール先>\Microsoft VS Code\Code.exe" --locale=en "%V"

“%V“です!間違えないように!

これで OK です!

Visual Studio Code – Insiders の場合

アイコンが緑のほうです。

左のビューで、「HKEY_CLASSES_ROOT\*\shell\VSCodeInsiders\command」とたどります。
(既定) のデータを修正します。(“%1” の前に、locale オプションを設定します)

"<インストール先>\Microsoft VS Code Insiders\Code - Insiders.exe" --locale=en "%1"

"%1" を忘れずに!
(僕の場合: "C:\Program Files (x86)\Microsoft VS Code Insiders\Code - Insiders.exe" --locale=en "%1")

これで、ファイルを右クリックした時の設定は終わりました。

次に、フォルダを右クリックした時の設定です。
左のビューで、「HKEY_CLASSES_ROOT\Directory\shell\VSCodeInsiders\command」とたどります。
(既定) のデータを修正します。(“%V” の前に、locale オプションを設定します)

"<インストール先>\Microsoft VS Code Insiders\Code - Insiders.exe" --locale=en "%V"

“%V“です!間違えないように!

これで OK です!

参考

Windowsのエクスプローラーの右クリックメニューを編集して整理する
ソフトウェアをインストールすると、エクスプローラの右クリック・メニューに勝手に項目が追加登録されることがある。レジストリの編集によって、右クリック・メニュー...

レジストリのパス

VSCode のExtensionを開発してみる

こんにちは。
Visual Studio Code、使っていますか?
ぼくはこのエディタが大好きです。

今回は、このエディタの Extension(=プラグイン)の開発をしていきたいと思います。

※ node.js が必要です!

開発方法

  • TypeScript + Node.js でいけます。
  • ジェネレータは Yeoman でできています。

手順1: Yeomanを入れる。

npm install -g yo

また、VSCode Extension generatorも入れます。

npm install -g generator-code

手順2: ジェネレータを実行

> yo code
? ==========================================================================
We're constantly looking for ways to make yo better!
May we anonymously report usage statistics to improve the tool over time?
More info: https://github.com/yeoman/insight & http://yeoman.io
========================================================================== Yes

     _-----_
    |       |    .--------------------------.
    |--(o)--|    |   Welcome to the Visual  |
   `---------´   |   Studio Code Extension  |
    ( _´U`_ )    |        generator!        |
    /___A___\    '--------------------------'
     |  ~  |
   __'.___.'__
 ´   `  |° ´ Y `

? What type of extension do you want to create? New Extension (TypeScript)
? What's the name of your extension? first-ext
? What's the identifier of your extension? first-ext
? What's the description of your extension? first-ext
? What's your publisher name? xxx
? Initialize a git repository? No
   create first-ext\.vscode\launch.json
   create first-ext\.vscode\settings.json
   create first-ext\.vscode\tasks.json
   create first-ext\typings\node.d.ts
   create first-ext\typings\vscode-typings.d.ts
   create first-ext\test\extension.test.ts
   create first-ext\test\index.ts
   create first-ext\.vscodeignore
   create first-ext\.gitignore
   create first-ext\README.md
   create first-ext\vsc-extension-quickstart.md
   create first-ext\tsconfig.json
   create first-ext\src\extension.ts
   create first-ext\package.json


I'm all done. Running npm install for you to install the required dependencies. If this fails, try running the command yourself.

Extension の形式は、TypeScript がおすすめです。
開発するとき、インテリセンス君が強力に働いてくれて便利だからです。

その後、名前、識別子、説明、開発者名、Git と聞かれます。
今回は、Git の設定は n にして置きました。

ずらーとモジュールがインストールされます。

手順3: Extension を実行

> cd first-ext
> code .

code . がうまくいかない時は、
first-ext フォルダを VSCode で開いてください。

ジェネレータを実行した状態で、
Hello world が試せるようになっているので、
作った Extension を実行してみましょう。

左側のデバッグボタン(虫)をクリック、緑色の再生ボタンをクリックします。
(ちなみに F5 キーでもいけますー
すると、デバッグ用の VSCode がもう一つ起動します。

vscode-ext-debug

この状態で、Extension をテスト(=実行)できるわけです。

デバッグ用に開いた VSCode で、Ctrl + Shift + P をしてコマンドパレットを開きます。
Hello world と入力しEnter キーを押してみましょう。

vscode-ext-command

Hello world というメッセージが表示されます。

vscode-ext-info-message

この動きは、すべて今作った Extension で動いています。

では、どういう仕組みで動いているのか見てみましょう。

手順4: 動く仕組みは・・?

vscode-ext-nagare
↑ ざっくりとした流れの画像

いまデバッグしていたウインドウは閉じて、
先ほどのプラグインを開いたウインドウに切り替えましょう。

まず、コマンドパレットで「Hello World」と入力しましたね。
これはpackage.json の、contributes.commands から取得されています。

vscode-ext-package.json

ここでは、コマンドパレットでHello Worldが実行されたら、
extension.sayHelloを実行すると書いてあります。

では、この extension.sayHello はどこにあるのでしょう。
src/extension.ts を開いてみましょう。

vscode-ext-extension.ts

activate 関数の中に、
vscode.commands.registerCommand(...)を呼び出している行があります。(17行目)
ここでは、extension.sayHello コマンドが呼び出されたら、
第二引数のコールバック関数を実行する、となっています。

コールバック関数には、
vscode.window.showInformationMessage('Hello World!')
と書かれています。
これは、指定された文字列を先ほどのようなメッセージで表示する関数です。

手順5: 少し変えてみる

extension.ts を、少し変更してみましょう。

let disposable = vscode.commands.registerCommand('extension.sayHello', () => {
  // The code you place here will be executed every time your command is executed

  // Display a message box to the user
  vscode.window.showErrorMessage('Hello Error Message!');
});

似た関数で、showErrorMessage という物があります。
これは、エラーを表示する関数です。

実行してみましょう。手順は先程と同じです。
(F5キーでもいけるよ)

同じように、Ctrl+Shift+P から Hello World を選ぶと、

vscode-ext-show-err-msg

エラーメッセージ出現!

まとめ

このように、Extension は、
TypeScript + Node.js で開発できます。

また、公式サイトにも英語ですが、
Extension の作成方法が載っているので、
見てみてください。

【感動】VSCodeのTypeScriptで、「Find Usages」相当の機能が使えた!

TypeScriptのIDEをNetBeansにした
こんにちはー。TypeScript、使っていますか?今まで、Visual Studio Code を、エディタとして使っていましたが、作っていたアプリが大きくなってきたので、NetBeansを使...

ここで書いたように、VSCodeでは、TypeScriptで
「Find Usages」という、
WebStormとかで、変数、関数などがどこで使用できるかを
プロジェクト内で検索し、表示してくれる機能がないと思っていました。

しかし、ありました!!!

VSCodeでは、Find All References というらしいです。

検索したい変数、関数などにカーソルを置き、Shift + F12
もしくは、右クリック→「 Find All References 」でもできます。

vscode-ts-find-usages

似ている機能で「Peek Definition」という、定義を吹き出しで表示してくれるものがあります。
こちらのショートカットキーは、Alt + F12 です。
今までは、これを使っていたし、これしかないと思っていましたが、
Shift + F12で、定義も表示されてくれるので、もう使わなくていいです^^

というわけで、また NetBeans から VSCode にもどりました。

Visual Studio Code で便利なショートカット!

こんばんは。

Visual Studio Code 使ってますかー!!

GitとTypeScriptの補完をプラグインなしでやってくれて便利です!

さて、今回はよく使っているショートカットキーと

デフォルトにないけどよく使うショートカットキーを紹介します!

(ぼくはWindowsなのでCtrlになりますがMacだとCommandキーなのかな?)

デフォルトにあるショートカットキー

Ctrl + Shift + P

コマンドパレットを開きます。超便利です。

Ctrl + Tab (エディタで)

workbench.action.quickOpenNavigateNext らしいです。

VSCodeにはタブはありませんが、作業中のファイルを切り替えてくれます。

Ctrl + Shift + Tab (エディタで)

Ctrl + Tabの逆バージョン

Ctrl + Shift + F (どこでも)

フォルダーを開いているとき、すべてのファイルから検索ができます!!

デフォルトにないから追加するショートカットキー

設定の方法

Ctrl + Shift + P でコマンドパレットを開き、Preferences: Open Keyboard Settings
keybindings.jsonに、次のような形式でキーバインドを書きます。

{
  "key": "バインドするキー(例: ctrl+alt+o)",
  "command": "コマンド 左側のファイルの下の方にずらっと。"
}

Open Recent Folder

コマンドは workbench.action.openRecent です。過去に開いたフォルダーを表示してくれます。

ぼくは Ctrl + Alt + O にバインドしています。

KeyBindを設定する

workbench.action.openGlobalKeybindings です。KeyBindを設定してくれる画面になります。

最後に

VSCodeは、こんな感じで自分風にアレンジがすぐにできるので、ぜひ使ってみてください!!