この記事について
本記事は私のブログ記事 https://blog.aotake91.net/posts/20210327-enable-vim-clipboard-on-wsl/ を転載・加筆修正したものです。
はじめに
わたしはVimが好きです。そしてUNIX的なコマンドが使える環境が好きです。今までWindows上でGVimを主に使ってきましたが、最近、Windows Subsystem for Linux上のLinuxでCUI版Vimを利用するようになりました。
基本的にはVimのパッケージをそのままインストール(Ubuntuでしたら apt install vim)して設定すれば最高の環境が得られますが、ひとつだけ問題があります。パッケージとして配布されているVimはクリップボード連携機能が無効化されてビルドされています。そのままでは、Windowsの他のアプリケーションとの間でやり取りするのに苦労します。
クリップボードを利用できるようにするにはいくつか方法がありますが、そのうちのひとつ、VcXsrv Windows X Server を利用する方法を紹介します。
環境
- Windows Subsystem for Linux (1でも2でもOK)
- Ubuntu 20.04.2
あとの手順で導入する各種依存関係は、Ubuntu の apt で導入できる最新版を用いて差しつかえありません。
手順概略
- Vimの機能有効化状態を確認
- Vimをクリップボード機能有効にしてビルド
- VcXsrv をセットアップ
- VcXsrv に接続
詳細
1. Vimの機能有効化状態を確認
Vimを起動した状態で「:version」コマンドを実行するか、シェルコマンドラインから次のコマンドを実行します。
$ vim --version
このときに、「+clipboard」とあればクリップボード機能は有効化されていますので手順3に進んでください。「-clipboard」でしたら、手順2のビルド作業をします。
ビルド作業をするのでしたら、ついでに各種スクリプト言語のインタプリタとの連携機能も有効化しておくと、将来的にいろいろ捗るかもしれません。「python」「python3」「ruby」「lua」などについて、頭に「-」がついていたら手順2で有効化できます。
2. Vimをクリップボード機能有効にしてビルド
基本的に、必要な(必要そうな)ライブラリを入れて make すると完了です。
# ビルドのために最低限必要なツールを導入
$ sudo apt install git gettext libtinfo-dev libacl1-dev libgpm-dev build-essential
# Python2, Python3, Ruby, Lua, Perl連携に必要なツールとライブラリを導入
$ sudo apt install python python-dev python3 python3-dev ruby ruby-dev lua5.3 liblua5.3-dev libperl-dev
# GitHubから最新版のVimをクローン
$ git clone https://github.com/vim/vim.git
# ビルドオプションの設定
$ cd vim/src
$ ./configure --with-features=huge \
--disable-gui \
--enable-perlinterp=dynamic \
--enable-pythoninterp=dynamic \
--enable-python3interp=dynamic \
--enable-rubyinterp=dynamic \
--enable-luainterp=dynamic \
--enable-fail-if-missing
# ビルドとインストール
$ make
$ sudo make install
# 新しい Vim が呼び出せるように、コマンドへのパスのキャッシュを再構築
$ hash -r
各インタプリタ連携については、不要なものは外しても大丈夫です。また、連携するためのライブラリはすべてダイナミックリンクとしています。GUIについては利用しないため無効化しました。
インストール後の最後の手順は重要です。コマンドへのパスのキャッシュがあると、意図しない(もとのバージョンの)方のVimを呼び出してしまいます。キャッシュを再構築することで新しいVimを呼び出せるようにします。
3. VcXsrv をセットアップ
続いて、VcXsrv Windows X Server をセットアップします。
-
https://sourceforge.net/projects/vcxsrv/ からプログラムをダウンロードしてインストールします。
-
XLaunch を実行します。Disable access control <- これをチェックすることを忘れずに。Save Configuration ボタンをクリックして、 C:\Users\\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\config.xlaunchにファイルを保存すると、自動起動できます。
-
Windowsファイアウォール通信許可のダイアログが出たら、VcXsrvを許可するよう設定します。
4. VcXsrv に接続
WSLのバージョンが1であるか、2であるかによって、設定すべき内容が変わります。
# WSL 1 の場合
export DISPLAY=localhost:0.0
# WSL 2 の場合
LOCAL_IP=$(cat /etc/resolv.conf | grep nameserver | cut -d' ' -f2)
export DISPLAY=$LOCAL_IP:0.0
上記のコマンドを .bash_profile など、利用しているシェルの起動スクリプトに記述してください。
以上で手順は終わりです。よいVimライフを!