プログラミング/Visual Studio Code

(346d) 更新


公開メモ

コマンドマクロ

例えば Ctrl+M で、

  • ターミナルに移動
  • make を実行
  • エディタへ戻る

をしたいような時、

macro-commander という Extention を使うと良いみたい。

macro-commander.png

プロジェクトフォルダの .vscode/settings.json に、

LANG: json
{
  "macros": {
    "run make": [
      "workbench.action.terminal.focus",
      { "command": "workbench.action.terminal.sendSequence", "args": { "text": "make\n" } },
      "workbench.action.focusActiveEditorGroup"
    ]
  }
}

のように書いておくと、Ctrl+K Ctrl+S のキーボードショートカット一覧に

keyboard-shortcut-run_make.png

のように macros.run make が出るので Ctrl+M を割り当てればいい。

キーボードマクロ

エディタ上で任意のキーストロークを記録・再生するキーボードマクロは、

keyboard-macro-beta.png

で良さそう。

  • Ctrl+Alt+R で記録開始
  • Ctrl+Alt+P で再生

コード補完のメニューが邪魔

Visual Studio Code で編集中にコード補完リストが出て邪魔すぎたので、Ctrl + space を押したときだけ出るように設定しました。

このコード補完リストは Suggestion とか Intellisense とか呼ばれるもので、 本当に探したいときはとても便利なのですが不必要な時に現れてくれると邪魔なことこの上ないです。

この suggestion が何もしなくても勝手に現れる動作は Quick Suggestions と呼ばれるようで、 これを消してやれば良いのだそうです。参考: https://qiita.com/kob58im/items/7ace99c5373682c04c00

現状では [File]-[Preferences]-[Settings] あるいは Ctrl+, で Settings を開き、 quick suggestions で検索、出てくる表の Value が on になっているところをすべて off にすれば 勝手に出ることがなくなります。

quick-suggestion-off.png

ここを off にしても Ctrl + Space を押せばちゃんと出るのでちゃんと suggestions の機能も使えます。

始めからこれで良いのに。

Tabby

https://gigazine.net/news/20230410-tabby-self-host-copilot/

ローカルで GitHub Copilot もどきを動かして VS Code から使えます。

https://github.com/TabbyML/tabby

  • NVIDIA-SMI 530.30.02
  • CUDA Version: 12.1
  • NVIDIA Container Toolkit CLI version 1.13.0
  • Docker version 20.10.7
  • NVIDIA GeForce RTX 2070, 8GB

の組み合わせでストレスなく動かせました。

ただこれ、

https://huggingface.co/Salesforce/codegen-350M-multi[外部リンク]

The data consists of 119.2B tokens and includes C, C++, Go, Java, JavaScript, and Python.

とのことなので、使用言語がここに入ってないと役に立たないです。

あと、Copilot のデモと比べるとそこまで賢くないような。

WSL 上でのコーディング

WSL のプラグインを入れると WSL のファイルシステム上で操作しているかのような動作が得られる。

https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl

プラグインを入れたら左下の [Open a Remote Window] をクリックして、

open-a-remote-window.png.jpg

[Connect to WSL] をクリックすると

Connect-to-WSL.png.jpg

図のように WSL に接続した旨が表示される。

wsl-connected.png

あとは Open Folder などで WSL 内のパス /home/user/project などを指定してやれば、 その後開くターミナルなどもそのまま WSL のものとなって便利。

この環境を使うのにいくつか注意点があって、

VSCode のプラグインは通常のものと WSL 用のものとで別に入れなければならない場合がある。

リモートで動かすプログラムのパスなどセキュリティセンシティブな設定は Local や Project の設定ではなく Remote 別の設定に書かなければならない。

これには Ctrl+Shift+P から Remote Settings を使う。

remote-settings.png

そういった設定を User Settings に書こうとすると、Json の該当項目がグレーアウトして、

"This setting cannot be applied in this window. It will be applied when you open a local window."

と言われる。あるいは Project フォルダの .vscode/settings.json に書こうとすると、

"This setting can only be applied user settings in local window or in remote settings in remote window."

と言われる。

すごく分かりにくいけれどこれらを総合すると、

  • セキュリティセンシティブな設定はプロジェクト設定には書けない(git で落としてきたりする設定で書き換えられないようにするため)
  • User Settings はローカルのウィンドウのための設定なのでリモート接続で使うウィンドウには適用されない
  • WSL を使っている場合はリモート扱いになる

ということみたいだ。

WSL に複数のディストリビューションが入っているときは Windows のコマンドプロンプトから

LANG: console
> wsl --set-default <Distribution>

あるいは、

LANG: console
> wsl --set-version <Distro> <Version>

とする。

root ではない特定のユーザーでログインしたいときは、WSL 内の /etc/wsl.conf に

LANG: console
$ cat | sudo tee /etc/wsl.conf
[user]
default=osamu
^D

のように書いておく。

でこれ、どうもすぐには反映されないようで・・・ Windows の再起動が必要かもしれません。

正しく設定しても VSCode がうまく動作しないとき

プラグインの設定を変えてもうまく反映されないような時、 VSCode をいったん閉じて開きなおすとうまく行くことが何度もありました。


Counter: 1347 (from 2010/06/03), today: 1, yesterday: 0