<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://www.haijin-boys.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=183.77.232.15</id>
	<title>MeryWiki - 利用者の投稿記録 [ja]</title>
	<link rel="self" type="application/atom+xml" href="https://www.haijin-boys.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=183.77.232.15"/>
	<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/%E7%89%B9%E5%88%A5:%E6%8A%95%E7%A8%BF%E8%A8%98%E9%8C%B2/183.77.232.15"/>
	<updated>2026-05-18T13:52:19Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=VSCode%E9%A2%A8%E3%80%81%E8%A1%8C%E9%A0%AD/%E8%A1%8C%E6%9C%AB%E3%81%AB%E7%A7%BB%E5%8B%95&amp;diff=5570</id>
		<title>VSCode風、行頭/行末に移動</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=VSCode%E9%A2%A8%E3%80%81%E8%A1%8C%E9%A0%AD/%E8%A1%8C%E6%9C%AB%E3%81%AB%E7%A7%BB%E5%8B%95&amp;diff=5570"/>
		<updated>2021-07-18T07:35:45Z</updated>

		<summary type="html">&lt;p&gt;183.77.232.15: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VSCode風の行頭、行末移動操作を再現しました。 (2021/07時点のVSCode仕様に基づく)&lt;br /&gt;
&lt;br /&gt;
デフォルトでは選択状態が外れ移動動作となるため、選択動作にしたい場合は先頭の shift 変数を false に設定してください。&lt;br /&gt;
&lt;br /&gt;
* Home/End キー、及び範囲選択の場合 Shift + Home/End キーにそれぞれ割り当てることを想定&lt;br /&gt;
* マルチカーソル対応&lt;br /&gt;
&lt;br /&gt;
=== 行頭移動の動作 (Home) ===&lt;br /&gt;
&lt;br /&gt;
* 表示行で折り返し1行目にカーソルがある場合&lt;br /&gt;
** インデント記号 (半角スペース、全角スペース、タブ記号) を意識した論理行頭移動を行う&lt;br /&gt;
* 表示行で折り返し2行目以降にカーソルがある場合&lt;br /&gt;
** 1桁目にカーソルがある場合&lt;br /&gt;
*** インデント記号 (半角スペース、全角スペース、タブ記号) を意識した論理行頭移動を行う&lt;br /&gt;
** 2桁目以降にカーソルがある場合&lt;br /&gt;
*** 表示行上の先頭に移動する&lt;br /&gt;
&lt;br /&gt;
=== 行末移動の動作 (End) ===&lt;br /&gt;
&lt;br /&gt;
* 最後の桁以外にカーソルがある場合&lt;br /&gt;
** 表示行上で最後の桁に移動する&lt;br /&gt;
* 最後の桁にカーソルがある場合&lt;br /&gt;
** 論理行上で最後の桁に移動する&lt;br /&gt;
&lt;br /&gt;
== ソースコード ==&lt;br /&gt;
&lt;br /&gt;
=== 行頭移動の動作 (Home) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;行頭に移動&amp;quot;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
&lt;br /&gt;
// シフトの状態(true の場合は選択、false の場合は移動)&lt;br /&gt;
var shift = false;&lt;br /&gt;
&lt;br /&gt;
if (document.selection.Mode === meModeMulti) {&lt;br /&gt;
  doMultiAction(homeLikeVscode);&lt;br /&gt;
} else {&lt;br /&gt;
  homeLikeVscode();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function homeLikeVscode() {&lt;br /&gt;
  var actViewX = document.selection.GetActivePointX(mePosView);&lt;br /&gt;
  var actViewY = document.selection.GetActivePointY(mePosView);&lt;br /&gt;
  var ancViewX = document.selection.GetAnchorPointX(mePosView);&lt;br /&gt;
  var ancViewY = document.selection.GetAnchorPointY(mePosView);&lt;br /&gt;
&lt;br /&gt;
  document.selection.SetActivePoint(&lt;br /&gt;
    mePosLogical,&lt;br /&gt;
    1,&lt;br /&gt;
    document.selection.GetActivePointY(mePosLogical)&lt;br /&gt;
  );&lt;br /&gt;
  var actViewY2 = document.selection.GetActivePointY(mePosView);&lt;br /&gt;
  document.selection.SetActivePoint(mePosView, ancViewX, ancViewY);&lt;br /&gt;
  if (shift) {&lt;br /&gt;
    document.selection.SetActivePoint(mePosView, actViewX, actViewY, true);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (actViewY !== actViewY2 &amp;amp;&amp;amp; actViewX &amp;gt; 1) {&lt;br /&gt;
    document.selection.StartOfLine(shift, mePosView);&lt;br /&gt;
  } else {&lt;br /&gt;
    indentHome();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function indentHome() {&lt;br /&gt;
  // インデントとして認識する文字(半角空白、全角空白、タブ)&lt;br /&gt;
  var indent = new RegExp(&#039; |　|\t&#039;);&lt;br /&gt;
&lt;br /&gt;
  // 現在位置取得&lt;br /&gt;
  var x1 = document.selection.GetActivePointX(mePosLogical);&lt;br /&gt;
  var y1 = document.selection.GetActivePointY(mePosLogical);&lt;br /&gt;
&lt;br /&gt;
  // 選択開始位置取得&lt;br /&gt;
  var x2 = document.selection.GetAnchorPointX(mePosLogical);&lt;br /&gt;
  var y2 = document.selection.GetAnchorPointY(mePosLogical);&lt;br /&gt;
&lt;br /&gt;
  // カーソルを行末に移動&lt;br /&gt;
  document.selection.EndOfLine(false, mePosLogical);&lt;br /&gt;
&lt;br /&gt;
  // カーソルを行頭に移動(これで1行選択)&lt;br /&gt;
  document.selection.StartOfLine(true, mePosLogical);&lt;br /&gt;
&lt;br /&gt;
  var s = document.selection.Text;&lt;br /&gt;
  var i = 0;&lt;br /&gt;
&lt;br /&gt;
  // 行頭からタブの数を確認&lt;br /&gt;
  var slen = s.length;&lt;br /&gt;
  for (var j = 0; j &amp;lt; slen; j++) {&lt;br /&gt;
    c = s.charAt(j);&lt;br /&gt;
    if (indent.test(c)) i++;&lt;br /&gt;
    else break;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // シフトオンの場合、選択終了位置に移動&lt;br /&gt;
  if (shift) {&lt;br /&gt;
    document.selection.SetActivePoint(mePosLogical, x2, y2, false);&lt;br /&gt;
    document.selection.SetActivePoint(mePosLogical, i + 1, y1, shift);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // 現在位置が1より大きくてタブの数以下の場合は行頭に移動&lt;br /&gt;
  if (x1 &amp;gt; 1 &amp;amp;&amp;amp; x1 &amp;lt;= i + 1) {&lt;br /&gt;
    document.selection.SetActivePoint(mePosLogical, 1, y1, shift);&lt;br /&gt;
    // それ以外の場合はタブの数だけ進める&lt;br /&gt;
  } else {&lt;br /&gt;
    document.selection.SetActivePoint(mePosLogical, i + 1, y1, shift);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function doMultiAction(fn) {&lt;br /&gt;
  var d = document,&lt;br /&gt;
    s = d.selection;&lt;br /&gt;
  s.Mode = meModeMulti;&lt;br /&gt;
&lt;br /&gt;
  var startX = s.GetAnchorPointX(mePosView);&lt;br /&gt;
  var startY = s.GetAnchorPointY(mePosView);&lt;br /&gt;
  var endX = s.GetActivePointX(mePosView);&lt;br /&gt;
  var endY = s.GetActivePointY(mePosView);&lt;br /&gt;
  var selections = [{sx: startX, sy: startY, ex: endX, ey: endY}];&lt;br /&gt;
  if (s.Count &amp;gt; 0) {&lt;br /&gt;
    for (var i = 0; i &amp;lt; s.Count; i++) {&lt;br /&gt;
      startX = s.GetAnchorPointX(mePosView, i);&lt;br /&gt;
      startY = s.GetAnchorPointY(mePosView, i);&lt;br /&gt;
      endX = s.GetActivePointX(mePosView, i);&lt;br /&gt;
      endY = s.GetActivePointY(mePosView, i);&lt;br /&gt;
      selections.push({sx: startX, sy: startY, ex: endX, ey: endY});&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  var p = 0;&lt;br /&gt;
  var q = 0;&lt;br /&gt;
  for (var i = 0; i &amp;lt; selections.length; i++) {&lt;br /&gt;
    s.SetActivePoint(mePosView, selections[i].sx, selections[i].sy);&lt;br /&gt;
    s.SetActivePoint(mePosView, selections[i].ex, selections[i].ey, true);&lt;br /&gt;
    q = d.TextLength;&lt;br /&gt;
&lt;br /&gt;
    fn();&lt;br /&gt;
    p += d.TextLength - q;&lt;br /&gt;
&lt;br /&gt;
    startX = s.GetAnchorPointX(mePosView);&lt;br /&gt;
    startY = s.GetAnchorPointY(mePosView);&lt;br /&gt;
    endX = s.GetActivePointX(mePosView);&lt;br /&gt;
    endY = s.GetActivePointY(mePosView);&lt;br /&gt;
    selections[i] = {sx: startX, sy: startY, ex: endX, ey: endY};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for (var i = 0; i &amp;lt; selections.length; i++) {&lt;br /&gt;
    s.AddPoint(mePosView, selections[i].sx, selections[i].sy, selections[i].ex, selections[i].ey);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 行末移動の動作 (End) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;行末に移動&amp;quot;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
&lt;br /&gt;
// シフトの状態(true の場合は選択、false の場合は移動)&lt;br /&gt;
var shift = false;&lt;br /&gt;
&lt;br /&gt;
if (document.selection.Mode === meModeMulti) {&lt;br /&gt;
  doMultiAction(endLikeVscode);&lt;br /&gt;
} else {&lt;br /&gt;
  endLikeVscode();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function endLikeVscode() {&lt;br /&gt;
  var actViewX = document.selection.GetActivePointX(mePosView);&lt;br /&gt;
  var actViewY = document.selection.GetActivePointY(mePosView);&lt;br /&gt;
  var ancViewX = document.selection.GetAnchorPointX(mePosView);&lt;br /&gt;
  var ancViewY = document.selection.GetAnchorPointY(mePosView);&lt;br /&gt;
&lt;br /&gt;
  document.selection.EndOfLine(false, mePosView);&lt;br /&gt;
  var actViewX2 = document.selection.GetActivePointX(mePosView);&lt;br /&gt;
  document.selection.SetActivePoint(mePosView, ancViewX, ancViewY);&lt;br /&gt;
  if (shift) {&lt;br /&gt;
    document.selection.SetActivePoint(mePosView, actViewX, actViewY, true);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (actViewX !== actViewX2) {&lt;br /&gt;
    document.selection.EndOfLine(shift, mePosView);&lt;br /&gt;
  } else {&lt;br /&gt;
    document.selection.EndOfLine(shift, mePosLogical);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function doMultiAction(fn) {&lt;br /&gt;
  var d = document,&lt;br /&gt;
    s = d.selection;&lt;br /&gt;
  s.Mode = meModeMulti;&lt;br /&gt;
&lt;br /&gt;
  var startX = s.GetAnchorPointX(mePosView);&lt;br /&gt;
  var startY = s.GetAnchorPointY(mePosView);&lt;br /&gt;
  var endX = s.GetActivePointX(mePosView);&lt;br /&gt;
  var endY = s.GetActivePointY(mePosView);&lt;br /&gt;
  var selections = [{sx: startX, sy: startY, ex: endX, ey: endY}];&lt;br /&gt;
  if (s.Count &amp;gt; 0) {&lt;br /&gt;
    for (var i = 0; i &amp;lt; s.Count; i++) {&lt;br /&gt;
      startX = s.GetAnchorPointX(mePosView, i);&lt;br /&gt;
      startY = s.GetAnchorPointY(mePosView, i);&lt;br /&gt;
      endX = s.GetActivePointX(mePosView, i);&lt;br /&gt;
      endY = s.GetActivePointY(mePosView, i);&lt;br /&gt;
      selections.push({sx: startX, sy: startY, ex: endX, ey: endY});&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  var p = 0;&lt;br /&gt;
  var q = 0;&lt;br /&gt;
  for (var i = 0; i &amp;lt; selections.length; i++) {&lt;br /&gt;
    s.SetActivePoint(mePosView, selections[i].sx, selections[i].sy);&lt;br /&gt;
    s.SetActivePoint(mePosView, selections[i].ex, selections[i].ey, true);&lt;br /&gt;
    q = d.TextLength;&lt;br /&gt;
&lt;br /&gt;
    fn();&lt;br /&gt;
    p += d.TextLength - q;&lt;br /&gt;
&lt;br /&gt;
    startX = s.GetAnchorPointX(mePosView);&lt;br /&gt;
    startY = s.GetAnchorPointY(mePosView);&lt;br /&gt;
    endX = s.GetActivePointX(mePosView);&lt;br /&gt;
    endY = s.GetActivePointY(mePosView);&lt;br /&gt;
    selections[i] = {sx: startX, sy: startY, ex: endX, ey: endY};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for (var i = 0; i &amp;lt; selections.length; i++) {&lt;br /&gt;
    s.AddPoint(mePosView, selections[i].sx, selections[i].sy, selections[i].ex, selections[i].ey);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>183.77.232.15</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=VSCode%E9%A2%A8%E3%80%81%E8%A1%8C%E9%A0%AD/%E8%A1%8C%E6%9C%AB%E3%81%AB%E7%A7%BB%E5%8B%95&amp;diff=5569</id>
		<title>VSCode風、行頭/行末に移動</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=VSCode%E9%A2%A8%E3%80%81%E8%A1%8C%E9%A0%AD/%E8%A1%8C%E6%9C%AB%E3%81%AB%E7%A7%BB%E5%8B%95&amp;diff=5569"/>
		<updated>2021-07-18T07:34:44Z</updated>

		<summary type="html">&lt;p&gt;183.77.232.15: ページの作成:「VSCode風の行頭、行末移動操作を再現しました。 (2021/07時点のVSCode仕様に基づく)  デフォルトでは選択状態が外れ移動動作とな…」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VSCode風の行頭、行末移動操作を再現しました。 (2021/07時点のVSCode仕様に基づく)&lt;br /&gt;
&lt;br /&gt;
デフォルトでは選択状態が外れ移動動作となるため、選択動作にしたい場合は先頭の shift 変数を false に設定してください。&lt;br /&gt;
&lt;br /&gt;
* Home/End キー、及び範囲選択の場合 Shift + Home/End キーにそれぞれ割り当てることを想定&lt;br /&gt;
* マルチカーソル対応&lt;br /&gt;
&lt;br /&gt;
=== 行頭移動の操作 (Home) ===&lt;br /&gt;
&lt;br /&gt;
* 表示行で折り返し1行目にカーソルがある場合&lt;br /&gt;
** インデント記号 (半角スペース、全角スペース、タブ記号) を意識した論理行頭移動を行う&lt;br /&gt;
* 表示行で折り返し2行目以降にカーソルがある場合&lt;br /&gt;
** 1桁目にカーソルがある場合&lt;br /&gt;
*** インデント記号 (半角スペース、全角スペース、タブ記号) を意識した論理行頭移動を行う&lt;br /&gt;
** 2桁目以降にカーソルがある場合&lt;br /&gt;
*** 表示行上の先頭に移動する&lt;br /&gt;
&lt;br /&gt;
=== 行末移動の操作 (End) ===&lt;br /&gt;
&lt;br /&gt;
* 最後の桁以外にカーソルがある場合&lt;br /&gt;
** 表示行上で最後の桁に移動する&lt;br /&gt;
* 最後の桁にカーソルがある場合&lt;br /&gt;
** 論理行上で最後の桁に移動する&lt;br /&gt;
&lt;br /&gt;
== ソースコード ==&lt;br /&gt;
&lt;br /&gt;
=== 行末移動の操作 (Home) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;行頭に移動&amp;quot;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
&lt;br /&gt;
// シフトの状態(true の場合は選択、false の場合は移動)&lt;br /&gt;
var shift = false;&lt;br /&gt;
&lt;br /&gt;
if (document.selection.Mode === meModeMulti) {&lt;br /&gt;
  doMultiAction(homeLikeVscode);&lt;br /&gt;
} else {&lt;br /&gt;
  homeLikeVscode();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function homeLikeVscode() {&lt;br /&gt;
  var actViewX = document.selection.GetActivePointX(mePosView);&lt;br /&gt;
  var actViewY = document.selection.GetActivePointY(mePosView);&lt;br /&gt;
  var ancViewX = document.selection.GetAnchorPointX(mePosView);&lt;br /&gt;
  var ancViewY = document.selection.GetAnchorPointY(mePosView);&lt;br /&gt;
&lt;br /&gt;
  document.selection.SetActivePoint(&lt;br /&gt;
    mePosLogical,&lt;br /&gt;
    1,&lt;br /&gt;
    document.selection.GetActivePointY(mePosLogical)&lt;br /&gt;
  );&lt;br /&gt;
  var actViewY2 = document.selection.GetActivePointY(mePosView);&lt;br /&gt;
  document.selection.SetActivePoint(mePosView, ancViewX, ancViewY);&lt;br /&gt;
  if (shift) {&lt;br /&gt;
    document.selection.SetActivePoint(mePosView, actViewX, actViewY, true);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (actViewY !== actViewY2 &amp;amp;&amp;amp; actViewX &amp;gt; 1) {&lt;br /&gt;
    document.selection.StartOfLine(shift, mePosView);&lt;br /&gt;
  } else {&lt;br /&gt;
    indentHome();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function indentHome() {&lt;br /&gt;
  // インデントとして認識する文字(半角空白、全角空白、タブ)&lt;br /&gt;
  var indent = new RegExp(&#039; |　|\t&#039;);&lt;br /&gt;
&lt;br /&gt;
  // 現在位置取得&lt;br /&gt;
  var x1 = document.selection.GetActivePointX(mePosLogical);&lt;br /&gt;
  var y1 = document.selection.GetActivePointY(mePosLogical);&lt;br /&gt;
&lt;br /&gt;
  // 選択開始位置取得&lt;br /&gt;
  var x2 = document.selection.GetAnchorPointX(mePosLogical);&lt;br /&gt;
  var y2 = document.selection.GetAnchorPointY(mePosLogical);&lt;br /&gt;
&lt;br /&gt;
  // カーソルを行末に移動&lt;br /&gt;
  document.selection.EndOfLine(false, mePosLogical);&lt;br /&gt;
&lt;br /&gt;
  // カーソルを行頭に移動(これで1行選択)&lt;br /&gt;
  document.selection.StartOfLine(true, mePosLogical);&lt;br /&gt;
&lt;br /&gt;
  var s = document.selection.Text;&lt;br /&gt;
  var i = 0;&lt;br /&gt;
&lt;br /&gt;
  // 行頭からタブの数を確認&lt;br /&gt;
  var slen = s.length;&lt;br /&gt;
  for (var j = 0; j &amp;lt; slen; j++) {&lt;br /&gt;
    c = s.charAt(j);&lt;br /&gt;
    if (indent.test(c)) i++;&lt;br /&gt;
    else break;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // シフトオンの場合、選択終了位置に移動&lt;br /&gt;
  if (shift) {&lt;br /&gt;
    document.selection.SetActivePoint(mePosLogical, x2, y2, false);&lt;br /&gt;
    document.selection.SetActivePoint(mePosLogical, i + 1, y1, shift);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // 現在位置が1より大きくてタブの数以下の場合は行頭に移動&lt;br /&gt;
  if (x1 &amp;gt; 1 &amp;amp;&amp;amp; x1 &amp;lt;= i + 1) {&lt;br /&gt;
    document.selection.SetActivePoint(mePosLogical, 1, y1, shift);&lt;br /&gt;
    // それ以外の場合はタブの数だけ進める&lt;br /&gt;
  } else {&lt;br /&gt;
    document.selection.SetActivePoint(mePosLogical, i + 1, y1, shift);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function doMultiAction(fn) {&lt;br /&gt;
  var d = document,&lt;br /&gt;
    s = d.selection;&lt;br /&gt;
  s.Mode = meModeMulti;&lt;br /&gt;
&lt;br /&gt;
  var startX = s.GetAnchorPointX(mePosView);&lt;br /&gt;
  var startY = s.GetAnchorPointY(mePosView);&lt;br /&gt;
  var endX = s.GetActivePointX(mePosView);&lt;br /&gt;
  var endY = s.GetActivePointY(mePosView);&lt;br /&gt;
  var selections = [{sx: startX, sy: startY, ex: endX, ey: endY}];&lt;br /&gt;
  if (s.Count &amp;gt; 0) {&lt;br /&gt;
    for (var i = 0; i &amp;lt; s.Count; i++) {&lt;br /&gt;
      startX = s.GetAnchorPointX(mePosView, i);&lt;br /&gt;
      startY = s.GetAnchorPointY(mePosView, i);&lt;br /&gt;
      endX = s.GetActivePointX(mePosView, i);&lt;br /&gt;
      endY = s.GetActivePointY(mePosView, i);&lt;br /&gt;
      selections.push({sx: startX, sy: startY, ex: endX, ey: endY});&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  var p = 0;&lt;br /&gt;
  var q = 0;&lt;br /&gt;
  for (var i = 0; i &amp;lt; selections.length; i++) {&lt;br /&gt;
    s.SetActivePoint(mePosView, selections[i].sx, selections[i].sy);&lt;br /&gt;
    s.SetActivePoint(mePosView, selections[i].ex, selections[i].ey, true);&lt;br /&gt;
    q = d.TextLength;&lt;br /&gt;
&lt;br /&gt;
    fn();&lt;br /&gt;
    p += d.TextLength - q;&lt;br /&gt;
&lt;br /&gt;
    startX = s.GetAnchorPointX(mePosView);&lt;br /&gt;
    startY = s.GetAnchorPointY(mePosView);&lt;br /&gt;
    endX = s.GetActivePointX(mePosView);&lt;br /&gt;
    endY = s.GetActivePointY(mePosView);&lt;br /&gt;
    selections[i] = {sx: startX, sy: startY, ex: endX, ey: endY};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for (var i = 0; i &amp;lt; selections.length; i++) {&lt;br /&gt;
    s.AddPoint(mePosView, selections[i].sx, selections[i].sy, selections[i].ex, selections[i].ey);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 行末移動の操作 (End) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;行末に移動&amp;quot;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
&lt;br /&gt;
// シフトの状態(true の場合は選択、false の場合は移動)&lt;br /&gt;
var shift = false;&lt;br /&gt;
&lt;br /&gt;
if (document.selection.Mode === meModeMulti) {&lt;br /&gt;
  doMultiAction(endLikeVscode);&lt;br /&gt;
} else {&lt;br /&gt;
  endLikeVscode();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function endLikeVscode() {&lt;br /&gt;
  var actViewX = document.selection.GetActivePointX(mePosView);&lt;br /&gt;
  var actViewY = document.selection.GetActivePointY(mePosView);&lt;br /&gt;
  var ancViewX = document.selection.GetAnchorPointX(mePosView);&lt;br /&gt;
  var ancViewY = document.selection.GetAnchorPointY(mePosView);&lt;br /&gt;
&lt;br /&gt;
  document.selection.EndOfLine(false, mePosView);&lt;br /&gt;
  var actViewX2 = document.selection.GetActivePointX(mePosView);&lt;br /&gt;
  document.selection.SetActivePoint(mePosView, ancViewX, ancViewY);&lt;br /&gt;
  if (shift) {&lt;br /&gt;
    document.selection.SetActivePoint(mePosView, actViewX, actViewY, true);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (actViewX !== actViewX2) {&lt;br /&gt;
    document.selection.EndOfLine(shift, mePosView);&lt;br /&gt;
  } else {&lt;br /&gt;
    document.selection.EndOfLine(shift, mePosLogical);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function doMultiAction(fn) {&lt;br /&gt;
  var d = document,&lt;br /&gt;
    s = d.selection;&lt;br /&gt;
  s.Mode = meModeMulti;&lt;br /&gt;
&lt;br /&gt;
  var startX = s.GetAnchorPointX(mePosView);&lt;br /&gt;
  var startY = s.GetAnchorPointY(mePosView);&lt;br /&gt;
  var endX = s.GetActivePointX(mePosView);&lt;br /&gt;
  var endY = s.GetActivePointY(mePosView);&lt;br /&gt;
  var selections = [{sx: startX, sy: startY, ex: endX, ey: endY}];&lt;br /&gt;
  if (s.Count &amp;gt; 0) {&lt;br /&gt;
    for (var i = 0; i &amp;lt; s.Count; i++) {&lt;br /&gt;
      startX = s.GetAnchorPointX(mePosView, i);&lt;br /&gt;
      startY = s.GetAnchorPointY(mePosView, i);&lt;br /&gt;
      endX = s.GetActivePointX(mePosView, i);&lt;br /&gt;
      endY = s.GetActivePointY(mePosView, i);&lt;br /&gt;
      selections.push({sx: startX, sy: startY, ex: endX, ey: endY});&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  var p = 0;&lt;br /&gt;
  var q = 0;&lt;br /&gt;
  for (var i = 0; i &amp;lt; selections.length; i++) {&lt;br /&gt;
    s.SetActivePoint(mePosView, selections[i].sx, selections[i].sy);&lt;br /&gt;
    s.SetActivePoint(mePosView, selections[i].ex, selections[i].ey, true);&lt;br /&gt;
    q = d.TextLength;&lt;br /&gt;
&lt;br /&gt;
    fn();&lt;br /&gt;
    p += d.TextLength - q;&lt;br /&gt;
&lt;br /&gt;
    startX = s.GetAnchorPointX(mePosView);&lt;br /&gt;
    startY = s.GetAnchorPointY(mePosView);&lt;br /&gt;
    endX = s.GetActivePointX(mePosView);&lt;br /&gt;
    endY = s.GetActivePointY(mePosView);&lt;br /&gt;
    selections[i] = {sx: startX, sy: startY, ex: endX, ey: endY};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for (var i = 0; i &amp;lt; selections.length; i++) {&lt;br /&gt;
    s.AddPoint(mePosView, selections[i].sx, selections[i].sy, selections[i].ex, selections[i].ey);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>183.77.232.15</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA&amp;diff=5568</id>
		<title>マクロライブラリ</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA&amp;diff=5568"/>
		<updated>2021-07-18T07:16:17Z</updated>

		<summary type="html">&lt;p&gt;183.77.232.15: /* テキスト操作補助 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mery で使用できるマクロを集めたライブラリです。&lt;br /&gt;
&lt;br /&gt;
スクリプトを拡張子「js」 (JavaScript、JScript の場合) にして「Macros」フォルダ等に保存し、マクロメニューの「選択」や「カスタマイズ」から読み込んで使用してください。&lt;br /&gt;
&lt;br /&gt;
マクロライブラリはどなたでも自由に編集できますので、みなさんが作成した便利なマクロをどんどん掲載してください。&lt;br /&gt;
&lt;br /&gt;
== テキスト操作補助 ==&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/haijinboys/mery-macro-emmet Emmet] (Kuro)&lt;br /&gt;
*[[Zen Coding]] (Kuro)&lt;br /&gt;
*[[対応する括弧に移動]] (Kuro, kurama, masme) update 2019/04/12&lt;br /&gt;
*[[行頭に移動]] (Kuro, 他) update 2020/05/22&lt;br /&gt;
*[[VSCode風、行頭/行末に移動]] (yuko)&lt;br /&gt;
*[[バイト数]] (Kuro, ks)&lt;br /&gt;
*[[日付と時刻を挿入]] (n, masme) update 2016/02/28&lt;br /&gt;
*[[日付と時刻を挿入（カレンダー版）]] (papagoat) update 2016/05/24&lt;br /&gt;
*[[選択範囲を上下に移動]] (ks)&lt;br /&gt;
*[[TeraPadのCtrl↑と同じような動作をするマクロ]] (suke)&lt;br /&gt;
*[[TeraPadのCtrl↓と同じような動作をするマクロ]] (suke)&lt;br /&gt;
*[[Vz 風テキストスタック 2 ストロークキー]] (papagoat) update 2013/11/22&lt;br /&gt;
*[[非選択状態でも逆インデント]] (papagoat)&lt;br /&gt;
*[[ラクラク罫線]] (手石) Update 2012/12/22&lt;br /&gt;
*[[ファイル:XHTML.zip]] (アラフォー親父) HTMLタグを、ショートカット・キーに登録して入力するマクロ（文章挟み込み仕様）&lt;br /&gt;
*[[矩形ペースト]] (手石)&lt;br /&gt;
*[[自動箇条書き]] (手石) update 2013/03/15&lt;br /&gt;
*[[インデントを考慮した折り返し（改行挿入）]] (手石) update 2013/02/23&lt;br /&gt;
*[[青空文庫用整形補助]] (ks, 有志)&lt;br /&gt;
*[[部分編集]] (ks)&lt;br /&gt;
*[[文字カウント]] (masme) 2014/02/01, update 2020/05/17&lt;br /&gt;
*[[字下げ・字上げ]](インデント・逆インデント)  (masme) 2014/02/09; update 2019/06/01&lt;br /&gt;
*[[数値を増減]](インクリメント・デクリメント) (masme) 2014/06/17, update 2020/05/17&lt;br /&gt;
*[[少し便利な Undo/Redo]] (ks)&lt;br /&gt;
*[[自動ルビ振り]] (急急如律令)&lt;br /&gt;
*[[貼付け実行後のカーソル位置を貼付け文字列の先頭にする]] (yuko) 2017/06/04&lt;br /&gt;
*[[ドイツ語特殊文字]] (鯉)&lt;br /&gt;
*[[矩形選択範囲の各行先頭に文字挿入]] (yuko)&lt;br /&gt;
*[[文章で使用されている文字をユニーク抽出]] (Kuro)&lt;br /&gt;
*[[アウトライン用ノード追加]] (mik) 2018/06/25&lt;br /&gt;
*[[アウトラインのノードレベルを上げる]] (mik) 2018/06/25&lt;br /&gt;
*[[アウトラインのノードレベルを下げる]] (mik) 2018/06/25&lt;br /&gt;
*[[アウトラインのノードの完了/未完了を切り替える]] (mik) 2018/10/18 update&lt;br /&gt;
*[[ハルナアウトライン用の完了/未完了フラグをノード名に反映する]] (mik) 2018/10/18 update&lt;br /&gt;
*[[Markdown文書で改行時にリスト、引用ブロック開始記号を自動入力する]] (catfist, yuko) 2020/09/04 update&lt;br /&gt;
*[[Markdown 向け、リスト記号 (*) のトグル]] (yuko) 2019/04/29&lt;br /&gt;
*[[Markdown 向け、タスクリスト (* ［］) のチェック状態をトグル]] (yuko) 2020/09/04&lt;br /&gt;
*[[何年生で習う漢字？]] (シリル) 2019/03/10&lt;br /&gt;
*[[上に行挿入]] (yuko) 2019/05/11&lt;br /&gt;
*[[選択範囲を広げる]] (yuko) 2020/03/22&lt;br /&gt;
*[[新規行番号入力]] (Takuma 他) 2020/06/17 - 2020/06/26&lt;br /&gt;
&lt;br /&gt;
== ファイル操作補助 ==&lt;br /&gt;
&lt;br /&gt;
*[[文字列中のパス起動]] (ks)&lt;br /&gt;
*[[自動バックアップ]] (ks)&lt;br /&gt;
*[[終了時状態保持・復元]] (ks)&lt;br /&gt;
*[[上書き保存(UAC対応)]] (ks)&lt;br /&gt;
*[[含んでいるフォルダを開く]] (ks)&lt;br /&gt;
*[[パスを取得]] (Kuro)&lt;br /&gt;
*[[フォルダ内のファイルをすべて開く]] (Kuro)&lt;br /&gt;
*[[ファイルを比較]] (Kuro)&lt;br /&gt;
*[[ファイル名を引数にしてアプリ起動]] (Kuro, miso)&lt;br /&gt;
*[[ブックマーク一覧ジャンプ]] ※ポップアップメニュー (goat) update 2019/04/16&lt;br /&gt;
*[[拡張子の違うファイルを開く]] (n)&lt;br /&gt;
*[[フォルダを開く]] (n)&lt;br /&gt;
*[[コマンドプロンプトを開く]] (n)&lt;br /&gt;
*[[SDIウィンドウの記憶と復帰]] (papagoat) Update 2012/10/23 (説明文変更 2013/11/22)&lt;br /&gt;
*[[よく使うフォルダ]] (手石) Update 2014/02/22&lt;br /&gt;
*[[ファイル（選択範囲）の仮保存]] (手石)&lt;br /&gt;
*[[ポップアップメニューでファイル選択]] (手石)&lt;br /&gt;
*[[フォルダツリーをポップアップ表示]] (n)&lt;br /&gt;
*[[タグジャンプ]] (o)&lt;br /&gt;
*[[ウィンドウの位置とサイズを拡張子で指定]] (papagoat) Update 2014/04/17&lt;br /&gt;
*[[編集モードの自動選択]] (Bleat) 2019/02/15&lt;br /&gt;
*[[書き換え禁止モード色反転]] (Bleat) Update 2021/04/17&lt;br /&gt;
*[[文書が変更されていなければ変更マークを消す]] (Noah)&lt;br /&gt;
*[[変更なしのタブをすべて閉じる]] (Noah)&lt;br /&gt;
&lt;br /&gt;
== 変換・ソート・整形 ==&lt;br /&gt;
&lt;br /&gt;
*[[SHA でハッシュ化]] (Kuro)&lt;br /&gt;
*[[標準変換]] (Kuro)&lt;br /&gt;
*[[ブックマーク系コマンド集]] (ks)&lt;br /&gt;
*[[テキスト変換]] (ks)&lt;br /&gt;
**[[テキスト整形]] (masme) 2013/09/15, update 2019/12/21&lt;br /&gt;
*[[旧漢字から新漢字に変換]] (furu)&lt;br /&gt;
*[[clustalw を用いてアライメントを実行]] (suke)&lt;br /&gt;
*[[連番の挿入]] (手石)&lt;br /&gt;
*[[TSV(CSV) ⇒ 固定長]] (手石) update 2013/04/16&lt;br /&gt;
*[[行並べ替え]] (masme) 2013/08/25, update 2020/05/20&lt;br /&gt;
*[[連番を挿入]] (masme) 2013/08/25, update 2020/05/17&lt;br /&gt;
*[[GFMをHTMLに変換]] (noonworks) 2014/03/09&lt;br /&gt;
*[[基数変換10_16]] (シリル) 2019/02/10&lt;br /&gt;
*[[スネークケース ⇔ キャメルケースの変換]] (Noah)&lt;br /&gt;
&lt;br /&gt;
== 検索・置換 ==&lt;br /&gt;
&lt;br /&gt;
*[[文書から検索]] (Kuro)&lt;br /&gt;
*[[単語を抽出]] (Kuro)&lt;br /&gt;
*[[タグの外側（内側）だけ置換]] (手石)&lt;br /&gt;
*[[ポップアップメニューで検索先にジャンプ]] (手石) 2014/04/19&lt;br /&gt;
*[[検索(SJIS以外)]] + 検索強調を解除 (masme) 2014/09/16, update 2019/06/01&lt;br /&gt;
*[https://github.com/TakamiChie/mery-scripts/blob/master/SearchWithMode.js 現在開いているファイルの言語名をつけてWeb検索] (高見知英)→[[https://vine.co/v/eeY59rFMail 実際の動作例]]&lt;br /&gt;
*[https://github.com/GunseiPaseri/Mery_macro 文字出現量ランキング] (群生系パセリ) 2015/12/28&lt;br /&gt;
*[[検索ヒット数表示]] (ks)&lt;br /&gt;
*[[任意の検索エンジンで検索]] (Noah)&lt;br /&gt;
*[[任意の検索エンジンで検索ー改良版]] (Takeshi) 2019/07/12&lt;br /&gt;
*[[デフォルトの検索フラグを設定して検索ウィンドウ表示]] (yuko)&lt;br /&gt;
*[[複数置換]] (Noah)&lt;br /&gt;
*[[類義語アウトプット【Python】]] (シリル) 2019/03/24&lt;br /&gt;
*[[校正支援アウトプット]] (シリル) 2019/05/01&lt;br /&gt;
&lt;br /&gt;
== プログラミング補助 ==&lt;br /&gt;
&lt;br /&gt;
*[[Eclipse風コメントアウト]] (ks)&lt;br /&gt;
*[[Eclipse風コメントアウト(改)]] (pizz) 2020/03/15&lt;br /&gt;
*[[コメントマーク付け外し]] (手石, masme) last update 2019/06/01&lt;br /&gt;
*[[スマートインデント(C 構文)]] (ks)&lt;br /&gt;
*[[ctags.exeでtagsファイルを生成、タグジャンプを行うマクロ]] (kazy)&lt;br /&gt;
*[[タグファイルから補完]] (n)&lt;br /&gt;
*[[コードスニペットもどき]] (手石) Update 2012/12/20&lt;br /&gt;
*[[TeX文書のコンパイル]] (手石, isari) update 2020/10/16&lt;br /&gt;
*[[TeX数式のチェック]] (手石)&lt;br /&gt;
*[[簡易数式計算]] (ks)&lt;br /&gt;
*[[定義へ移動]] (ks)&lt;br /&gt;
*[[タブの桁数]] (手石)&lt;br /&gt;
*[[行末の空白を削除]] (n) 2014/12/19&lt;br /&gt;
*[https://github.com/TakamiChie/mery-scripts/tree/master/ 開いているスクリプトファイルを実行(掲載時点ではバッチファイル・Javascript・Lua・PHP・Perl・Python・Ruby・UWSCに対応。順次追加予定)] (高見知英)&lt;br /&gt;
*[https://github.com/TakamiChie/mery-scripts/tree/master/ 開いているスクリプトファイルを構文チェック(掲載時点ではPHP・Perlに対応。順次追加予定)] (高見知英)&lt;br /&gt;
*[[説明を出力]] (s) Create 2015/08/16&lt;br /&gt;
*[[拡張子からコンソール実行]] (YOS G-spec) 2020/12/12更新&lt;br /&gt;
*[[JSON整形]](Ovis) Create 2019/03/25&lt;br /&gt;
*[[ScriptRun]]（Scriptコードの実行）（fuka）2020/08/02&lt;br /&gt;
&lt;br /&gt;
== おもしろ ==&lt;br /&gt;
*[[メール送信]] (ks)&lt;br /&gt;
*[[あつまれ☆みんなのおもしろアイコン]] (有志)&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
*[[HSPキーワード検索]] (SSSE) 2019/08/29&lt;br /&gt;
*[[最新版を確認]] (diaphragm)&lt;br /&gt;
*[[SAPI 使って単語読み上げ]] (miso)&lt;br /&gt;
*[[フォルダ選択ダイアログ]] (手石)&lt;br /&gt;
*[[HTA(HTML)の自作ダイアログを表示]] (noonworks)&lt;br /&gt;
*[[JavaScript を実行]] (n)&lt;br /&gt;
*[[Ruby を実行]] (n)&lt;br /&gt;
*[[ポップアップメニューを手軽に扱う]] (komorebikoboshi)&lt;br /&gt;
*[[マクロ・関数をメニューで呼び出す]] (aliquis) 2013/08/19&lt;br /&gt;
*[[階層化マクロメニュー]] (ks)&lt;br /&gt;
*[[シェルコマンドを実行]] (sasaki)&lt;br /&gt;
*[[ポップアップメニューでチェックボックス]] (手石)&lt;br /&gt;
*[[ポップアップメニューでラジオボタン]] (手石)&lt;br /&gt;
*[[Editor.OpenFile()のポリフィル]](kazy)&lt;br /&gt;
*[[折り返しトグル切り替え]] (Bleat) update 2021/02/13&lt;br /&gt;
*[[ファイルロック (排他制御) 的なもの]] (PebblePot)&lt;br /&gt;
*[[Beep音の例]] (star0worshipper)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
*[[キーアサイン集]] (ks, masme, 有志) last update 2020/05/22&lt;br /&gt;
*[[includeライブラリ]] (ks)&lt;br /&gt;
*[[GetKeyState.exe(キー状態取得実行ファイル)]] (pizz) 2019/03/23&lt;br /&gt;
*[[マクロ覚え書き（開発者向け）]](ks, 有志) Last Update 2019/09/08&lt;/div&gt;</summary>
		<author><name>183.77.232.15</name></author>
	</entry>
</feed>