Vim

Keynote(Mac版パワポも)にソースコードを貼る

More than 1 year has passed since last update.

Pygmentsやhighlightを使う

Keynoteにシンタックスハイライトされたソースコードを貼り付けるには、RTFでフォーマットされたソースコードをペーストする必要がある。

Keynoteにソースコードを貼る - pirosikick's diary

上記ブログにまとめた内容が以前やっていた方法。CLIで変換してMacのpbcopyコマンドでクリップボードにコピーし、Keynoteに貼り付ける。

# highlightの場合
$ brew install highlight

# file.jsの内容をRTFに変換しクリップボードにコピー
$ cat file.js | highlight --syntax=js -O rtf | pbcopy

# クリップボードにコピーしたソースコードをRTFに変換しクリップボードにコピー
$ pbpaste | highlight --syntax=js -O rtf | pbcopy

Welcome! — Pygments

Pygmentsは↑です。highlightよりドキュメントが充実している気がします。が、そこまで機能差は無いっぽいです。(あったら教えてください)

欠点

  • 日本語が文字化けする
  • いちいちCLIでコマンドを実行する必要があったので、面倒
  • JSXやES2015など新しめのシンタックスに対応していない

文字化けは日本語を使わないでコードを書くなど工夫でどうにかなる。2つ目については、上記のブログにもあるように関数化したりaliasで割りと楽になる。

3つ目が個人的には一番辛くて、この方法はもう使っていない。

vim-copy-as-rtf

zerowidth/vim-copy-as-rtf: Copy syntax-highlighted code from vim to the OS X clipboard as RTF text

vimのプラグイン。インストールすると、CopyRTFコマンドが使えるようになる。
:CopyRTFとすると、そのファイルの内容をvimで表示されている見た目のまま、RTFに変換し、クリップボードにコピーしてくれる。また、Visual Modeで選択した後に:'<,'>CopyRTFを実行すれば、選択範囲のみRTFに変換することもできる。
Vimの見た目のまま貼り付けることができるので、シンタックスに関してはVimが対応していれば何でもいけると思う。

貼り付けてみたスクリーンショット

image

あとは、背景色を同じ色で塗りつぶせばOK!

欠点

  • Macじゃないと使えない
    • Macにしかないコマンドを使っているため(pbcopyやtextutil)

貼り付け先がKeynoteなので「Macじゃないと」はあまり欠点にならない。今はこの方法で貼り付けている。

他のエディタはどうか?

他のエディタに同じようなプラグインがないか、ちょっとだけ調べてみた。(と言っても、AtomとVS Codeだけだけど。Emacsは多分あるでしょう。)

Atom

copy-as-rtf

上記プラグインがすぐ見つかったが、内部でPygmentsを使っているので、Pygmentsの欠点はそのまま引き継いでいると思う。

VS Code

Add ability to copy formatted code to clipboard · Issue #3518 · Microsoft/vscode

Issueがあった。みんな:thumbsup:しているが、Closeされていないし、おそらく実装されていないはず。プラグインも見つけられなかった。(ちょっとしか調べてないのであるかもしれないけど)

おわり

調べても、highlightやpygmentsの記事が殆どだったので、vim-copy-as-rtfについての紹介でした。
これ以外でおすすめの方法があったら、ぜひおしえてください。

追記:Mac版パワポでもOKでした。

image

背景色は消えますが、貼り付けることができました!便利!