見出しジャンプ
ナビゲーションに移動
検索に移動
概要[編集]
見出しとしてよく使われる特定の記号で始まる行、および墨括弧【aaa】のように見出しを示す修飾括弧のみの行にジャンプします。
2023年11月3日現在、認識する見出し記号は以下のとおりです(対象行内の前後の空白は無視します)。
- 右記の記号いずれかで始まる行: #■□◆◇◯○◎●
- 行頭、行末が右記の記号の組み合わせの行: ** | **** | 【】 | [] | [] | 《》 | 〈〉
#include ディレクティブを用いて共通部をまとめているので、以下3つのファイルをまとめてMacroフォルダに格納してご利用ください。
- MoveToHeadingSymbolAbove.js : カーソルの上方向に移動します。Alt+Shift+Upなど、上方向をイメージするショートカットに割り当てるのがオススメ。
- MoveToHeadingSymbolBelow.js : カーソルの下方向に移動します。Alt+Shift+Downなど、下方向をイメージするショートカットに割り当てるのがオススメ。
- MoveToHeadingSymbolFunc.js : 上記2つのマクロから呼び出される関数を定義しています。
ソースコード[編集]
MoveToHeadingSymbolAbove.js[編集]
#include "MoveToHeadingSymbolFunc.js"
#title = "前の見出し記号に移動"
moveAbove();
MoveToHeadingSymbolBelow.js[編集]
#include "MoveToHeadingSymbolFunc.js"
#title = "次の見出し記号に移動"
moveBelow();
MoveToHeadingSymbolFunc.js[編集]
var doc = document;
var sel = document.selection;
var HEADING_SYMBOL = /^[\s ]*([#■□◆◇◯○◎●]|(\*{1,2}.+\*{1,2}|【.+】|\[.+\]|[.+]|《.+》|〈.+〉)[\s ]*$)/;
var MAX_MOVE_LINES = 10000;
function moveBelow() {
// 現在位置を取得
var currentY = sel.GetActivePointY(mePosLogical);
// 下方向に向かって検索
for (var i = currentY + 1; i < currentY + MAX_MOVE_LINES; i++) {
var s = doc.GetLine(i);
if (s.match(HEADING_SYMBOL)) {
// マッチした行の先頭に移動
sel.SetActivePoint(mePosLogical, 1, i, false);
break;
}
}
}
function moveAbove() {
// 現在位置を取得
var currentY = sel.GetActivePointY(mePosLogical);
// 上方向に向かって検索
var goalY = currentY - MAX_MOVE_LINES;
if (goalY < 0) goalY = 0;
for (var i = currentY - 1; i > goalY; i--) {
var s = doc.GetLine(i);
if (s.match(HEADING_SYMBOL)) {
// マッチした行の先頭に移動
sel.SetActivePoint(mePosLogical, 1, i, false);
break;
}
}
}
スポンサーリンク