インデントさせてくれないQ&Aサイトで見やすいコードを貼る方法


概要

半角スペースとかタブでインデントつけても全部トリミングされてしまう,プログラマからするとお節介な処理をしてくるQ&Aサイト等,あるかと思います.

知っている人も多いかと思いますが,半角スペースの代わりに用いられる,\xC2\xA0 \u{00A0}   と称されるNo break spaceという文字は,以下の3点をすべて満たしています.

  • 一般的なプログラミング言語における,trimのような関数にはトリミングされない
  • Webブラウザ上に表示させたとき,連続していてもすべて表示される
  • Webブラウザ上でコピーしたとき,半角スペースとして扱わせることができる

そこで,クリップボード上の「半角スペース」→「No break space」の変換を行ってくれるコマンドを作っておけば便利ですよね!

コマンド定義

~/.bashrc, ~/.zshrc などに定義
# 共通
nbsp() {
    perl -pe 's/\x{20}/\x{C2}\x{A0}/g'
}
# OSX用
pbnbsp() {
    pbpaste | nbsp | pbcopy
}
# Linux用
xsnbsp() {
    xsel -bo | nbsp | xsel -bi
}

参考