Vim で tmux で CUI 環境の Ubuntu Server でもとにかくコピペがしたい

というかコピーがしたい。gVim をつかっているわけではないし使う気もないけど -clipboard はやっぱり面倒。というか、解決して思ったのはやっぱりエディタなのにコピペが不自由とかありえねーだろってことだった。

まずは設定

set uncommand=clipboard

これはしておきますよね。で、その上でだ

やっぱり +clipboard でコンパイルしてほしい

自力でコンパイルするのがだるいから Python 開発で便利な jedi-vim いれてみたらたしかにライフチェンジングだった - AtAsAtAmAtArA で入れなおした

# mac
brew install vim
# ubuntu
sudo apt-get install vim

まずはこれですね。基本はこれでおっけー

tmux でコピペする

tmux を常用しているのだけど、それだとコピペができないという問題があるのが有名。なので以下の記事を参考に設定。
Mac の tmux でクリップボードを使う。 - こせきの技術日記
ChrisJohnsen/tmux-MacOSX-pasteboard · GitHub

# tmux pasteboard
# git clone git://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard.git
# cd ./tmux-MacOSX-pasteboard
# make reattach-to-user-namespace
# cp reattach-to-user-namespace /usr/local/bin

# copy and paste vim for mac
set-option -g default-command "reattach-to-user-namespace -l zsh"

# コピーモードのバッファをクリップボードに for mac
# chmod 755 /usr/local/bin/tmux-pbcopy
bind y run-shell 'reattach-to-user-namespace tmux-pbcopy'

記事にならって tmux-copy というスクリプトをつくって権限つけてPATHとおしておく。

#! /bin/sh
tmux save-buffer /tmp/.tmux_to_pbcopy
cat /tmp/.tmux_to_pbcopy | pbcopy

Mac で作業する分にはこれで基本的にはおっけー

Mac 内の Virtualbox の VM の Ubuntu Server でもコピペしたい

これがわりとハマった。しかし、これもできないとこまる。tmux のコピーモードで対処できるけど、やっぱりだるい

前提

Virtualbox の場合 VM の設定でクリップボードのところがあるので、双方向でオンにしておく。まあ、デフォルトではある。

Ubuntu で一般的っぽい設定

結果的にはこれらを全部入れた
MBA-HACK: UbuntuにインストールしたVimでクリップボード共有する方法
X11上の選択やクリップボードの内容を扱えるxselの使い方に関するメモ - 試験運用中なLinux備忘録

# X11 対応っぽい感じの Vim をいれる
sudo apt-get -y install vim-gtk vim-athena vim-gnome
# fakeclip.vim のためにクリップボードとしてとりあえず xclip をいれる
sudo apt-get -y install xclip
# クリップボードのバッファっぽいものをいれる
sudo apt-get -y install xsel

sshX11 Forwarding

X11 環境を有効にするっぽい設定を .ssh/config にしておく
ubuntu - Using clipboard through SSH in vim - Super User

Host dev
 User atasatamatara
 Hostname 192.168.56.101
 IdentityFile ~/.ssh/id_rsa_development
 ForwardX11 yes
 ForwardX11Trusted yes

X11 の設定

デフォルトでよい。ペーストボードでクリップボード設定があって「xclip などを使う場合はオフにうんちゃら」ってあるけど、オンのままでうごいた。

とりあえず VM を再起動する

なんかこう必要な感じがした

Vim の設定

とりあえず fakeclip.vim もいれておいた。これは -clipboard な環境でもクリップボードを再現するようだけど、xclip がはいってないとうごかないし(判定部分で xclip が call できるかしてる部分がある)、いれても動いているのか正直よくわからなかった。が、とりあえずいれている。

で、結局は xsel を呼び出して使うことにした。マッピングをしておきましょう。

" X11 CUI 環境でもクリップボード
vmap <C-c> :w !xsel -ib<CR><CR>

まあ

Vim のコンパイルと tmux の件はまあいいとして、主に Ubuntu Server ごしにやるのがだいぶトラブルシューティング的には面倒だった。でもやっぱりエディタでコピペが不自由とかぶっちゃけありえないってレベルなので、やっておいて損はなかった。一度設定すればあとはスクリプトを流すだけだし。