-- Views
April 16, 26
スライド概要
[VimConf 談話懇親会 〜Vim以外もOK!〜 - connpass](https://vimconf.connpass.com/event/384648/) で使用したポスター
したっぱプログラマおじさん。一生を Getting Started の実施で過ごす人。
VSCode Dev Container 拡張機能のVim版を作った ~Dev Container の開発体験を Vim に持ち込むため、devcontainer.vim を開発した~ モチベーション コンテナに引きこもって作業をしたかった ・ホスト環境が汚れない ・環境の切り替えが楽 ↓ VSCode Dev Container 拡張機能が最適! ↓ でも Vim が使いたい ↓ Vim をコンテナに転送してそこで Vim を動かそう ターミナル版なら UI 考える必要ないから行けるやろ 書いた人 mikoto2000 VSCode Dev Container 拡張機能とは? VSCode Dev Container では、コンテナ上でサーバー側を 動かし、ホスト上の UI と連携してコンテナ内のリソース を操作する。 devcontainer.json というファイルにコンテナの ビルド設定やマウント設定、ポートフォワード設定等を 記述し、その設定どおりにコンテナを立ち上げてくれる † Developing inside a Container using Visual Studio Code Remote Development from https://code.visualstudio.com/docs/devcontainers/containers devcontainers/cli という、CLI ツールも存在する Vim をDev Container 上で実行するつらみ 右図のように、Vim をコンテナに転送して動かす構成を 実現してみたところ、いくつかのつらみが発生した。 1. VSCode を使っている人にとって 邪魔な定義が必要(vimrc のマウントなど) 2. vsplit してるとコピーが崩れる 3. devcontainers/cli が forwardPorts 未対応 ↓ † Developing inside a Container using devcontainer.vim Cited while modifying https://code.visualstudio.com/docs/devcontainers/containers 1. VSCode を使っている人にとって邪魔なマウント定義が必要 ⇒ devcontainer.json と別に専用ファイルを作ってマージする機能を追加 2. vsplit してるとコピーが崩れる ⇒ Vim9.1984 から入った OSC52 プラグインを利用して Vim のコピーを OS に連携できるようになった 3. devcontainers/cli が forwardPorts 未対応 ⇒ Go で port-forwarder を作成し、強引に再現 できたモノ(devcontainer.vim) devcontainer.vim は、devcontainers/cli をベースに Vim ユーザー向けのコンテナ開発環境を提供するツール。 Vim の転送、設定のマージ、ポートフォワーディングを行う。 ```sh devcontainer.vim template apply # プロジェクトテンプレートを選択・作成(devcontainer.json を作ってくれる) devcontainer.vim config -g > .devcontainer/devcontainer.vim.json # devcontainer.vim 用の設定ファイル生成 devcontainer.vim start . # コンテナを起動し、コンテナにアタッチ&Vim を起動 ``` という感じでコンテナ開発環境を作成できるようになった。 devcontainer.vim で検索!