「キーアサイン集」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
Masme (トーク | 投稿記録)
アサイン追加9個・行数削減3個。見出しをなるべく詳細に。概要を目次の上へ移動。他。
Masme (トーク | 投稿記録)
項目を並べ替え
16行目: 16行目:
   sel.Delete();
   sel.Delete();
}
}
</source>
== 強制改行 (インデント無効) ==
* 推奨割当「Shift + Enter」「Ctrl + Enter」
* 自動インデントを無視して改行する
<source lang="javascript">
Document.Write("\n");
</source>
== 切り取り (行切り取り無効) ==
* 推奨割当「Ctrl + X」「Shift + Delete」
* 非選択時にカーソル行(論理行)を切り取りしない(※通常は行切り取りされる)
<source lang="javascript">
if (Document.Selection.Text) Document.Selection.Cut();
</source>
</source>


25行目: 39行目:
</source>
</source>


== 切り取り (行切り取り無効) ==
== コピー (行コピー時選択) ==
* 推奨割当「Ctrl + X」「Shift + Delete」
* 推奨割当「Ctrl + C」「Ctrl + Insert」
* 非選択時にカーソル行(論理行)を切り取りしない(※通常は行切り取りされる)
* 非選択時コピー(行コピー)時にコピーした範囲を選択する(※通常は範囲選択されない)
<source lang="javascript">
Document.Selection.Copy();
if (Document.Selection.IsEmpty) Document.Selection.SelectLine();
</source>
 
== すべて選択 (非スクロール) ==
* 推奨割当「Ctrl + A」
* すべて選択時にスクロールしない(※通常は文書の末尾までスクロールする)
<source lang="javascript">
var sx = ScrollX, sy = ScrollY; //スクロール位置を記憶
Document.Selection.SelectAll();
ScrollX = sx; ScrollY = sy; //スクロール位置を復元
</source>
 
== 追加切り取り ==
* 割当例「Ctrl + Shift + X」など
* クリップボードに追加する切り取り
<source lang="javascript">
<source lang="javascript">
if (Document.Selection.Text) Document.Selection.Cut();
with (Document.Selection) {
  if (IsEmpty) SelectLine(); //非選択時、行選択
  ClipboardData.SetData(ClipboardData.GetData() + Text);
  Delete();
}
</source>
</source>


== 上移動 (先頭行では行頭へ) ==
== 追加コピー ==
* 推奨割当「Up (↑)」
* 割当例「Ctrl + Shift + C」など
* 上の行がそれ以上存在しない場合は、行頭に移動する(※通常は移動しない)
* クリップボードに追加するコピー
<source lang="javascript">
<source lang="javascript">
var sel = Document.Selection;
with (Document.Selection) {
if (sel.GetActivePointY(mePosView) > 1) {
  var isE=IsEmpty, pos=GetActivePos(); //非選択時かを記憶, カーソル位置を記憶
   sel.LineUp();
  if (IsEmpty) SelectLine(); //非選択時、行選択
} else {
   ClipboardData.SetData(ClipboardData.GetData() + Text);
   sel.StartOfDocument();
   if (isE) SetActivePos(pos,false); //非選択時だった場合カーソル位置を復元、範囲解除
}
}
</source>
</source>


== 下移動 (最終行では行末へ) ==
== 行を複製 ==
* 推奨割当「Down ()」
* 割当例「Ctrl + D」「Ctrl + Insert」など
* 下の行がそれ以上存在しない場合は、行末に移動する(※通常は移動しない)
* カーソル行(論理行)を複製する
<source lang="javascript">
Document.Selection.DuplicateLine();
</source>
 
== 行を削除 ==
* 割当例「Ctrl + E」「Ctrl + Delete」など
* カーソル行(論理行)を削除する
<source lang="javascript">
Document.Selection.SelectLine();
Document.Selection.Delete();
</source>
 
