読者です 読者をやめる 読者になる 読者になる

heyheytower

日々のメモです。誰かのお役に立てれば幸いです。

vimとX11、UbuntuのC-cクリップボードの話(vimのクリップボード共有について)

Vim Ubuntu

【経緯】

guake でコンソールを開き、screen で3ペインにした後、複数 vim を起動します。裏ではブラウザや2chブラウザが開いています。

gnome-screenshot --window

その際、ブラウザと複数のvim間のコピーが問題になります。

vim でヤンクを使うと、無印レジスタに保存されるので共有は
できないですし、毎回コマンドを利用するのは面倒ですし、ブラウザ
からのコピー C-c、ブラウザへの貼付け C-v、も行いたい訳です。

vim のビルド】

vim は apt-get などで取得するとデフォルトで clipboad が使えず、
オプションを付加しビルドし直すことで clipboard ifjdfjasdfkad
djafsdfjadが有効になると
いう記事を読み、試してみることにしました。*1
*2

name -a
Linux ubuntu 2.6.32-43-generic #97-Ubuntu SMP Wed Sep 5 16:42:26 UTC 2012 x86_64 GNU/Linux

cd /tmp
sudo su
apt-get install hg ncurses-dev
hg clone https://vim.googlecode.com/hg/ vim
cd vim/src
./configure --with-x --with-gnome --enable-xim --with-features=big --enable-multibyte
make
make install

vim --version
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Oct 14 2012 23:13:18)
適用済パッチ: 1-691
〜〜〜
+clipboard
〜〜〜

echo "set clipboard=unnamed,autoselect" >> ~/.vimrc

と、まぁ、ここまでは良かったのです…

【問題】

Ubuntuではクリップボード C-c, C-v で用いるレジスタが "+" であった
ということです。*3

どうなるかというと、vimクリップボードを使えるようにするという
のはレジスタ "*" を想定しているようで、ubuntuvim のヤンクを使って
も、C-c, C-v とはクリップボードを共有できないようなのです…*4
※ネットでは WindowsMac の同様の問題が見つからないので ubuntu
 だけの問題?

そして面白いことに、マウスの middle click(マウスの中ボタン)は
X11クリップボードレジスタである "*" 使うのです。
※いや gnomeX11 だけど…

クリップボード共有なしの vim の挙動

真ん中のレンガみたいのは
無印レジスタ、*レジスタ、+レジスタ
を示しています。

使われているコマンド類
y
p
:y+(nomal mode)
:y*(nomal mode)
"+p(visual mode)
"*p(visual mode)
C-c(Ctrl+c)
C-v(Ctrl+v)
C-S-v(Ctrl+Shift)
middle(middle click、マウスの中ボタン)
ハンイシテイ(範囲指定だけでも レジスタ"*"へコピーされます)

ビルド vim 、set clipboard=unnamed オプション有りの挙動

経路的にはシンプルですけどね。

※それに加え、自分は Browser firefox では操作が vim like に
 なる vimperator を使っているので、レジスタ"+"からのコピぺは
 "y","p"だけでいいのです。お勧めです。

【結論】

vim 同士は、y・p。
vim => browser は、y・middle、または:y+・C-v 。
browser => vim は、C-c・C-S-v、または範囲指定・p 。




間違いがあればコメントで一報いただけると嬉しいです。
またはより良い方法を;-)

…結論の方法でも複雑ですか?いや、vim愛があれば大抵は
どうにかなりますから。

追記
友人より下記のオプションの話を聞きました。
set clipboard=unnamedplus,autoselect
これですと期待する動作になりました。
どちらにしても利用するとクリップボードを2つ利用
できるので、皆様もこれを機にvimを使ってみては:)

以上。