Ubuntuでvimを使う際にvimでコピーした文字列をシステムのクリップボードにコピーすることができないのが不便なので、クリップボードを連携する方法を試してみた。
Contents
標準環境
標準環境について確認する。
ペースト
Ubuntuのインストール直後の標準の状態でも、システムのクリップボードからvimへ貼り付け・ペーストすることはできる。
ターミナルの機能を利用して CTRL+SHIFT+V
vimの挿入モードから SFHIT+INSERT
コピー
クリップボードからvimへの貼り付けは容易にできるが、vimからクリップボードへ文字列を送るのはできないっぽい。
端末からvimのバージョンを確認してみると、標準でインストールされているvimはGUIのない軽量バージョンだということがわかる。
$ vi --version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Nov 24 2016 16:44:48)
Included patches: 1-1689
Extra patches: 8.0.0056
Modified by pkg-vim-maintainers@lists.alioth.debian.org
Compiled by pkg-vim-maintainers@lists.alioth.debian.org
Small version without GUI. Features included (+) or not (-):
+acl -farsi -mouse_sgr -tag_any_white
-arabic -file_in_path -mouse_sysmouse -tcl
-autocmd -find_in_path -mouse_urxvt +terminfo
-balloon_eval -float -mouse_xterm -termresponse
-browse -folding +multi_byte -textobjects
+builtin_terms -footer -multi_lang -timers
-byte_offset +fork() -mzscheme -title
-channel -gettext -netbeans_intg -toolbar
-cindent -hangul_input +packages -user_commands
-clientserver +iconv -path_extra +vertsplit
-clipboard -insert_expand -perl -virtualedit
-cmdline_compl -job -persistent_undo +visual
+cmdline_hist +jumplist -printer -visualextra
-cmdline_info -keymap -profile -viminfo
-comments -langmap -python -vreplace
-conceal -libcall -python3 +wildignore
-cryptv -linebreak -quickfix -wildmenu
-cscope -lispindent -reltime +windows
-cursorbind -listcmds -rightleft +writebackup
-cursorshape -localmap -ruby -X11
-dialog -lua -scrollbind +xfontset
-diff -menu -signs -xim
-digraphs -mksession -smartindent -xsmp
-dnd -modify_fname -startuptime -xterm_clipboard
-ebcdic -mouse -statusline -xterm_save
-emacs_tags -mouse_dec -sun_workshop -xpm
-eval -mouse_gpm -syntax
+ex_extra -mouse_jsbterm -tag_binary
-extra_search -mouse_netterm -tag_old_static
system vimrc file: "$VIM/vimrc"
user vimrc file: "$HOME/.vimrc"
2nd user vimrc file: "~/.vim/vimrc"
user exrc file: "$HOME/.exrc"
fall-back for $VIM: "/usr/share/vim"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -Wdate-time -g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -DTINY_VIMRC -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
Linking: gcc -Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -o vim -lSM -lICE -lXpm -lXt -lX11 -lXdmcp -lSM -lICE -lm -ltinfo -lselinux -lacl -lattr -ldl
また、vimに実装されている機能の有無についてもリストとして確認できて、clipboard機能は追加されていないこともわかる。
方法
vimでクリップボードと連携する方法について。
新規インストール
標準のvimは軽量バージョンだったので、クリップボード機能が追加されているバージョンのvimを適当にインストールする。
$ sudo apt install vim-gnome or $ sudo apt install vim-gtk or ...
ペースト
先の方法以外に “+p でクリップボードからVimにペーストできる。
コピー
Vimからクリップボードへのコピーは “+y で連携できる。
簡易版
“+pや”+yといったレジスタ指定が面倒な場合は、Vimに設定を追加すると通常のヤンク&ペーストでクリップボードと連携できる。
$ vi ~/.vimrc set clipboard=unnamedplus
終わりに
システムのクリップボードとVimを連携する方法は何通りかあるみたい。
個人的に、カスタマイズするのはEmacs、標準設定で使うのがVimと使い分けているので、当分は設定ファイルを作成しないレジスタ指定の方法でヤンク&ペーストを使ってみる。
ただすでにGUI版のVimをインストールしていて、標準状態のVimを使うというルールも微妙になっているので、レジスタ指定が面倒に感じてきたら設定を追加するかも。
参考
command line – Unable to copy from vim to system clipboard – Ask Ubuntu
Cut to the system clipboard from Vim on Ubuntu – Stack Overflow



