スパム対策として書込み時にID/PWを要求されますが、ローマ字で ほげ/ホゲ で書き込めるようになります。

選択範囲を C プリプロセッサにかける

メッセージ

Emacs には選択範囲を C プリプロセッサで処理して表示してくれるコマンドがある (c-macro-expand。キーは C-c C-e)。 それの真似。

1.シェルスクリプトを使う方法

以下を cppregion として保存しておく。

#!/bin/sh

if [ $# -ne 3 ]; then
	echo "Usage: $0 FILE BEGIN END"
	echo "Example: $0 hoge.cpp 4 18"
fi
beginmark='---beginning_of_cpp_region'
endmark='---end_of_cpp_region'

sed -e "$2i\\
$beginmark" -e "$3a\\
$endmark" "$1" | cpp -C | sed -ne "/$beginmark/,/$endmark/p"

以下を .vimrc に書いておく。

function! CppRegion() range
  exe "'<,'>!cppregion " . expand("%") . " " . a:firstline . " " . a:lastline 
endfunction

次のように実行すると、選択範囲を cpp で処理した結果に置き換える。

:'<,'>call CppRegion()

2. sed, cpp 部分も Vim スクリプトに埋め込む方法

シェルスクリプト部分も全部無理矢理 Vim スクリプトに埋め込んだバージョン。

function! CppRegion() range
  let beginmark='---beginning_of_cpp_region'
  let endmark='---end_of_cpp_region'
  exe a:firstline . "," . a:lastline ."!sed -e '" . a:firstline . "i\\\\" . nr2char(10) . beginmark . "' -e '" . a:lastline . "a\\\\".nr2char(10).endmark."' " .expand("%") . "|cpp -C|sed -ne '/" . beginmark . "/,/" .endmark . "/p'"
endfunction

input() を使って cpp のオプションを対話的に入力するようにするのもいいかもしれない。





トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-10-14 (火) 01:13:17 (1348d)