「文書の先頭か末尾」の版間の差分
ナビゲーションに移動
検索に移動
セクションの修正 |
改行とマークアップの修正 |
||
| (同じ利用者による、間の1版が非表示) | |||
| 1行目: | 1行目: | ||
== 文書の先頭か末尾に移動 == | == 文書の先頭か末尾に移動 == | ||
ショートカットキーやツールバーアイコンを削減するために、自分がよく使う機能をひとまとめにしてみました(i.e. ショートカットの割りあては「Ctrl+End」キーひとつで済み、ツールバーアイコンやマウスボタンへの割りあてもこれひとつで)。 | |||
* トグル移動のパターンは '''2in1''' モードと '''4in1''' モードを選択可 | * トグル移動のパターンは '''2in1''' モードと '''4in1''' モードを選択可 | ||
=== ソースコード === | === ソースコード === | ||
< | <syntaxhighlight lang="javascript"> | ||
#title = "文頭か文末" | #title = "文頭か文末" | ||
#tooltip = "文書の先頭か末尾にカーソルを移動する" | #tooltip = "文書の先頭か末尾にカーソルを移動する" | ||
| 70行目: | 69行目: | ||
} | } | ||
Redraw = true; | Redraw = true; | ||
</ | </syntaxhighlight> | ||
== 文書の先頭か末尾 または 選択範囲の始点か終点 == | == 文書の先頭か末尾 または 選択範囲の始点か終点 == | ||
| 76行目: | 75行目: | ||
=== ソースコード === | === ソースコード === | ||
< | <syntaxhighlight lang="javascript"> | ||
#title = "文頭か文末 または 選択範囲の始点か終点" | #title = "文頭か文末 または 選択範囲の始点か終点" | ||
#tooltip = "文書のの先頭か末尾 または 選択範囲の始点か終点 にカーソルを移動する" | #tooltip = "文書のの先頭か末尾 または 選択範囲の始点か終点 にカーソルを移動する" | ||
| 163行目: | 162行目: | ||
} | } | ||
Redraw = true; | Redraw = true; | ||
</ | </syntaxhighlight> | ||
== メモ == | == メモ == | ||
* 2019/03/29 (sukemaru) | * 2019/03/29 (sukemaru) | ||
** 4in1 トグルモードが "空白行だけの文書" で正しく機能しなかったのを修正 | |||
** 「選択範囲の始点終点を交替」マクロとの統合版を追加 | |||
** (個人的に「行頭か行末に移動」マクロを使う機会がすくないので「文書の先頭か末尾に移動」マクロで統合版を作りなおしました。自分用のコードでは [[GetKeyState.exe(キー状態取得実行ファイル) |GetKeyState]] を利用しての "選択範囲の前後を1文字ずつ拡張/縮小」機能も追加していたり) | |||
2023年5月21日 (日) 04:30時点における最新版
文書の先頭か末尾に移動[編集]
ショートカットキーやツールバーアイコンを削減するために、自分がよく使う機能をひとまとめにしてみました(i.e. ショートカットの割りあては「Ctrl+End」キーひとつで済み、ツールバーアイコンやマウスボタンへの割りあてもこれひとつで)。
- トグル移動のパターンは 2in1 モードと 4in1 モードを選択可
ソースコード[編集]
#title = "文頭か文末"
#tooltip = "文書の先頭か末尾にカーソルを移動する"
// #icon = "Mery用 マテリアルデザインっぽいアイコン.icl",278
/**
* つぎのとおりにカーソルの位置を移動します(実行するごとにトグル移動)
*
* 2in1モードの場合: ① ⇔ ② のトグル移動
* ① 文書の先頭
* ② 文書の末尾
*
* 4in1モードの場合: ① → ② → ③ → ④ → ① ... のトグル移動
* ① 文書の先頭
* ② 文書先頭の空白文字・空白行のうしろの位置(空白文字以外の "文字列" の開始位置)
* ③ 文書末尾の空白文字・空白行のまえの位置(空白文字以外の "文字列" の終了位置)
* ④ 文書の末尾
* ※ 文頭空白・文末空白のないドキュメントでは ②・③ をスキップする
*/
// ■トグルパターン設定: 2in1モード or 4in1モード
var toggleMode2 = true;
// true のとき 2in1トグルモード(文書先頭⇔文書末尾)
// false のとき 4in1トグルモード(文書先頭→文字列開始位置→文字列終了位置→文書末尾)
var d = document, s = document.selection;
Redraw = false;
// 2in1 トグルモード
if ( toggleMode2 ) {
if ( s.GetActivePos() != 0 ) {
// ①文頭に移動
s.StartOfDocument();
}
else {
// ②文末に移動
s.EndOfDocument();
}
}
// 4in1 トグルモード
else {
var pos = s.GetActivePos();
var st = d.Text;
var sId = st.search( /[^ \s]/ );
var eId = st.search( /[ \s]*$/ );
if ( pos == 0 && sId > 0 ) {
// ②文字列開始位置に移動
s.SetActivePos( sId );
}
else if ( pos != eId && ( pos == 0 || pos == sId ) ) {
// ③文字列終了位置に移動
s.SetActivePos( eId );
}
else if ( pos != st.length && ( pos == 0 || pos == eId || pos == sId ) ) {
// ④文末に移動
s.EndOfDocument();
}
else {
// ①文頭に移動
s.StartOfDocument();
}
}
Redraw = true;
文書の先頭か末尾 または 選択範囲の始点か終点[編集]
「行頭か行末 または 選択範囲の始点か終点」マクロと同じように、「文書の先頭か末尾に移動」マクロと キーアサイン集 の「選択範囲の始点終点を交替」マクロのコードと統合したものです。
ソースコード[編集]
#title = "文頭か文末 または 選択範囲の始点か終点"
#tooltip = "文書のの先頭か末尾 または 選択範囲の始点か終点 にカーソルを移動する"
// #icon = "Mery用 マテリアルデザインっぽいアイコン.icl",232
/**
* つぎのとおりにカーソルの位置を移動します(実行するごとにトグル移動)
*
* 選択範囲がある場合
*
* 選択範囲の開始位置と終了位置を入れ替え
* ※ 開始位置:キャレットのない側
* ※ 終了位置:キャレットのある側
*
*
* 選択範囲がない場合
*
* 2in1モードの場合: ① ⇔ ② のトグル移動
* ① 文書の先頭
* ② 文書の末尾
*
* 4in1モードの場合: ① → ② → ③ → ④ → ① ... のトグル移動
* ① 文書の先頭
* ② 文書先頭の空白文字・空白行のうしろの位置(空白文字以外の"文字列"の開始位置)
* ③ 文書末尾の空白文字・空白行のまえの位置(空白文字以外の"文字列"の終了位置)
* ④ 文書の末尾
* ※ 文頭空白・文末空白のないドキュメントでは ②・③ をスキップする
*/
// ■トグルパターン設定: 2in1モード or 4in1モード
var toggleMode2 = false;
// true のとき 2in1トグルモード(文書先頭 ⇔ 文書末尾)
// false のとき 4in1トグルモード(文書先頭→文字列開始位置→文字列終了位置→文書末尾)
var d = document, s = document.selection;
Redraw = false;
if ( s.Text ) {
// 「選択範囲の始点終点を交替」マクロ
var act = s.GetActivePos();
var anc = s.GetAnchorPos();
var tp = ( anc < act ) ? anc : act; // 選択範囲の先頭位置
var bp = ( anc < act ) ? act : anc; // 選択範囲の末尾位置
s.SetActivePos( act );
s.SetActivePos( anc, true );
}
// 2in1 トグルモード
else if ( toggleMode2 ) {
// 「文頭か文末」マクロ
if ( s.GetActivePos() != 0 ) {
// ①文頭に移動
s.StartOfDocument();
}
else {
// ②文末に移動
s.EndOfDocument();
}
}
// 4in1 トグルモード
else {
var pos = s.GetActivePos();
var st = d.Text;
var sId = st.search( /[^ \s]/ );
var eId = st.search( /[ \s]*$/ );
if ( pos == 0 && sId > 0 ) {
// ②文字列開始位置に移動
s.SetActivePos( sId );
}
else if ( pos != eId && ( pos == 0 || pos == sId ) ) {
// ③文字列終了位置に移動
s.SetActivePos( eId );
}
else if ( pos != st.length && ( pos == 0 || pos == eId || pos == sId ) ) {
// ④文末に移動
s.EndOfDocument();
}
else {
// ①文頭に移動
s.StartOfDocument();
}
}
Redraw = true;
メモ[編集]
- 2019/03/29 (sukemaru)
- 4in1 トグルモードが "空白行だけの文書" で正しく機能しなかったのを修正
- 「選択範囲の始点終点を交替」マクロとの統合版を追加
- (個人的に「行頭か行末に移動」マクロを使う機会がすくないので「文書の先頭か末尾に移動」マクロで統合版を作りなおしました。自分用のコードでは GetKeyState を利用しての "選択範囲の前後を1文字ずつ拡張/縮小」機能も追加していたり)
スポンサーリンク