WSLで快適な開発環境を作る

最近WSLに感動している。そんなわけ(?)で備忘録も兼ねてWSLのセットアップについて書きたいと思う。かなり雑ではあるがそこはご了承願いたい。

前置き

Debian GNU/Linux,SUSE,Kali Linux,UbuntuといろいろなディストリビューションがWSLに対応しているが、ここは一番利用者の多いUbuntuでやっていきたいと思う。
また、執筆日時当時の設定方法を記述しているため、古くなっている場合がある。そこはご了承願いたい。

  • 執筆日時:2019/01/23
  • OS:Windows 10 Home
  • WSL: Ubuntu 1804.2018.817.0

WSLインストール

スタートからMicrosoft Storeを開き、Ubuntuと検索しインストール。

WSLセットアップ

インストール終わったらスタートから"Ubuntu"を選択するか、コマンドプロンプトPowerShellwslubuntuと打ち、Ubuntuを起動させる。初回起動時はユーザー名とパスワードを設定する必要があるのでそれをする。 とりあえずパッケージの更新をする。

sudo apt update
sudo apt upgrade

日本語化

sudo apt install language-pack-ja-base language-pack-ja
sudo update-locale LANG=ja_JP.UTF-8

ここで一回WSLを再起動する。
echo $LANGしてja_JP.UTF-8が帰ってくれば日本語化は完了である。

manページの日本語化

また、manページも日本語化するのであれば、

sudo apt install -y manpages-ja manpages-ja-dev

でok。

時刻をJSTにする

しかし、この時点では時刻がJSTではないので、

sudo dpkg-reconfigure tzdata

上のコマンドで矢印キーだけで動かせる画面が出てくるので、順に"アジア"->"東京"をEnterで選択すればok。

Neovimインストール

宗教戦争になりかねない話だが、私はNeovimが好きである。なのでこの記事ではNeovimに関してしか扱わないが、vimは標準で入っているし、emacssudo apt install emacsでインストールできると思うのでその辺はggるなりしていただきたい。

sudo apt install neovim python3-pip
pip3 install neovim

dein.vimの導入

ここではVimプラグインパッケージマネージャであるdein.vimを使うこととする。

github.com

これを参考にしてインストールすればよい。しかし、プラグインをいちいちinit.vimに書くのは嫌なのでtomlに書くことにした。書きかえたのが以下である。

if &compatible
  set nocompatible
endif
" Add the dein installation directory into runtimepath
set runtimepath+=~/.cache/dein/repos/github.com/Shougo/dein.vim

if dein#load_state('~/.cache/dein')
  call dein#begin('~/.cache/dein')

  call dein#add('~/.cache/dein/repos/github.com/Shougo/dein.vim')

  let s:toml = '~/dein.toml'
  let s:lazy_toml = '~/dein_lazy.toml'
  call dein#load_toml(s:toml, {'lazy': 0})
  call dein#load_toml(s:lazy_toml, {'lazy': 1})

  call dein#end()
  call dein#save_state()
endif

filetype plugin indent on
syntax enable

if dein#check_install()
  call dein#install()
endif

これで、~/dein.tomlにどんな言語でも使うプラグインを、~/dein_lazy.tomlに特定の言語向けのプラグインについて書いていけばよい。詳しいdeinのtomlの書き方はggっていただきたい。
ところで、dein.tomlとdein_lazy.tomlで分ける理由としては、必要なプラグインだけ読み込むようにして高速で起動できるようになるからだそうだ。 前者は起動した際、最初に読みこまれるが、後者はちょっとして読みこまれるらしい。

シンボリックリンクの作成

WSLでcd /mnt/c/すればわかると思うが、WSLからWindowsファイルシステムへのアクセスは可能である。 よって、OCamlやCrystalのようなWindowsに対応していない言語の開発ではWindowsファイルシステム上でファイルを保持しておき、編集や実行はWSL上で行うということが可能である。
しかし、毎回、cd /mnt/c/…cd /mnt/d/…するのは面倒なので、

ln -s /mnt/(任意のフォルダ) ~/(任意の英数字)

とやって、ホームディレクトリにシンボリックリンクを作る。
ちなみにWindowsからWSLのファイルシステムへのアクセスはファイルが破壊されるため、アクセス不可能になっているらしい(そもそも場所がわからない)。

おわりに

とまぁ私なりのWSLの環境構築をやってきたわけだが、結局はWSLが本物のLinuxに敵うはずはないと思っているのでLinux機が欲しくなった。