PodからコードをコピペしたときについてしまうインデントをEmacsでどうやって消すか
Podからコードをコピペしたときについてしまうインデントをviとemacsでどうやって消すか
自分の場合。例としてLWP::SimpleのSYNOPSISをEmacsで。
(1) use LWP::Simple; $content = get("http://www.sn.no/"); die "Couldn't get it!" unless defined $content; if (mirror("http://www.sn.no/", "foo") == RC_NOT_MODIFIED) { ... } if (is_success(getprint("http://www.sn.no/"))) { ... (3)} (2)
ちゃんとしたPerlコードになっている場合
(1)にmarkして(2)で
M-x indent-region
を実行してインデントします。(この例では...の部分がちゃんとしてないですけど、これぐらいなら大丈夫です)
Emacsのインデントは「正しい位置」にインデントされるので、結果的にインデントが消えます。
すでにPerlコードを書いているバッファにコピペした場合は、バッファ全体を
M-x perltidy-region
で整形しちゃうことも多いです。(この例では...の部分に勝手にセミコロンが付いてperltidyが通りましたが、運が悪ければエラーになっちゃう場合もあるので注意)
ちゃんとしたPerlコードになっていない場合(インデントが崩れそうに見える場合・perltidyがエラーになりそうな場合)
(1)にmarkして(3)で
C-x r d
を実行してインデント部分をdelete-rectangleします。キャレット位置合わせがちょびっとだけ面倒。
SYNOPSISが短い場合(3行とか)
(1)に移動して
C-i C-n C-i C-n C-i C-n ...
ってやるかも。C-i([tab])がインデントするようになっているので、Ctrl押しっぱなしでi,nを交互に連打でOKです。
※記事中「(1)でmarkして」とか書いてますけど、貼り付け直後はキャレットが貼り付け物の末尾にある(この動作は変更できるけどデフォルトのままにしてる)ので、「(2)や(3)でmarkして」という場合も多々。細かい話ですみません。