From 40d953ccbf029686aca9e0769cfc7cd6a70d1937 Mon Sep 17 00:00:00 2001 From: USAMI Kenta Date: Fri, 6 Sep 2024 04:12:32 +0900 Subject: [PATCH] Fix Jekyll markdown --- .../avy-can-do-anything.md} | 392 ++++++++++-------- .../fifteen-ways-to-use-embark.md} | 117 ++++-- 2 files changed, 296 insertions(+), 213 deletions(-) rename docs/{packages/AvyCanDoAnything.md => tips/avy-can-do-anything.md} (83%) rename docs/{packages/FifteenWaysToUseEmbark.md => tips/fifteen-ways-to-use-embark.md} (91%) diff --git a/docs/packages/AvyCanDoAnything.md b/docs/tips/avy-can-do-anything.md similarity index 83% rename from docs/packages/AvyCanDoAnything.md rename to docs/tips/avy-can-do-anything.md index bae0621..e1777c9 100644 --- a/docs/packages/AvyCanDoAnything.md +++ b/docs/tips/avy-can-do-anything.md @@ -1,4 +1,6 @@ --- +layout: page +author: ayatakesi title: Avyならなんでもできる tags: - Emacs @@ -13,7 +15,7 @@ ignorePublish: false これはKarthik Chikmagalurさんによって記述された記事を日本語に翻訳した記事であり、記事の所有権と著作権はKarthik Chikmagalurさんに帰属します。 -元の記事: [Avy can do anything | Karthinks](https://karthinks.com/software/avy-can-do-anything/) +元の記事: [Avy can do anything \| Karthinks](https://karthinks.com/software/avy-can-do-anything/) @@ -129,7 +131,7 @@ Isearchの使用に少しでも時間を費やした経験があればIsearchの But back to Isearch: what can we do to decouple the three stages here? Not much without modifying its guts. It's all elisp, so that's not a tall order. For example, Protesilaos Stavrou adds many intuitive actions (such as marking candidates) to Isearch in this video. But it turns out we don't need to modify Isearch, because Avy exists, has a killer Filter feature, and it separates the three stages like a champ. This makes for some very intriguing possibilities. --> -話しをIsearchに戻す。どうやれば3つのステージに分割できるのか? 根性が持続できれば大したことはないだろう。すべてがelispである以上、それは難しい注文ではないのだ。たとえばProtesilaos Stavrouは[ビデオ](https://www.youtube.com/watch?v=y6_bmcd3nis)において、候補のマーキングといった直観的な多くのアクションをIsearchに追加している。しかし **Avy** の存在によってIsearchの修整が不要だということが明らかになった。フィルターというキラー機能を有しつつも、王者同様3つのステージを分離しているのがAvyである。Avyによって何とも興味がそそられる可能性が生みだされた。 +話をIsearchに戻す。どうやれば3つのステージに分割できるのか? 根性が持続できれば大したことはないだろう。すべてがelispである以上、それは難しい注文ではないのだ。たとえばProtesilaos Stavrouは[ビデオ](https://www.youtube.com/watch?v=y6_bmcd3nis)において、候補のマーキングといった直観的な多くのアクションをIsearchに追加している。しかし **Avy** の存在によってIsearchの修整が不要だということが明らかになった。フィルターというキラー機能を有しつつも、王者同様3つのステージを分離しているのがAvyである。Avyによって何とも興味がそそられる可能性が生みだされた。 ![avy-interaction-paradigm.png](https://karthinks.com/img/avy-interaction-paradigm.png) @@ -381,7 +383,6 @@ First, taking the annoyance out of some common editing actions with Avy. If you まずはAvyを用いて一般的な編集アクションを行う際の悩みの種を解消する。VimとEasymotionを使っていれば、以下のアクションのうち最初のいくつかは無料で入手できる:
以下のデモに関する注意 -
-- わかりやすくするために、いくつのアクションの間はスクリーン彩度を下げて、行が"点滅"するようにAvyをセットアップしてある。これらはデフォルトでは有効になっていない。追いやすくするために、遅延を追加して操作の低速化も行った。実際の使用では瞬時に実行される。 +
    -- Avyで候補にアクションをディスパッチするために使用するキーは、avy-dispatch-alistで指定する。 +
  • わかりやすくするために、いくつのアクションの間はスクリーン彩度を下げて、行が"点滅"するようにAvyをセットアップしてある。これらはデフォルトでは有効になっていない。追いやすくするために、遅延を追加して操作の低速化も行った。実際の使用では瞬時に実行される。
  • -- 使用するキーがAvyがスクリーン上の選択ヒントにAvyが用いるキーと重複しないことも保証する必要があるだろう。これを行うためにはavy-keysのカスタマイズも検討してほしい。 +
  • Avyで候補にアクションをディスパッチするために使用するキーは、avy-dispatch-alistで指定する。
  • + +
  • 使用するキーがAvyがスクリーン上の選択ヒントにAvyが用いるキーと重複しないことも保証する必要があるだろう。これを行うためにはavy-keysのカスタマイズも検討してほしい。
  • + +
-
## 単語、sexp、行の候補のkill @@ -410,31 +414,35 @@ Killing words or s-expressions is built-in. I added an action to kill a line. In [avy-kill-demo.mp4](https://karthinks.com/img/avy-kill-demo.mp4) -
ビデオ実況
+
ビデオ実況 -1. avy-goto-char-timerを呼び出す。 +
    -2. "is"をタイプする。"is"にマッチするすべての候補にヒントが表示される。 +
  1. avy-goto-char-timerを呼び出す。
  2. -3. kでavy-action-killを呼び出す。 +
  3. is"をタイプする。"is"にマッチするすべての候補にヒントが表示される。
  4. -4. 重複した"is"のいずれかを選択して削除する。 +
  5. kでavy-action-killを呼び出す。
  6. -5. 余分な"and"にたいして1-4のステップを繰り返す。 +
  7. 重複した"is"のいずれかを選択して削除する。
  8. -6. avy-goto-char-timerを呼び出す。 +
  9. 余分な"and"にたいして1-4のステップを繰り返す。
  10. -7. "keyへのマッチに絞り込むために"key"とタイプする。 +
  11. avy-goto-char-timerを呼び出す。
  12. -8. kでavy-action-kill-whole-lineを呼び出す。 +
  13. keyへのマッチに絞り込むために"key"とタイプする。
  14. -9. コメント行を選択してその行を削除する。 +
  15. kでavy-action-kill-whole-lineを呼び出す。
  16. -10. 今度は別ウィンドウにある"("を選択して1-4のステップを繰り返して、関数の定義をkillする。 +
  17. コメント行を選択してその行を削除する。
  18. -11. 今度は別ウィンドウにある"add"を選択して7-9のステップを繰り返して"(advice-add …)"がある行をkillする。 +
  19. 今度は別ウィンドウにある"("を選択して1-4のステップを繰り返して、関数の定義をkillする。
  20. -
+
  • 今度は別ウィンドウにある"add"を選択して7-9のステップを繰り返して"(advice-add …)"がある行をkillする。
  • + + + + ```elisp (defun avy-action-kill-whole-line (pt) @@ -460,7 +468,7 @@ killリングまたはバッファーのポイント位置にコピーする。 [avy-copy-demo.mp4](https://karthinks.com/img/avy-copy-demo.mp4) -
    ビデオ実況
    +
    ビデオ実況 -1. avy-goto-char-timerを呼び出す。 +
      + +
    1. avy-goto-char-timerを呼び出す。
    2. -2. "["をタイプしてフレーム内の"["へのマッチすべてをフィルタリングする。 +
    3. "["をタイプしてフレーム内の"["へのマッチすべてをフィルタリングする。
    4. -3. yにバインドされているavy-action-yankを呼び出す。 +
    5. yにバインドされているavy-action-yankを呼び出す。
    6. -4. "[big-cache]"にたいするマッチを選択する。これは別ウィンドウからこのバッファーにコピーされたテキスト。 +
    7. "[big-cache]"にたいするマッチを選択する。これは別ウィンドウからこのバッファーにコピーされたテキスト。
    8. -5. avy-goto-char-timerを呼び出す。 +
    9. avy-goto-char-timerを呼び出す。
    10. -6. "de"をタイプして"demuxer"を含んだマッチを選択する。 +
    11. "de"をタイプして"demuxer"を含んだマッチを選択する。
    12. -7. Yにバインドされているavy-action-yank-whole-lineを呼び出す。 +
    13. Yにバインドされているavy-action-yank-whole-lineを呼び出す。
    14. -8. マッチからいずれか1つ選択する。その行がバッファーにコピーされる。 +
    15. マッチからいずれか1つ選択する。その行がバッファーにコピーされる。
    16. + +
    17. デフォルトでM-SPCにバインドされているjust-one-spaceでインデントを修整する。
    18. + +
    + +
    -9. デフォルトでM-SPCにバインドされているjust-one-spaceでインデントを修整する。 -
    ```elisp (defun avy-action-copy-whole-line (pt) @@ -529,7 +543,7 @@ Note that Avy actually defines separate commands for this: avy-copy-line and avy [avy-transpose-demo.mp4](https://karthinks.com/img/avy-transpose-demo.mp4) -
    ビデオ実況
    +
    ビデオ実況 -1. 場所を空けるためにスペースを何個かタイプする。 +
      -2. avy-goto-char-timerを呼び出す。 +
    1. 場所を空けるためにスペースを何個かタイプする。
    2. -3. "("で始まる候補にフィルタリングする。 +
    3. avy-goto-char-timerを呼び出す。
    4. -4. tを押下してavy-action-teleportを実行する。 +
    5. "("で始まる候補にフィルタリングする。
    6. -5. "(parametric forcing)"という候補を選択する。 +
    7. tを押下してavy-action-teleportを実行する。
    8. -6. avy-goto-char-timerでそのウィンドウ内にある"DOWNLOADED"という候補にジャンプする。ポイントがある位置に移動(またはtranspoae: 転地)するはず。 +
    9. "(parametric forcing)"という候補を選択する。
    10. -7. avy-goto-char-timerを呼び出す。 +
    11. avy-goto-char-timerでそのウィンドウ内にある"DOWNLOADED"という候補にジャンプする。ポイントがある位置に移動(またはtranspoae: 転地)するはず。
    12. -8. "the"にマッチする候補にフィルタリングする。 +
    13. avy-goto-char-timerを呼び出す。
    14. -9. Tを押下してavy-action-teleport-lineを実行する。 +
    15. "the"にマッチする候補にフィルタリングする。
    16. -10. 候補の行(イメージの直下にある)を選択する。ポイントがある位置に移動(またはtranspoae: 転地)するはず。 +
    17. Tを押下してavy-action-teleport-lineを実行する。
    18. -
    +
  • 候補の行(イメージの直下にある)を選択する。ポイントがある位置に移動(またはtranspoae: 転地)するはず。
  • + + + + ```elisp (defun avy-action-teleport-whole-line (pt) @@ -581,7 +599,7 @@ Select a candidate line (the one just below the image). It is moved over (transp [avy-zap-demo.mp4](https://karthinks.com/img/avy-zap-demo.mp4) -
    ビデオ実況
    +
    ビデオ実況 -1. avy-goto-char-timerを呼び出す。 +
      -2. "in"とタイプする。"In Emacs "を含めて、"in"へのすべてのマッチにヒントが表示される。 +
    1. avy-goto-char-timerを呼び出す。
    2. -3. avy-action-zapを実行するためにzを押下する。 +
    3. "in"とタイプする。"In Emacs "を含めて、"in"へのすべてのマッチにヒントが表示される。
    4. -4. 候補(この場合だと"In Emacs"にたいするヒントの文字を選択する。ポイントと候補の間にあったテキストがkillされるだろう。 +
    5. avy-action-zapを実行するためにzを押下する。
    6. -
    +
  • 候補(この場合だと"In Emacs"にたいするヒントの文字を選択する。ポイントと候補の間にあったテキストがkillされるだろう。
  • + + + + ## 単語やsexpの候補をマーク @@ -610,7 +632,7 @@ Also built in, m by default. This isn’t different from jumping to the candidat [avy-mark-demo.mp4](https://karthinks.com/img/avy-mark-demo.mp4) -
    ビデオ実況
    +
    ビデオ実況 -1. avy-goto-char-timerを呼び出す。 +
      -2. フィルタリングするためのテキスト(ここでは"(")をタイプする。 +
    1. avy-goto-char-timerを呼び出す。
    2. -3. avy-action-markを実行するためにmを押下する。 +
    3. フィルタリングするためのテキスト(ここでは"(")をタイプする。
    4. -4. 候補から単語かsexp(ここでは("~/.local/share"))を選択する。 +
    5. avy-action-markを実行するためにmを押下する。
    6. -5. 他の候補(data_directory...とRotatingFileHandler)をマークするために、1-4のステップを2回繰り返す。 +
    7. 候補から単語かsexp(ここでは("~/.local/share"))を選択する。
    8. -
    +
  • 他の候補(data_directory...とRotatingFileHandler)をマークするために、1-4のステップを2回繰り返す。
  • + + + + ## ポイントから候補までのリージョンをマーク @@ -642,7 +668,7 @@ Avyジャンプする前にマークをセットするので、C-x C-xを使用 [avy-mark-to-char-demo.mp4](https://karthinks.com/img/avy-mark-to-char-demo.mp4) -
    ビデオ実況
    +
    ビデオ実況 -1. avy-goto-char-timerを呼び出す。 +
      -2. フィルタリングに使用するテキスト(ここでは"')")をタイプする。 +
    1. avy-goto-char-timerを呼び出す。
    2. -3. avy-action-mark-to-charを実行するために、SPCを押下する。 +
    3. フィルタリングに使用するテキスト(ここでは"')")をタイプする。
    4. -4. 候補のヒント文字を選択する。これによりポイントからヒント文字までのリージョンをマークして、ポイントを移動する。 +
    5. avy-action-mark-to-charを実行するために、SPCを押下する。
    6. -5. avy-goto-char-timerを呼び出す。 +
    7. 候補のヒント文字を選択する。これによりポイントからヒント文字までのリージョンをマークして、ポイントを移動する。
    8. -6. フィルタリングに使用するテキスト(ここでは単に一連のスペース)をタイプする。 +
    9. avy-goto-char-timerを呼び出す。
    10. -7. avy-action-mark-to-charを実行するために、SPCを押下する。 +
    11. フィルタリングに使用するテキスト(ここでは単に一連のスペース)をタイプする。
    12. -8. 行の開始となる候補(ここでは一連のスペース)を選択する。これによりポイントからその行までがマークされる。 +
    13. avy-action-mark-to-charを実行するために、SPCを押下する。
    14. -
    +
  • 行の開始となる候補(ここでは一連のスペース)を選択する。これによりポイントからその行までがマークされる。
  • + + + + ```elisp (defun avy-action-mark-to-char (pt) @@ -697,7 +727,7 @@ This is built-in, bound to i by default. [avy-ispell.mp4](https://karthinks.com/img/avy-ispell.mp4) -
    ビデオ実況
    +
    ビデオ実況 -1. avy-goto-char-timer(Avyの他のジャンプコマンドでもよい)を呼び出す。 +
  • avy-goto-char-timer(Avyの他のジャンプコマンドでもよい)を呼び出す。
  • -2. "can"とタイプすると"candidate"(スペル間違い)がハイライトされる。 +
  • "can"とタイプすると"candidate"(スペル間違い)がハイライトされる。
  • -3. avy-action-ispell用のディスパッチキー(デフォルトではiにセットされている)を押下する。 +
  • avy-action-ispell用のディスパッチキー(デフォルトではiにセットされている)を押下する。
  • -4. マッチのいずれか(ここではスペル間違いの"candidate"のマッチ)を選択する。 +
  • マッチのいずれか(ここではスペル間違いの"candidate"のマッチ)を選択する。
  • -5. これにより選択にたいしてispell-wordが実行される。 +
  • これにより選択にたいしてispell-wordが実行される。
  • -6. 正しいスペルを選ぶ。 +
  • 正しいスペルを選ぶ。
  • -7. もう一度avy-goto-char-timerを呼び出す。 +
  • もう一度avy-goto-char-timerを呼び出す。
  • -8. "te"をタイプすると"teh"にたいするマッチが(他より強調されて)ハイライトされる。 +
  • "te"をタイプすると"teh"にたいするマッチが(他より強調されて)ハイライトされる。
  • -9. avy-action-ispell用のディスパッチキーを押下する 。 +
  • avy-action-ispell用のディスパッチキーを押下する 。
  • -10. 候補(ここでは"teh"のマッチ)を選択する。 +
  • 候補(ここでは"teh"のマッチ)を選択する。
  • -11. これによりもう一度ispell-wordが実行されて、"teh"が修整される。 +
  • これによりもう一度ispell-wordが実行されて、"teh"が修整される。
  • -
    + + + -1. avy-goto-char-timer(Avyの他のジャンプコマンドでもよい)を呼び出す。 +
      + +
    1. avy-goto-char-timer(Avyの他のジャンプコマンドでもよい)を呼び出す。
    2. -2. "non"とタイプすると"nonpareil"にたいするマッチが(他より強調されて)がハイライトされる。 +
    3. "non"とタイプすると"nonpareil"にたいするマッチが(他より強調されて)がハイライトされる。
    4. -3. avy-action-define用のディスパッチキー(ここでは=にセットされている)を押下する。 +
    5. avy-action-define用のディスパッチキー(ここでは=にセットされている)を押下する。
    6. -4. マッチのいずれか(ここでは"nonpareil"にたいするマッチのいずれか)を選択する。 +
    7. マッチのいずれか(ここでは"nonpareil"にたいするマッチのいずれか)を選択する。
    8. -5. これにより""nonpareil""の定義とともにバッファーが生成される。 +
    9. これにより""nonpareil""の定義とともにバッファーが生成される。
    10. -6. こdefinitionバッファーをスクロールするために、scroll-other-window (C-M-v)を呼び出す。 +
    11. こdefinitionバッファーをスクロールするために、scroll-other-window (C-M-v)を呼び出す。
    12. -7. もう一度avy-goto-char-timerを呼び出す。 +
    13. もう一度avy-goto-char-timerを呼び出す。
    14. -8. "fi"をタイプすると"finch"にたいするマッチが(他より強調されて)ハイライトされる。これは定義をもつ別のバッファーでのマッチであることに注意。このバッファーへの切り替えは不要。 +
    15. "fi"をタイプすると"finch"にたいするマッチが(他より強調されて)ハイライトされる。これは定義をもつ別のバッファーでのマッチであることに注意。このバッファーへの切り替えは不要。
    16. -9. avy-action-define用のディスパッチキーを押下する 。 +
    17. avy-action-define用のディスパッチキーを押下する 。
    18. -10. 候補(ここでは"finch"のマッチ)を選択する。 +
    19. 候補(ここでは"finch"のマッチ)を選択する。
    20. -11. これによりもう一度finchの辞書定義とともにバッファーが生成される。 +
    21. これによりもう一度finchの辞書定義とともにバッファーが生成される。
    22. - +
    + + ```elisp ;パッケージマネージャーを変えたりお気に入りの辞書パッケージに変えてもよい @@ -841,7 +877,7 @@ This produces the buffer with the dictionary definition of "finch" [avy-help-demo.mp4](https://karthinks.com/img/avy-help-demo.mp4) -
    ビデオ実況
    +
    ビデオ実況 -1. avy-goto-char-timerを呼び出す。 +
      -2. フィルタリングするためのテキスト(ここでは"case")をタイプする。 +
    1. avy-goto-char-timerを呼び出す。
    2. -3. run avy-action-helpfulを実行するためにHを押下する。 +
    3. フィルタリングするためのテキスト(ここでは"case")をタイプする。
    4. -4. 候補フレーズ(ここでは"pcase-lambda")を選択する。これによりシンボルのドキュメントのバッファーがオープンする。 +
    5. avy-action-helpfulを実行するためにHを押下する。
    6. -5. helpバッファーをスクロールするために、C-M-vでscroll-other-windowを呼び出す。 +
    7. 候補フレーズ(ここでは"pcase-lambda")を選択する。これによりシンボルのドキュメントのバッファーがオープンする。
    8. -6. avy-goto-char-timerを呼び出す。 +
    9. helpバッファーをスクロールするために、C-M-vscroll-other-windowを呼び出す。
    10. -7. フィルタリングするためのテキスト(ここでは"ma")をタイプする。 +
    11. avy-goto-char-timerを呼び出す。
    12. -8. avy-action-helpfulを実行するためにHを押下する。 +
    13. フィルタリングするためのテキスト(ここでは"ma")をタイプする。
    14. -9. 候補フレーズ(ここでは"macroexp-parse-body")を選択する。これは他のウィンドウ(helpバッファー)でのマッチであることに注意。これによりシンボルのドキュメントが表示される。 +
    15. avy-action-helpfulを実行するためにHを押下する。
    16. -10. 他のシンボル(ここでは"memq"のドキュメントを調べるために、ステップ5-9を繰り返す。 +
    17. 候補フレーズ(ここでは"macroexp-parse-body")を選択する。これは他のウィンドウ(helpバッファー)でのマッチであることに注意。これによりシンボルのドキュメントが表示される。
    18. -
    +
  • 他のシンボル(ここでは"memq"のドキュメントを調べるために、ステップ5-9を繰り返す。
  • + + + + ```elisp ;パッケージマネージャーの置き換えや別のヘルプライブラリーの選択も可 @@ -903,7 +943,7 @@ Googleを検索できるEmacs機能が必要になるだろう。[いくつか [avy-tuxi-demo.mp4](https://karthinks.com/img/avy-tuxi-demo.mp4) -
    ビデオ実況
    +
    ビデオ実況 -1. avy-goto-char-timer(Avyの他のジャンプコマンドでもよい)を呼び出す。 +
      + +
    1. avy-goto-char-timer(Avyの他のジャンプコマンドでもよい)を呼び出す。
    2. -2. "ema"とタイプすると"Emacs"にたいするマッチが(他より強調されて)がハイライトされる。 +
    3. "ema"とタイプすると"Emacs"にたいするマッチが(他より強調されて)がハイライトされる。
    4. -3. avy-action-tuxi用のディスパッチキー(ここではC-=にセット)を押下する。 +
    5. avy-action-tuxi用のディスパッチキー(ここではC-=にセット)を押下する。
    6. -4. 候補(ここでは"Emacs"にたいするマッチのいずれか)を選択する。 +
    7. 候補(ここでは"Emacs"にたいするマッチのいずれか)を選択する。
    8. -5. これによりGoogleのEmacsの説明とともにバッファーが生成される。 +
    9. これによりGoogleのEmacsの説明とともにバッファーが生成される。
    10. -6. もう一度avy-goto-char-timerを呼び出す。 +
    11. もう一度avy-goto-char-timerを呼び出す。
    12. -7. "vi"とタイプすると"Vi"にたいするマッチが(他より強調されて)がハイライトされる。これはGoogleの説明が表示されている別のバッファーでのマッチであることに注意。このバッファーへの切り替えは不要。 +
    13. "vi"とタイプすると"Vi"にたいするマッチが(他より強調されて)がハイライトされる。これはGoogleの説明が表示されている別のバッファーでのマッチであることに注意。このバッファーへの切り替えは不要。
    14. -8. avy-action-tuxi用のディスパッチキーを押下する。 +
    15. avy-action-tuxi用のディスパッチキーを押下する。
    16. -9. 候補(ここでは"Vi"にたいするマッチ)を選択する。 +
    17. 候補(ここでは"Vi"にたいするマッチ)を選択する。
    18. -10. これによりGoogleのViの説明とともにバッファーが生成される。 +
    19. これによりGoogleのViの説明とともにバッファーが生成される。
    20. -11. "POSIX"という文字列を選択して、ステップ6-10を繰り返す。 +
    21. "POSIX"という文字列を選択して、ステップ6-10を繰り返す。
    22. -
    + + + @@ -965,7 +1009,7 @@ In this demo I highlight some keywords in a busy LaTeX document, then visit the [avy-embark-demo-2.mp4](https://karthinks.com/img/avy-embark-demo-2.mp4) -
    ビデオ実況
    +
    ビデオ実況 -1. avy-goto-char-timer(Avyの他のジャンプコマンドでもよい)を呼び出す。 +
      + +
    1. avy-goto-char-timer(Avyの他のジャンプコマンドでもよい)を呼び出す。
    2. + +
    3. "Floquet"を含むマッチにフィルタリングするために、"flo"とタイプする。
    4. -2. "Floquet"を含むマッチにフィルタリングするために、"flo"とタイプする。 +
    5. oでavy-action-embarkを実行する。
    6. -3. oでavy-action-embarkを実行する。 +
    7. "Floquet"にたいするマッチからいずれかを選択する。これによりそのマッチにEmbarkが実行される。
    8. -4. "Floquet"にたいするマッチからいずれかを選択する。これによりそのマッチにEmbarkが実行される。 +
    9. Hでembark-toggle-highlightアクションを選択する。
    10. -5. Hでembark-toggle-highlightアクションを選択する。 +
    11. "Parametric"をハイライトするために、1-5を繰り返す。
    12. -6. "Parametric"をハイライトするために、1-5を繰り返す。 +
    13. もう一度avy-goto-char-timerを呼び出す。
    14. -7. もう一度avy-goto-char-timerを呼び出す。 +
    15. 引用キーの中から1つのキーにマッチさせるために、"na"とタイプする。
    16. -8. 引用キーの中から1つのキーにマッチさせるために、"na"とタイプする。 +
    17. oでavy-action-embarkを実行する。
    18. -9. oでavy-action-embarkを実行する。 +
    19. マッチした引用キーを選択する。これによりそのマッチにEmbarkが実行される。
    20. -10. マッチした引用キーを選択する。これによりそのマッチにEmbarkが実行される。 +
    21. Bibファイル(訳注: 文献データベースファイル)をvisitするために、bibtex-actionを選択する(bibtex-actionsパッケージによってeにバインドされている)。
    22. -11. Bibファイル(訳注: 文献データベースファイル)をvisitするために、bibtex-actionを選択する(bibtex-actionsパッケージによってeにバインドされている)。 +
    -
    + -1. avy-goto-char-timerを実行する。 +
  • avy-goto-char-timerを実行する。
  • + +
  • フィルタリングするためにテキスト(ここでは"root")をタイプする。
  • -2. フィルタリングするためにテキスト(ここでは"root")をタイプする。 +
  • oでavy-action-embarkを実行する。
  • -3. oでavy-action-embarkを実行する。 +
  • マッチの中からproject-rootを選択する。これによりそのマッチにたいしてEmbarkが実行される。
  • -4. マッチの中からproject-rootを選択する。これによりそのマッチにたいしてEmbarkが実行される。 +
  • hを押下するとマッチにたいしてEmbarkがdescribe-symbolを実行する。これによりそのマッチの関数にたいするヘルプバッファーがオープンする(これより前の箇所でAvyにヘルプコマンドをバインドしてあるので、そちらを使うこともできるだろう)。
  • -5. hを押下するとマッチにたいしてEmbarkがdescribe-symbolを実行する。これによりそのマッチの関数にたいするヘルプバッファーがオープンする(これより前の箇所でAvyにヘルプコマンドをバインドしてあるので、そちらを使うこともできるだろう)。 +
  • ヘルプバッファーをスクロールするためにC-M-v (scroll-other-window)を押下する。
  • -6. ヘルプバッファーをスクロールするためにC-M-v (scroll-other-window)を押下する。 +
  • もう一度avy-goto-char-timerを呼び出す。
  • -7. もう一度avy-goto-char-timerを呼び出す。 +
  • フィルタリングするためにテキスト(ここでは"proj")をタイプする。
  • -8. フィルタリングするためにテキスト(ここでは"proj")をタイプする。 +
  • oでavy-action-embarkを実行する。
  • -9. oでavy-action-embarkを実行する。 +
  • マッチの中から"project-x"を選択する。これによりそのマッチにたいしてEmbarkが実行される。
  • -10. マッチの中から"project-x"を選択する。これによりそのマッチにたいしてEmbarkが実行される。 +
  • embark-cycleを呼び出して、ターゲットを("poject-x"という名前の)ファイルから("poject-x"という名前の)ライブラリーに変更する。
  • -11. embark-cycleを呼び出して、ターゲットを("poject-x"という名前の)ファイルから("poject-x"という名前の)ライブラリーに変更する。 +
  • hを押下するとproject-xライブラリーにたいしてEmbarkがfinder-commentaryを実行する。これによりコメントが表示されているバッファーがオープンする。
  • -12. hを押下するとproject-xライブラリーにたいしてEmbarkがfinder-commentaryを実行する。これによりコメントが表示されているバッファーがオープンする。 +
  • 前のステップを繰り返して、もう一度"project-x"にたいしてEmbarkを実行する。
  • -13. 前のステップを繰り返して、もう一度"project-x"にたいしてEmbarkを実行する。 +
  • 今度はシンボル"project-x-local-identfier"にたいして前のステップを繰り返す。
  • -14. 今度はシンボル"project-x-local-identfier"にたいして前のステップを繰り返す。 +
  • uでEmbarkのcustomize-variableアクションを選択する。これにより編集project-x-local-identfierにたいするcustomizationバッファーがオープンする。
  • -15. uでEmbarkのcustomize-variableアクションを選択する。これにより編集project-x-local-identfierにたいするcustomizationバッファーがオープンする。 -- - + + + ## 責任の分担 @@ -1125,7 +1175,7 @@ Again, consciously deciding which of the two commands to call every time is a ba [avy-isearch-basic-demo.mp4](https://karthinks.com/img/avy-isearch-basic-demo.mp4) -
    ビデオ実況
    +
    ビデオ実況 -1. C-sでIsearchを開始する。ビデオではM-rでisearch-regexpに切り替えている。 +
      + +
    1. C-sでIsearchを開始する。ビデオではM-risearch-regexpに切り替えている。
    2. + +
    3. 検索するフレーズをタイプする。ビデオでは"-region"で終わるregexpをタイプしている。
    4. -2. 検索するフレーズをタイプする。ビデオでは"-region"で終わるregexpをタイプしている。 +
    5. Isearchのマッチ間のナビゲートはC-s、スクリーンの再センタリングは必要に応じてC-lで行っている。
    6. -3. Isearch のマッチ間のナビゲートはC-s、スクリーンの再センタリングは必要に応じてC-lで行っている。 +
    7. avy-goto-char-timerを呼び出す。候補プールはIsearchのマッチによって限界が定められる。
    8. -4. avy-goto-char-timerを呼び出す。候補プールはIsearchのマッチによって限界が定められる。 +
    9. 以前と同様、Isearchのいずれかのマッチを選んでジャンプする。
    10. -5. 以前と同様、Isearchのいずれかのマッチを選んでジャンプする。 +
    -
    + -この記事は[Embarkの使用方法に関する記事](https://karthinks.com/software/fifteen-ways-to-use-embark)のアイデアと関連しているので、主にアクションについて記述されている。しかしAvyはモジュールの組み合わせにより構成されているので、フィルター -> 選択によって機能するさまざまなアプリケーションの広い範囲に適正がある。シリーズ第2弾ではAvyのAPI、および独自コマンドを作成する方法についても掘り下げていくつもりだ。 +この記事は[Embarkの使用方法に関する記事](https://karthinks.com/software/fifteen-ways-to-use-embark)のアイデアと関連しているので、主にアクションについて記述されている。しかしAvyはモジュールの組み合わせにより構成されているので、フィルター -> 選択によって機能するさまざまなアプリケーションの広い範囲に適性がある。シリーズ第2弾ではAvyのAPI、および独自コマンドを作成する方法についても掘り下げていくつもりだ。 + +# 脚注 [^1]: 技術的には候補の並べ替えも含まれる。この内訳ではフィルターとしてひとまとめにしてある。 diff --git a/docs/packages/FifteenWaysToUseEmbark.md b/docs/tips/fifteen-ways-to-use-embark.md similarity index 91% rename from docs/packages/FifteenWaysToUseEmbark.md rename to docs/tips/fifteen-ways-to-use-embark.md index c7b9e4c..52ba412 100644 --- a/docs/packages/FifteenWaysToUseEmbark.md +++ b/docs/tips/fifteen-ways-to-use-embark.md @@ -1,4 +1,6 @@ --- +layout: page +author: ayatakesi title: Embarkを使う15の方法 tags: - Emacs @@ -13,7 +15,7 @@ ignorePublish: false これはKarthik Chikmagalurさんによって記述された記事を日本語に翻訳した記事であり、記事の所有権と著作権はKarthik Chikmagalurさんに帰属します。 -元の記事: [Fifteen ways to use Embark | Karthinks](https://karthinks.com/software/fifteen-ways-to-use-embark/) +元の記事: [Fifteen ways to use Embark \| Karthinks](https://karthinks.com/software/fifteen-ways-to-use-embark/) -1. 2つ以上のウィンドウをオープンしてace-windowを呼び出す。 -2. ?を押下してディスパッチメニューを立ち上げる。 -3. ウィンドウを水平方向に分割するためにディスパッチキー(ここではv)を押下する。 -4. 分割したいバッファーに応じたace-windowキー(ここではe)を押下する。 -5. ステップ1と2を繰り返す。 -6. ウィンドウを垂直方向に分割するためにディスパッチキー(ここではs)を押下する。 -7. 分割したいバッファーに応じたace-windowキー(ここではw)を押下する。 +
      - +
    1. 2つ以上のウィンドウをオープンしてace-windowを呼び出す。
    2. +
    3. ?を押下してディスパッチメニューを立ち上げる。
    4. +
    5. ウィンドウを水平方向に分割するためにディスパッチキー(ここではv)を押下する。
    6. +
    7. 分割したいバッファーに応じたace-windowキー(ここではe)を押下する。
    8. +
    9. ステップ1と2を繰り返す。
    10. +
    11. ウィンドウを垂直方向に分割するためにディスパッチキー(ここではs)を押下する。
    12. +
    13. 分割したいバッファーに応じたace-windowキー(ここではw)を押下する。
    14. + +
    + + -1. ファイル、ブックマーク、バッファーの選択を要するコマンド(switch-to-bufferとか)を実行する。 -2. 選択したらembark-actを実行する。 -3. oでmy/embark-ace-actionを実行する(以下参照)。 -4. バッファーを配置したいウィンドウを選択する。 -5. またはvやb(aw-dispatch-alistを参照)で既存のウィンドウを分割してウィンドウを選択、新たに分割されたウィンドウにバッファーを表示する。 +
      +
    1. ファイル、ブックマーク、バッファーの選択を要するコマンド(switch-to-bufferとか)を実行する。
    2. +
    3. 選択したらembark-actを実行する。
    4. +
    5. omy/embark-ace-actionを実行する(以下参照)。
    6. +
    7. バッファーを配置したいウィンドウを選択する。
    8. +
    9. またはvb(aw-dispatch-alistを参照)で既存のウィンドウを分割してウィンドウを選択、新たに分割されたウィンドウにバッファーを表示する。
    10. +
    - + -1. ファイルの選択を要する任意のコマンド(find-file-other-windowとか)を実行する。 -2. ファイルを選択してembark-actを実行する。 -3. cでcopy-fileアクションを実行する。Embarkにはこれ用のキーがあるが、ここでM-x copy-fileの実行も可。 -4. 目的となるパスへ移動する。ビデオではconsult-dirを使って、わたしのブックマークからリモートにあるパスに一時的に切り替えている。 -5. RETを押下してファイルをコピーする。コピー先での名前を入力できる。 +
      - +
    1. ファイルの選択を要する任意のコマンド(find-file-other-windowとか)を実行する。
    2. +
    3. ファイルを選択してembark-actを実行する。
    4. +
    5. ccopy-fileアクションを実行する。Embarkにはこれ用のキーがあるが、ここでM-x copy-fileの実行も可。
    6. +
    7. 目的となるパスへ移動する。ビデオではconsult-dirを使って、わたしのブックマークからリモートにあるパスに一時的に切り替えている。
    8. +
    9. RETを押下してファイルをコピーする。コピー先での名前を入力できる。
    10. + +
    + + +
      -1. ファイルの選択を要する任意のコマンド(find-file-other-windowとか)を実行する。 -2. ファイルを選択してプレフィックス引数とともにembark-actを実行する。つまりC-.にembark-actをバインドしている場合にはC-u C-.。 -3. cでcopy-fileアクションを実行する。Embarkにはこれを行うキーが用意されているがM-x copy-fileでも可。 -4. 目的のパスへ移動する。ビデオではconsult-dirを使って、わたしのブックマークからリモートにあるパスに一時的に切り替えている。 -5. RETを押下してファイルをコピーする。コピー先での名前を入力できる。 -6. 操作の前に行っていたfind-file-other-windowプロンプトへの入力を継続する。 +
    1. ファイルの選択を要する任意のコマンド(find-file-other-windowとか)を実行する。
    2. +
    3. ファイルを選択してプレフィックス引数とともにembark-actを実行する。つまりC-.にembark-actをバインドしている場合にはC-u C-.。
    4. +
    5. cでcopy-fileアクションを実行する。Embarkにはこれを行うキーが用意されているがM-x copy-fileでも可。
    6. +
    7. 目的のパスへ移動する。ビデオではconsult-dirを使って、わたしのブックマークからリモートにあるパスに一時的に切り替えている。
    8. +
    9. RETを押下してファイルをコピーする。コピー先での名前を入力できる。
    10. +
    11. 操作の前に行っていたfind-file-other-windowプロンプトへの入力を継続する。
    12. - +
    + + -1. ファイルの選択を要求する任意のコマンド(find-fileとか)を実行する。 -2. consult-dirで離れたディレクトリーに切り替える。 -3. ファイルを選択して、プレフィックス引数とともにembark-actを実行する。つまりC-.にembark-actをバインドしている場合にはC-u C-.。 -4. &を押下してasync-shell-commandアクションを実行する。Embarkのキーマップにはこれを行うためのキーがあるがM-x async-shell-command、あるいはasync-shell-commandのデフォルトのキーバインディング(M-&)でも実行可。 -5. プロンプトにコマンドを入力する。ファイル名はすでに用意されている。ファイルについてさらに情報を得るために、シェルコマンドfileを使用した。 -6. RETを押下してコマンドを実行して、find-fileの入力プロンプトにリターンする。 +
      - +
    1. ファイルの選択を要求する任意のコマンド(find-fileとか)を実行する。
    2. +
    3. consult-dirで離れたディレクトリーに切り替える。
    4. +
    5. ファイルを選択して、プレフィックス引数とともにembark-actを実行する。つまりC-.embark-actをバインドしている場合にはC-u C-.
    6. +
    7. &を押下してasync-shell-commandアクションを実行する。Embarkのキーマップにはこれを行うためのキーがあるがM-x async-shell-command、あるいはasync-shell-commandのデフォルトのキーバインディング(M-&)でも実行可。
    8. +
    9. プロンプトにコマンドを入力する。ファイル名はすでに用意されている。ファイルについてさらに情報を得るために、シェルコマンドfileを使用した。
    10. +
    11. RETを押下してコマンドを実行して、find-fileの入力プロンプトにリターンする。
    12. + +
    + + -1. ファイルの選択を要求する任意のコマンドを実行する。わたしはファイルシステム上でroot所有のファイルをlocateするためにconsult-locateを使用した。 -2. ファイルを選択してプレフィックス引数とともにembark-actを実行する。つまりC-.にembark-actをバインドしている場合にはC-u C-.。 -3. Sでsudo-find-fileアクションを選択した。注意: このアクションをキーマップに追加する必要があるだろう(以下参照)。かわりにM-x sudo-find-fileやそれのグローバルバインディングの実行でも可。 +
      - +
    1. ファイルの選択を要求する任意のコマンドを実行する。わたしはファイルシステム上でroot所有のファイルをlocateするためにconsult-locateを使用した。
    2. +
    3. ファイルを選択してプレフィックス引数とともにembark-actを実行する。つまりC-.embark-actをバインドしている場合にはC-u C-.
    4. +
    5. Ssudo-findアクションを選択した。注意:このアクションをキーマップに追加する必要があるだろう(以下参照)。かわりにM-x sudo-find-fileやそれのグローバルバインディングの実行でも可。
    6. + +
    + + わたしはconsult-locateをコマンドを実行したが、前の例と同じようにファイルの入力を求めるコマンドなら何でも機能するはずだ。わたしはinitファイルからもはや来歴不明なスニペットを流用したが、sudoプログラム向けのsudo-editパッケージもある。 @@ -898,6 +921,8 @@ Despite what these examples suggest, I estimate that I use less than a third of --> これらの例が示唆する事実にも関わらず、おそらくわたしはEmbarkの能力の3分の1も使用できていないのだろう。たとえそうであったとしても、いつでもアクションの変更したり連鎖させられるので、経験と勘によるEmacsの操縦を可能にしてくれるのだ。2つ目の予期せぬ利点として、わたしが決して使うことがなかったであろうコマンドやリストを、抵抗なく利用できるようになることだ。transpose-regionsやapply-macro-to-region-linesのようなコマンド、あるいはdired、ibuffer、package-menuのような機能を使わなければアクセスできなかったカスタマイズされたリストをスムーズに利用できるようになった[^4]。このようなバッファーを素早く作成できるので、diredやibufferを使う方法を知ることによって、数倍の利益が得られるようになる。これらのような機能とミニバッファーとの対話やテキストリージョンをシームレスに構成する際に、Emacsに組み込まれた無数のコマンドやライブラリーのパワーを増幅するレバーとして振る舞うのがEmbarkなのである。 +# 脚注 + [^1]: もちろんHelmとEmbarkはどちらも自身の役割を良好にこなすよう事前に調整されている訳だが。