文書の過去の版を表示しています。
— y2sunlight 2021-12-02
マクロを以下フォルダに設置する。
{ユーザフォルダ}\AppData\Roaming\sakura
以上でショートカットキーでマクロを実行することが出来るようになります。 ショートカットキー以外で実行する時は、[ツール][名前を指定してマクロ実行]を押し、マクロを選択します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
// ----------------------------------------------- // 1行の最大文字数を指定して改行を入れる // ----------------------------------------------- main(); function main() { // 最大文字数取得 var maxLen = parseInt(Editor.InputBox( '1行の最大文字数を入力してください' , 100)); if (isNaN(maxLen)) return ; // 元の折り返し桁数の取得と折り返し桁数設定 var oldWrapColm = Editor.ChangeWrapColm(maxLen); // 全て選択 Editor.SelectAll(); // 折り返し位置に改行をつけてコピー Editor.CopyAddCRLF(0); // 折り返し桁数を元に戻す Editor.ChangeWrapColm(oldWrapColm); // ペースト Editor.Paste(0); // 名前を指定して保存 var fileName = Editor.GetFilename() + '.chop' ; Editor.FileSaveAs(fileName); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
// ----------------------------------------------- // 0x00(NUL)~0x1f(US)を0x20(SPC)に変更する // 0x0a(LF),0x0d(CR)除く // ----------------------------------------------- var isSelected = Editor.IsTextSelected(); if (isSelected == 0){ // ----------------------- // 非選択状態(0) // ----------------------- // 全て選択 Editor.SelectAll(); } else { // ----------------------- // 選択中(1),矩形選択中(2) // ----------------------- } // 置換 // 第3引数 正規表現(0x004=4),選択範囲(0x080=128) Editor.ReplaceAll( '[\\x00\\x00-\\x1f\\x00&&[^\\x0a\\x00\\x0d\\x00]]' , '\\x20' , 132); Editor.ReDraw(0); // 再描画 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
// ----------------------------------------------- // コードの置換 // 置換前のコードと置換後のコードはコロン(:)で区切る // 複数置換の場合はカンマ(,)で区切る // 0x00と0x01を0x20に置換する場合の入力例 00:20,01:20 // ----------------------------------------------- main(); function main() { var txt = Editor.InputBox( '制御コード(16進2桁)を入力して下さい。' ); if (!txt) return ; var arr = txt.split( ',' ); for ( var key in arr){ var hexArr = arr[key].split( ':' ); if (hexArr.length == 2) { var before = '\\x' + hexArr[0] + '\\x00' ; var after = '\\x' + hexArr[1]; Editor.ReplaceAll(before,after,4); } } // 再描画 Editor.ReDraw(0); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
// ----------------------------------------------- // 固定長の〇文字目から?文字でソートする // ----------------------------------------------- main(); function main() { // 〇文字目から var startPos = parseInt(Editor.InputBox( '何文字目から?' , 1)); if (isNaN(startPos)) return ; // ?文字 var maxLen = parseInt(Editor.InputBox( '何文字でソート' , 1)); if (isNaN(maxLen)) return ; // カーソル移動 Editor.MoveCursor(1, startPos, 0); // 矩形範囲選択開始 Editor.BeginBoxSelect(0); // 範囲選択 for ( var col = 1; col < maxLen+1; col++) { Editor.Right_Sel(0); } var rowCnt = Editor.GetLineCount(0); for ( var row = 1; row < rowCnt; row++) { Editor.Down_Sel(0); } // 選択行の昇順ソート Editor.SortAsc(0); } |
1 |
TODO |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
// ----------------------------------------------- // バイナリーを16進ASCIIに変換 // ----------------------------------------------- main(); function main() { var isSelected = Editor.IsTextSelected(); if (isSelected == 0) { Editor.MessageBox( '範囲を選択して下さい。' ); return ; } var colFrom = GetSelectColumnFrom(); // 選択開始桁 var colTo = GetSelectColumnTo(); // 選択終了桁 var lineFrom = GetSelectLineFrom(); // 選択開始行 var lineTo = GetSelectLineTo(); // 選択終了行 // 選択範囲の文字列取得 var selectText = GetSelectedString(0); // 最後の改行削除 selectText = selectText.replace(/\r\n$/, '' ); // 改行で分割 var selectArr = selectText.split( '\r\n' ); for ( var i=0; i<selectArr.length; i++){ var changeText = '' ; for ( var j=0; j<selectArr[i].length; j++) { changeText += ( '00' + selectArr[i].charCodeAt(j).toString(16)).slice(-2); } // 範囲選択 Editor.MoveCursor(lineFrom + i, colFrom, 0); for ( var col=colFrom; col < colTo; col++) { Editor.Right_Sel(0); } // 上書き Editor.InsText(changeText); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
// ----------------------------------------------- // 16進ASCIIをバイナリーに変換 // ----------------------------------------------- main(); function main() { var isSelected = Editor.IsTextSelected(); if (isSelected == 0) { Editor.MessageBox( '範囲を選択して下さい。' ); return ; } var colFrom = GetSelectColumnFrom(); // 選択開始桁 var colTo = GetSelectColumnTo(); // 選択終了桁 var lineFrom = GetSelectLineFrom(); // 選択開始行 var lineTo = GetSelectLineTo(); // 選択終了行 // 選択範囲の文字列取得 var selectText = GetSelectedString(0); // 最後の改行削除 selectText = selectText.replace(/\r\n$/, '' ); // 改行で分割 var selectArr = selectText.split( '\r\n' ); loop: for ( var i=0; i<selectArr.length; i++){ // 2文字ずつに分ける var hexArr = selectArr[i].match(/.{2}/g); if (!hexArr) continue ; var changeText = '' ; for ( var j=0; j<hexArr.length; j++) { if (hexArr[j].toUpperCase() == '0A' || hexArr[j].toLowerCase() == '0D' ) { Editor.WarnMsg( '「0A」または「0D」が入っています' ); break loop; } changeText += String.fromCharCode(parseInt(hexArr[j], 16)); } // 範囲選択 Editor.MoveCursor(lineFrom + i, colFrom, 0); for ( var col=colFrom; col < colTo; col++) { Editor.Right_Sel(0); } // 上書き Editor.InsText(changeText); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
// ----------------------------------------------- // ルーラー追加 // ----------------------------------------------- // 1行目の文字列取得(改行なし) var txt = Editor.GetLineStr(1).replace(/\r\n/, '' ); // カーソル移動 Editor.MoveCursor(1, 1, 0); // 改行追加 Editor.Char(13); Editor.Char(13); var rowOne = '' ; var rowTwo = '' ; for ( var j = 1; j <= txt.length; j++) { rowTwo += String(j % 10); if ((j % 10)==0){ rowOne += ( ' ' + String(j/10)).slice(-10); } } // 1行目 Editor.MoveCursor(1, 1, 0); Editor.InsText(rowOne); // 2行目 Editor.MoveCursor(2, 1, 0); Editor.InsText(rowTwo); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
// ----------------------------------------------- // パック10進をゾーン10進に変換 // ----------------------------------------------- main(); function main() { var isSelected = Editor.IsTextSelected(); if (isSelected == 0) { Editor.MessageBox( '範囲を選択して下さい。' ); return ; } var colFrom = GetSelectColumnFrom(); // 選択開始桁 var colTo = GetSelectColumnTo(); // 選択終了桁 var lineFrom = GetSelectLineFrom(); // 選択開始行 var lineTo = GetSelectLineTo(); // 選択終了行 // 選択範囲の文字列取得 var selectText = GetSelectedString(0); // 最後の改行削除 selectText = selectText.replace(/\r\n$/, '' ); // 改行で分割 var selectArr = selectText.split( '\r\n' ); Editor.CancelMode(); for ( var i=0; i<selectArr.length; i++){ var changeText = '' ; for ( var j=0; j<selectArr[i].length; j++) { changeText += ( '00' + selectArr[i].charCodeAt(j).toString(16)).slice(-2); } var change = '' ; for ( var k=0; k<changeText.length; k++){ var char = changeText.charAt(k).toUpperCase(); if (char == 'D' ){ change = '-' + change; } else if (char == 'C' ) { change = '+' + change; } else if (char == 'A' || char == 'B' || char == 'E' || char == 'F' ) { change = ' ' + change; } else { change += char; } } // 範囲選択 Editor.MoveCursor(lineFrom + i, colFrom, 0); for ( var col=colFrom; col < colTo; col++) { Editor.Right_Sel(0); } // 上書き Editor.InsText(change); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
// ----------------------------------------------- // 選択範囲のコメント行を抽出 // コメント行とは7桁目に「*」または「/」をもつ行 // ----------------------------------------------- main() function main(){ var isSelected = Editor.IsTextSelected(); if (isSelected == 1) { // 行選択しているか var txt = Editor.GetSelectedString(0); var lines = txt.match(/^\d{6}[\s\S]*(\n|\r\n|\r)$/); if (!lines){ Editor.MessageBox( '行を選択して下さい' ); return ; } } else { Editor.MessageBox( '行を選択して下さい' ); return ; } // 選択範囲の文字列取得 var allText = GetSelectedString(0); var arr = allText.match(/\d{6}(\*|\/).*(\n|\r\n|\r)/g); if (arr){ // 通常コピー Editor.SetClipboard(0, arr.join( '' )); Editor.MessageBox( 'クリップボードにコピーしました' ); } else { // コメント無し Editor.MessageBox( 'コメント行はありません' ); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
// ----------------------------------------------- // 選択範囲のコメント行を除く // コメント行とは7桁目に「*」または「/」をもつ行 // ----------------------------------------------- main() function main(){ var isSelected = Editor.IsTextSelected(); if (isSelected == 1) { // 行選択しているか var txt = Editor.GetSelectedString(0); var lines = txt.match(/^\d{6}[\s\S]*(\n|\r\n|\r)$/); if (!lines){ Editor.MessageBox( '行を選択して下さい' ); return ; } } else { Editor.MessageBox( '行を選択して下さい' ); return ; } // 選択範囲の文字列取得 var allText = GetSelectedString(0); var arr = allText.match(/\d{6}(?!\*|\/).*(\n|\r\n|\r)/g); if (arr){ // 通常コピー Editor.SetClipboard(0, arr.join( '' )); Editor.MessageBox( 'クリップボードにコピーしました' ); } else { // コメント無し Editor.MessageBox( 'コメント行はありません' ); } } |
1 |
TODO |