TODESKING
技術ブログ

Mac OSX: Vimで選択した領域をHTML化してクリップボードにコピーするコマンド

KeyNoteでスライド作ってると、シンタクスハイライトしたコードを貼りたくなることがあるのですが、Vimでやろうとすると非常に厄介。

  • 選択領域のHTML化自体は:TOhtmlコマンドで可能
  • HTMLをそのままKeyNoteにコピペするとプレインテキスト扱いになる
  • 生成されたHTMLをファイルに保存→Safariで開く→コピペ という手順を踏むことで貼り付け可能

あまりにもつらいので調査したところ、textutilpbcopyコマンド(どちらもMac標準だと思います)を組み合わせることで解決することがわかった。

copy_html.vim

1
2
3
4
5
6
7
8
" 選択領域(またはファイル全体)のハイライトをHTML化→rtf化してクリップボードにコピーするコマンド
command! -nargs=0 -range=% CopyHtml call s:copy_html()

function! s:copy_html() abort
  '<,'>TOhtml
  w !textutil -format html -convert rtf -stdin -stdout | pbcopy
  bdelete!
endfunction

便利!!!!!!!!!!!!!!!!!!!!!!!(以上です)

Comments