細かくは見てないのであってるかは知らないけど、自分ならhmJSでこう。投稿行数が少ないので圧縮。
#JS = loaddll( hidemarudir + @"\hmJS.dll" );
#r = dllfuncw( #JS, "DoString", R"JS(
// ダメな場合に行うこと
function WarnTask() {
clr.System.Media.SystemSounds.Beep.Play(); // 音再生
}
// 置き換えるアルゴ
function FnReplace(all, prev, num, post) {
if (!prev) prev = ""; if (!post) post = "";
return prev + (Number(num)+1) + post;
}
// メインのタスク
function MainTask() {
// 選択対象の文字列。通常選択もしくは行選択。(矩形選択や、複数矩形選択は含めず)
var SelectedText = hm.Edit.SelectedText;
// 処理対象選んでないよ。警告処理。
if (!SelectedText) { return WarnTask();}

// 対象は「最後の文字が数字以外(prev) + 数字(num) + [改行があるかも(post)] + 末尾」
var ReplacedText = SelectedText.replace( /^(.*?\D)?(\d+)([\r\n]+)?$/, FnReplace );
// 変化がないということは、置換対象としては有効ではなかった。警告処理。
if ( SelectedText == ReplacedText ) { return WarnTask(); }

// 元のところへと上書き
hm.Edit.SelectedText = ReplacedText;
}
// 処理実行
MainTask();
)JS"
);
freedll( #JS );