Skip to content

Instantly share code, notes, and snippets.

@rolandcrosby
Last active March 27, 2023 18:34
Show Gist options
  • Save rolandcrosby/c26571bf4e263f695d2f to your computer and use it in GitHub Desktop.
Save rolandcrosby/c26571bf4e263f695d2f to your computer and use it in GitHub Desktop.
Convert rich text on the clipboard to Markdown
if encoded=`osascript -e 'the clipboard as «class HTML»'` 2>/dev/null; then echo $encoded | perl -ne 'print chr foreach unpack("C*",pack("H*",substr($_,11,-3)))' | pandoc --no-wrap -f HTML -t markdown; else; pbpaste; fi
# for my .vimrc:
# command PasteMarkdown :read !if encoded=`osascript -e 'the clipboard as «class HTML»'` 2>/dev/null; then echo $encoded | perl -ne 'print chr foreach unpack("C*",pack("H*",substr($_,11,-3)))' | pandoc --no-wrap -f HTML -t markdown; else; pbpaste; fi
# nnoremap ,pmd :PasteMarkdown<CR>
@martinmts
Copy link

Hi, thanks for sharing.
I tried the code. It returned an error initially. I removed the ; after else, and it worked great.

@rolandcrosby
Copy link
Author

I see that in bash as well. I think I was using ZSH at the time I wrote this, where this syntax seems to work. Also pandoc changed its arguments and seems to prefer --wrap=none instead of --no-wrap now.

@martinmts
Copy link

Also pandoc changed its arguments and seems to prefer --wrap=none instead of --no-wrap now.
Yes. I also made the change to that after seeing the error message.

Thanks again for sharing. I spent hours and hours searching for a solution and yours is the only one that worked for me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment