Macのvimでクリップボードにコピーするoperator
下記の様に書けばクリップボードにコピーできるのですが、行単位じゃないとコピーできないし、オペレーターとして使えないのが若干不便です。
nnoremap <silent> <Space>y :.w !pbcopy<CR><CR>
vnoremap <silent> <Space>y :w !pbcopy<CR><CR>
nnoremap <silent> <Space>p :r !pbpaste<CR>
vnoremap <silent> <Space>p :r !pbpaste<CR>
なのでクリップボードにコピーするためのオペレーターを定義しました。pbcopyを使うのでMac限定です。
" Macでクリップボードにコピーするoperator
if has('mac')
function! Pbcopy(type, ...)
let reg_save = @@
if a:0
silent execute "normal! `<" . a:type . "`>y"
elseif a:type == 'line'
silent execute "normal! '[V']y"
elseif a:type == 'block'
silent execute "normal! `[\<C-V>`]y"
else
silent execute "normal! `[v`]y"
endif
call system('iconv -f utf-8 -t shift-jis | pbcopy', @@)
let @@ = reg_save
endfunction
nnoremap <silent> <Space>y :<C-u>set opfunc=Pbcopy<CR>g@
nnoremap <silent> <Space>yy :<C-u>set opfunc=Pbcopy<CR>g@g@
vnoremap <silent> <Space>y :<C-u>call Pbcopy(visualmode(), 1)<CR>
nnoremap <silent> <Space>p :<C-u>r !pbpaste<CR>
endif
日本語はsjisじゃないとダメらしいのでsjisに変換してます。あと、最初からイントールされているscreen上ではpbcopy使えないのでscreenをパッチ当ててインストールしないとダメです。
追記: faceclip.vimを使おう!fakeclip - pseudo clipboard register for non-GUI version of Vim : vim online
- Prev Entry:vimでフォントの大きさをトグルする
- Next Entry:zshから辞書を引く