Help us understand the problem. What is going on with this article?

WSL+tmux+vimでクリップボードを(ある程度)共有する

More than 1 year has passed since last update.

はじめに

VimとTmuxをターミナルとシステムクリップボードと連携させようとしたとき、
Macユーザー向けの情報は結構出てくるが、WSL向けの情報があまりなかったので。
あとVimのビルドでハマったので。
こちらの動画は分かりやすいので、先にご覧いただくとよいかもしれません。

環境

  • ローカル環境

    • Windows 10
    • WSL(Ubuntu 18.04)
    • tmux 2.6
  • リモート環境

    • GCE(CentOS 7.6.1810)
  • 共通

    • Vim

概要

WSL, tmux, vimを使う際にシステムクリップボードを共有するため、以下のような作業を行いました。

  • vim
    • featureのうちclipboardを有効にするため、GUIサポート有でソースからビルド
  • tmux
    • tpmとtmux-yankの導入
  • VcXsrv
    • 新規インストールと.zshrcへの設定追加
  • リモート環境とのシステムクリップボード共有
    • sshの設定変更で可能。ただし、自分のマシンとネットワークが貧弱でリモート接続が我慢できないほど遅くなることがわかったので設定を戻した

vim

まず、使用中のvimのバージョンを確認(vim --version)して、

  1. vimの種類(tiny, normal, hugeなど)がHuge version without GUI
  2. clipboard機能が無効(-clipboard)

などとなっている場合、システムクリップボードがうまく働きません。
vimをソースからビルドする際に、オプションの設定で機能のON/OFFが設定できるようなので、ソースからビルドすることで対応しました。
以下の画像は、チェックする箇所です(ビルド後にキャプチャしているので値は修正後のものです)

qiita2 - コピー.JPG

ソースからビルドする前に、依存するリポジトリのインストールをします。
試行錯誤しながら行った際のコマンドなどで、不要なものも含まれているかもしれません。
また、ローカル環境はUbuntu、リモート環境はCentOsなので微妙にコマンドが違います。

#centos:
sudo yum install python-devel python36-devel
sudo yum install gtk2 gtk2-devel
sudo yum install xorg-x11-server-devel
sudo yum install ruby ruby-devel
sudo yum-builddep vim-X11
sudo yum -y groupinstall "X Window System"

#ubuntu:
sudo apt build-dep vim
sudo su -c "grep '^deb ' /etc/apt/sources.list | \
sed 's/^deb/deb-src/g' > /etc/apt/sources.list.d/deb-src.list"
sudo apt update
sudo apt build-dep vim
sudo apt-get install python-dev python3-dev
sudo apt-get install xorg-dev libgtk2.0-dev

メイク

sudo ./configure --with-features=huge \
 --enable-multibyte \
 --enable-gpm \
 --enable-cscope \
 --enable-fontset \
 --enable-fail-if-missing \
 --enable-pythoninterp=dynamic \
 --enable-python3interp=dynamic \
 --enable-rubyinterp=dynamic \
 --enable-gui=auto \
 --enable-gtk2-check \
 --with-x 

ハマったポイントとしては、

centosで上記コマンドを実行する際に、--with-xオプションがどうしても通らない
→X11用のパッケージを片っ端からインストールするも通らない
→よくよくエラーメッセージを見ると、--with-xオプションの依存関係を判定する部分に(cache)の文字がある
→configure実行時に設定によってはキャッシュをすることができるようになっている
→vim/src/auto以下のconfig.cacheを削除し、configure再実行で通った

その後、makeとmake installをします。

sudo make
sudo make install

インストール後、.vimrcなど設定は特にいじる必要はありませんでした。

tmux

以下の記事を参考に、tpmとtmux-yankを入れました。(ついでにtmux-resurrectも)

【tmux】tpmでplugin管理して快適ターミナル生活

設定は以下を追加しました。

.tmux.conf
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'

set -g @plugin 'tmux-plugins/tmux-yank'
set -g @plugin 'tmux-plugins/tmux-resurrect'

# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run -b '~/.tmux/plugins/tpm/tpm'

VcXsrv

実はこちらはもともとインストールしてあったので、設定の確認だけ行いました。
インストールから行う方は、以下の記事が参考になるかと思います。

WSL上のvimでクリップボードを共有する方法

.zshrcに以下の文言も追加しました。(bashなどを使っている方も同様です)

# VcXsrv setting
export DISPLAY=localhost:0.0

リモート環境とのやりとり

こちらによれば、sshのconfigに

    ForwardX11 yes
    ForwardX11Trusted yes

と追加し、リモート環境にxselインストールやaliasの設定などをするとありますが、自分の環境ではxselなどは不要でした。
ただ、上記ForwardX11の設定をするとssh接続時の動作が遅くなってしまい(特にvimをリモート環境で開くときに顕著)逆にストレスになったので、適用はしませんでした。
環境要因だと思いますので、試していただいてもよいと思います。

おわりに

半日ほど作業にかかってしまったのですが、ふとした時にコピペできないストレスがなくなったので長い目で見ればよい結果をもたらすだろうと思います。
あとはmakeをちゃんと理解しないとなあと痛感しました。。。

その他の参考情報

Vim の種類 (Vim family)
vimでclipboardを+にしたいけどならない人向け
[vim] config.cacheが悪さをした
How to build vim from sources with GUI support?
Redhat系Linux(CentOS7)にVim8をインストールする方法いろいろ

blueband
アフリカの貧弱なネットワークからお届け
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした