HN 日本語サマリー

← 一覧へ戻る
プログラミング

Lazydraw: 図やスケッチを描くためのターミナルASCIIエディタ

Lazydraw: Terminal ASCII editor for drawing diagrams and sketches (github.com)

15 pointsby masterpos3 コメント

要約

Lazydrawは、ターミナル上で図やスケッチを素早く描画できるASCIIエディタです。テキストファイルへのエクスポートやクリップボードへのコピー機能も備えています。Bunランタイム上で動作し、インストールや使用方法、豊富なキーバインディングやカスタマイズオプションが提供されています。

全文翻訳

lazydraw lazydrawは、テキストファイルへのエクスポートやクリップボードへのコピーオプションを備えた、素早い図やスケッチを描くためのターミナルASCIIエディタです。 demo.mp4 謝辞 ASCIIFlow by Lewis Hemens: 元祖であり、lazydrawがターミナルで実現しようとしているものです。 termDRAW by Ben Vinegar: このクラスのエディタがターミナルで可能であることを示し、レンダリングループのアプローチを形成しました。 OpenTUI by SST: フロントエンド全体が構築されているターミナルUIエンジンです。 インストール lazydrawはBunランタイム上で動作するため、Bun 1.3以降をインストールする必要があります。マウスサポートのあるターミナルも必要です。 bun install -g lazydraw lazydraw その後lazydrawコマンドが見つからない場合は、BunのグローバルbinディレクトリがPATHに含まれていません。シェルプロファイルに追加してください: export PATH="$HOME/.bun/bin:$PATH" npmでも同様にインストールでき、通常はすでにPATHにある場所に配置されます: npm install -g lazydraw または、インストールをスキップして直接実行することもできます: bunx lazydraw herdr内 lazydrawはherdrプラグインマニフェストを同梱しているため、作業中のペインの右側に分割されたペインとしてマルチプレクサ内に配置できます: herdr plugin install mpospirit/lazydraw インストール手順ではクローン内でbun install --productionを実行するため、BunがPATHにある必要があります。プラグインマニフェストは独自のキーバインディングを宣言できないため(herdrがその領域を所有します)、これを自身のconfig.toml(herdrの設定、または~/.config/herdr/config.tomlから開けます)に追加し、herdr server reload-configを実行してください: [[keys.command]] key = "prefix+ctrl+d" type = "plugin_action" command = "mpospirit.lazydraw.open" description = "open lazydraw" Ctrl+B Ctrl+Dでキャンバスが右側分割で開きます。キーを上記で変更して再バインドしてください。 lazydrawを実行 # 最後の描画を開く lazydraw # 名前で描画を開くか作成する lazydraw architecture # ファイルからインポートする lazydraw ./diagram.ld.json lazydraw --import notes.txt UIを開かずに描画をエクスポートする: lazydraw export architecture --basic --comment hashes --fenced -o diagram.txt lazydraw list ツールバー ≡ │ box select arrow line text eraser │ export │ ⟲ ⟳ │ ⚙ │ help ≡ 描画を切り替える; 新規作成、名前変更、フォーク、インポート、クリア、削除 box コーナーからコーナーへドラッグ select ドラッグしてボックスを選択; ボックスの内部をドラッグして、アタッチされた矢印と共に移動させる arrow / line ドラッグして開始から終了へ; Shiftキーを押すか、ドラッグ中にfキーを押すとエルボを反転させる text クリックして入力; Enterで新しい行を開始、Escで終了 eraser ドラッグして消去; 接触した線から切り離す export 拡張または基本文字、11種類のコメントスタイル、Markdownフェンス、プレビュー、コピー、保存 ⟲ / ⟳ 元に戻す / やり直し ⚙ グリッドスタイル(格子、チェッカー、ドット、オフ)、テーマ(ターミナル+10 IDEテーマ)、選択時のコピー、再中央配置 help アクティブなツールのヘルプ、およびショートカットリスト キー キー アクション 1–6, Alt+1–Alt+6 ツールを切り替える r v a l t e ツールを切り替える: box, select, arrow, line, text, eraser Ctrl+Z / Ctrl+Y 元に戻す / やり直し (Ctrl+Shift+Zはkittyキーボードプロトコルを持つターミナルではやり直しも行います) Ctrl+C Ctrl+X Ctrl+V 選択範囲のコピー、カット、ペースト (ブラケットペーストも機能します) Del / 矢印キー 選択範囲を消去または微調整する ホイール、Shift+ホイール 垂直/水平にパンする Space+ドラッグ、中ドラッグ フリーにパンする Ctrl+O Ctrl+E Ctrl+S ファイル / エクスポート / 保存 今すぐ?, Esc ヘルプ; ポップオーバーを閉じる、ドラッグをキャンセルする、選択を解除する Ctrl+Q 2回終了; 最初のプレスでプロンプトが表示され、3秒以内に2回目のプレスで終了します (描画は自動保存されます) テキストモードでは、数字、q、?を含む印刷可能なキーでテキストが入力されます。選択によってクリップボードにコピーすることもできます — settings → copy on select(デフォルトはオフ)。 ファイル 描画: ${XDG_DATA_HOME:-~/.local/share}/lazydraw/drawings/<name>.ld.json 設定: ${XDG_CONFIG_HOME:-~/.config}/lazydraw/config.json 描画は変更後500ミリ秒ごとに自動保存され、終了時にも再度保存されます。 ターミナルの注意点 tmux: set -g mouse on が必要です。OSC 52によるコピーには set -g set-clipboard on が必要です。 macOS: Alt+数字は「Option as Meta」が必要です(または数字のみを使用)。 色: デフォルトのターミナルテーマは、ターミナル自体のパレット(OSC 10/11/4)を読み込み、背景、テキスト、ANSIカラーを適用するため、lazydrawは透過してターミナルの外観に合わせます — settings → themeには10種類のIDEテーマ(dracula, nord, tokyo-night, catppuccin, one-dark, gruvbox, monokai, night-owl, solarized-dark, github-light)もあります。カラークエリに応答しないターミナルはnordにフォールバックします。 グリッド: デフォルトの格子スタイルは、各空のセルに🭼 (U+1FB7C) を描画し、背景からテキストカラーに向かって7%の色合いで薄く表示されます。ターミナルでセルエッジの細線としてレンダリングされない場合は、設定でチェッカーに切り替えてください。 開発 bun install bun start # ソースから実行 bun test # 単体テスト、フィクスチャテスト、エンドツーエンドテスト bun run typecheck bun run build # dist/lazydraw にスタンドアロンバイナリが作成されます src/core はターミナルコードを含まないピュアTypeScriptです。その描画ロジック(グリフ接続、スナップ、線ルーティング、ボックス/線/選択/移動ツール、エクスポートラッパー)はASCIIFlowのclient/から移植されています。 src/tui はOpenTUIフロントエンドです: キャンバス、ツールバー、ポップオーバー、ダイアログを描画するフルスクリーンサーフェスです。 test/fixtures/asciiflow には、ASCIIFlow自身のコードを通じてtest/scenarios/asciiflow.jsonを再生してキャプチャされたゴールデン出力が含まれています。それらを再生成するには: git clone https://github.com/lewish/asciiflow /tmp/asciiflow && (cd /tmp/asciiflow && bun install) bun run fixtures /tmp/asciiflow test/upstream は、小さな互換性シムを通じて、ASCIIFlow自身の仕様ファイルをlazydrawのコアに対して実行します。