== 括弧で挟む ==
* 割当例「Ctrl + 8」「Ctrl + [」など
* カーソル位置or選択範囲を指定の文字列で挟む
<source lang="javascript">
var pre = "("; //前に付ける文字列
var sur = ")"; //後に付ける文字列
Document.Selection.Text = pre + Document.Selection.Text + sur;
Document.Selection.CharLeft(false, sur.length);
</source>
 
== 逆インデント ==
* 推奨割当「Shift + Tab」
* 複数行選択でない場合でも逆インデントする(※通常はタブ挿入)
→ マクロ「[[非選択状態でも逆インデント]]
または下記のコード
<source lang="javascript">
<source lang="javascript">
var sel = Document.Selection;
var sel = Document.Selection;
if (sel.GetActivePointY(mePosView) < Document.GetLines(meGetLineView)) {
if (sel.Text.indexOf("\n") < 0) {
   sel.LineDown();
  var x = sel.GetActivePointX(mePosLogical);
  var y = sel.GetActivePointY(mePosLogical);
  sel.SelectLine();
  var n = sel.Text.length;
  sel.UnIndent();
   sel.SetActivePoint(mePosLogical, x - (n - sel.Text.length), y);
} else {
} else {
   sel.EndOfDocument();
   sel.UnIndent();
}
}
</source>
</source>
== 日付と時刻 (メモ帳仕様) ==
* 推奨割当「F5」
* メモ帳の「日付と時刻」機能を再現
→ マクロ「[[日付と時刻を挿入]]」


== 上書き保存 (UAC対応) ==
== 上書き保存 (UAC対応) ==
163行目: 235行目:
</source>
</source>


== すべて選択 (非スクロール) ==
== 上移動 (先頭行では行頭へ) ==
* 推奨割当「Ctrl + A」
* 推奨割当「Up (↑)」
* すべて選択時にスクロールしない(※通常は文書の末尾までスクロールする)
* 上の行がそれ以上存在しない場合は、行頭に移動する(※通常は移動しない)
<source lang="javascript">
<source lang="javascript">
var sx = ScrollX, sy = ScrollY; //スクロール位置を記憶
var sel = Document.Selection;
Document.Selection.SelectAll();
if (sel.GetActivePointY(mePosView) > 1) {
ScrollX = sx; ScrollY = sy; //スクロール位置を復元
  sel.LineUp();
} else {
  sel.StartOfDocument();
}
</source>
</source>


== 逆インデント ==
== 下移動 (最終行では行末へ) ==
* 推奨割当「Shift + Tab」
* 推奨割当「Down (↓)」
* 複数行選択でない場合でも逆インデントする(※通常はタブ挿入)
* 下の行がそれ以上存在しない場合は、行末に移動する(※通常は移動しない)
→ マクロ「[[非選択状態でも逆インデント]]」
または下記のコード
<source lang="javascript">
<source lang="javascript">
var sel = Document.Selection;
var sel = Document.Selection;
if (sel.Text.indexOf("\n") < 0) {
if (sel.GetActivePointY(mePosView) < Document.GetLines(meGetLineView)) {
  var x = sel.GetActivePointX(mePosLogical);
   sel.LineDown();
  var y = sel.GetActivePointY(mePosLogical);
  sel.SelectLine();
  var n = sel.Text.length;
  sel.UnIndent();
   sel.SetActivePoint(mePosLogical, x - (n - sel.Text.length), y);
} else {
} else {
   sel.UnIndent();
   sel.EndOfDocument();
}
}
</source>
</source>
196行目: 264行目:
* インデント位置で実行した場合は、行頭に移動する
* インデント位置で実行した場合は、行頭に移動する
→ マクロ「[[行頭に移動]]」
→ マクロ「[[行頭に移動]]」
== 日付と時刻 (メモ帳仕様) ==
* 推奨割当「F5」
* メモ帳の「日付と時刻」機能を再現
→ マクロ「[[日付と時刻を挿入]]」
== 強制改行 (インデント無効) ==
* 推奨割当「Shift + Enter」「Ctrl + Enter」
* 自動インデントを無視して改行する
<source lang="javascript">
Document.Write("\n");
</source>
== コピー (行コピー時選択) ==
* 推奨割当「Ctrl + C」「Ctrl + Insert」
* 非選択時コピー(行コピー)時にコピーした範囲を選択する(※通常は範囲選択されない)
<source lang="javascript">
Document.Selection.Copy();
if (Document.Selection.IsEmpty) Document.Selection.SelectLine();
</source>
== 追加切り取り ==
* 割当例「Ctrl + Shift + X」など
* クリップボードに追加する切り取り
<source lang="javascript">
with (Document.Selection) {
  if (IsEmpty) SelectLine(); //非選択時、行選択
  ClipboardData.SetData(ClipboardData.GetData() + Text);
  Delete();
}
</source>
== 追加コピー ==
* 割当例「Ctrl + Shift + C」など
* クリップボードに追加するコピー
<source lang="javascript">
with (Document.Selection) {
  var isE=IsEmpty, pos=GetActivePos(); //非選択時かを記憶, カーソル位置を記憶
  if (IsEmpty) SelectLine(); //非選択時、行選択
  ClipboardData.SetData(ClipboardData.GetData() + Text);
  if (isE) SetActivePos(pos,false); //非選択時だった場合カーソル位置を復元、範囲解除
}
</source>
== 行を複製 ==
* 割当例「Ctrl + D」「Ctrl + Insert」など
* カーソル行(論理行)を複製する
<source lang="javascript">
Document.Selection.DuplicateLine();
</source>
== 行を削除 ==
* 割当例「Ctrl + E」「Ctrl + Delete」など
* カーソル行(論理行)を削除する
<source lang="javascript">
Document.Selection.SelectLine();
Document.Selection.Delete();
</source>
== 括弧で挟む ==
* 割当例「Ctrl + 8」「Ctrl + [」など
* カーソル位置or選択範囲を指定の文字列で挟む
<source lang="javascript">
var pre = "("; //前に付ける文字列
var sur = ")"; //後に付ける文字列
Document.Selection.Text = pre + Document.Selection.Text + sur;
Document.Selection.CharLeft(false, sur.length);
</source>


== 行頭まで選択 (論理行) ==
== 行頭まで選択 (論理行) ==

2014年2月3日 (月) 07:45時点における版

キーアサイン集です.
「従来動作+α」または「別エディタの動作を模倣」を基本とします.
他に良いと思われるキーアサインがあれば是非ご投稿ください.

キーアサイン

バックスペース

  • 推奨割当「Ctrl + BackSpace」
  • 通常のバックスペース処理をする(※通常は 0x007F のコードが挿入される)
var sel = Editor.ActiveDocument.Selection;
if (sel.IsEmpty) {
  sel.DeleteLeft(1);
} else {
  sel.Delete();
}

強制改行 (インデント無効)

  • 推奨割当「Shift + Enter」「Ctrl + Enter」
  • 自動インデントを無視して改行する
Document.Write("\n");

切り取り (行切り取り無効)

  • 推奨割当「Ctrl + X」「Shift + Delete」
  • 非選択時にカーソル行(論理行)を切り取りしない(※通常は行切り取りされる)
if (Document.Selection.Text) Document.Selection.Cut();

コピー (行コピー無効)

  • 推奨割当「Ctrl + C」「Ctrl + Insert」
  • 非選択時にカーソル行(論理行)をコピーしない(※通常は行コピーされる)
if (Document.Selection.Text) Document.Selection.Copy();

コピー (行コピー時選択)

  • 推奨割当「Ctrl + C」「Ctrl + Insert」
  • 非選択時コピー(行コピー)時にコピーした範囲を選択する(※通常は範囲選択されない)
Document.Selection.Copy();
if (Document.Selection.IsEmpty) Document.Selection.SelectLine();

すべて選択 (非スクロール)

  • 推奨割当「Ctrl + A」
  • すべて選択時にスクロールしない(※通常は文書の末尾までスクロールする)
var sx = ScrollX, sy = ScrollY;	//スクロール位置を記憶
Document.Selection.SelectAll();
ScrollX = sx; ScrollY = sy;	//スクロール位置を復元

追加切り取り

  • 割当例「Ctrl + Shift + X」など
  • クリップボードに追加する切り取り
with (Document.Selection) {
  if (IsEmpty) SelectLine();	//非選択時、行選択
  ClipboardData.SetData(ClipboardData.GetData() + Text);
  Delete();
}

追加コピー

  • 割当例「Ctrl + Shift + C」など
  • クリップボードに追加するコピー
with (Document.Selection) {
  var isE=IsEmpty, pos=GetActivePos();	//非選択時かを記憶, カーソル位置を記憶
  if (IsEmpty) SelectLine();		//非選択時、行選択
  ClipboardData.SetData(ClipboardData.GetData() + Text);
  if (isE) SetActivePos(pos,false);	//非選択時だった場合カーソル位置を復元、範囲解除
}

行を複製

  • 割当例「Ctrl + D」「Ctrl + Insert」など
  • カーソル行(論理行)を複製する
Document.Selection.DuplicateLine();

行を削除

  • 割当例「Ctrl + E」「Ctrl + Delete」など
  • カーソル行(論理行)を削除する
Document.Selection.SelectLine();
Document.Selection.Delete();

括弧で挟む

  • 割当例「Ctrl + 8」「Ctrl + [」など
  • カーソル位置or選択範囲を指定の文字列で挟む
var pre = "(";	//前に付ける文字列
var sur = ")";	//後に付ける文字列
Document.Selection.Text = pre + Document.Selection.Text + sur;
Document.Selection.CharLeft(false, sur.length);

逆インデント

  • 推奨割当「Shift + Tab」
  • 複数行選択でない場合でも逆インデントする(※通常はタブ挿入)

→ マクロ「非選択状態でも逆インデント」 または下記のコード

var sel = Document.Selection;
if (sel.Text.indexOf("\n") < 0) {
  var x = sel.GetActivePointX(mePosLogical);
  var y = sel.GetActivePointY(mePosLogical);
  sel.SelectLine();
  var n = sel.Text.length;
  sel.UnIndent();
  sel.SetActivePoint(mePosLogical, x - (n - sel.Text.length), y);
} else {
  sel.UnIndent();
}

日付と時刻 (メモ帳仕様)

  • 推奨割当「F5」
  • メモ帳の「日付と時刻」機能を再現

→ マクロ「日付と時刻を挿入

上書き保存 (UAC対応)

  • 推奨割当「Ctrl + S」
  • UAC が必要な場合は権限昇格して保存

→ マクロ「上書き保存(UAC対応)

元に戻す

  • 推奨割当「Ctrl + Z」
  • 「元に戻す」実行時に,保存済みファイルと同じ内容のとき「変更マーク」を消す
  • 速度が気になる場合はサイズ制限の値を変更してください
var beforeText = Document.Text;
Document.Undo();
if (beforeText == Document.Text) {
  Quit();
}

// サイズ制限
if (Document.Text.length > 150 * 1024) {
  Quit();
}

if (Document.FullName) {
  var charset = "_autodetect_all";
  switch (Document.Encoding) {
    case meEncodingEUC:           charset = "euc-JP";   break;
    case meEncodingShiftJIS:        charset = "shift-jis";  break;
    case meEncodingUTF16LE:
    case meEncodingUTF16BE:         charset = "unicode";  break;
    case meEncodingUTF7:          charset = "utf-7";    break;
    case meEncodingUTF8WithSignature:
    case meEncodingUTF8WithoutSignature:  charset = "utf-8";    break;
  }
  var s = LoadFromFile(Document.FullName, charset);
  if (s != null && Document.Text === s.replace(/\r\n?/g, "\n")) {
    Document.Saved = true;
  }
}
function LoadFromFile(path, charset) {
  var fso = new ActiveXObject("Scripting.FileSystemObject");
  if (!fso.FileExists(path)) {
    return null;
  }
  if (!charset) {
    charset = "utf-8";
  }
  var adodb = new ActiveXObject("ADODB.Stream");
  adodb.Charset = charset;
  adodb.Type = 2;
  adodb.Open();
  adodb.LoadFromFile(path);
  var text = adodb.ReadText(-1);
  adodb.Close();
  return text;
};

やり直し

  • 推奨割当「Ctrl + Y」
  • 「やり直し」実行時に,保存済みファイルと同じ内容のとき「変更マーク」を消す
  • 速度が気になる場合はサイズ制限の値を変更してください
var beforeText = Document.Text;
Document.Redo();
if (beforeText == Document.Text) {
  Quit();
}

// サイズ制限
if (Document.Text.length > 150 * 1024) {
  Quit();
}

if (Document.FullName) {
  var charset = "_autodetect_all";
  switch (Document.Encoding) {
    case meEncodingEUC:           charset = "euc-JP";   break;
    case meEncodingShiftJIS:        charset = "shift-jis";  break;
    case meEncodingUTF16LE:
    case meEncodingUTF16BE:         charset = "unicode";  break;
    case meEncodingUTF7:          charset = "utf-7";    break;
    case meEncodingUTF8WithSignature:
    case meEncodingUTF8WithoutSignature:  charset = "utf-8";    break;
  }
  var s = LoadFromFile(Document.FullName, charset);
  if (s != null && Document.Text === s.replace(/\r\n?/g, "\n")) {
    Document.Saved = true;
  }
}
function LoadFromFile(path, charset) {
  var fso = new ActiveXObject("Scripting.FileSystemObject");
  if (!fso.FileExists(path)) {
    return null;
  }
  if (!charset) {
    charset = "utf-8";
  }
  var adodb = new ActiveXObject("ADODB.Stream");
  adodb.Charset = charset;
  adodb.Type = 2;
  adodb.Open();
  adodb.LoadFromFile(path);
  var text = adodb.ReadText(-1);
  adodb.Close();
  return text;
};

上移動 (先頭行では行頭へ)

  • 推奨割当「Up (↑)」
  • 上の行がそれ以上存在しない場合は、行頭に移動する(※通常は移動しない)
var sel = Document.Selection;
if (sel.GetActivePointY(mePosView) > 1) {
  sel.LineUp();
} else {
  sel.StartOfDocument();
}

下移動 (最終行では行末へ)

  • 推奨割当「Down (↓)」
  • 下の行がそれ以上存在しない場合は、行末に移動する(※通常は移動しない)
var sel = Document.Selection;
if (sel.GetActivePointY(mePosView) < Document.GetLines(meGetLineView)) {
  sel.LineDown();
} else {
  sel.EndOfDocument();
}

行頭に移動 (インデント対応)

  • 推奨割当「Home」「Shift + Home」
  • インデントがある場合は、インデント位置に移動する
  • インデント位置で実行した場合は、行頭に移動する

→ マクロ「行頭に移動

行頭まで選択 (論理行)

  • 推奨割当「Shift + Home」
  • 論理座標で行頭まで選択する(※通常は表示座標)
Document.Selection.StartOfLine(true, mePosLogical);

行末まで選択 (論理行)

  • 推奨割当「Shift + End」
  • 論理座標で行末まで選択する(※通常は表示座標)
Document.Selection.EndOfLine(true, mePosLogical);

ご意見・ご要望

何かありましたら,右の [編集] から追記してください.対応するかもしれません.

スポンサーリンク