Dynalist Mover for VS Codeは、Visual Studio Code上でテキストやアウトラインの塊をDynalistっぽく上下に動かすための拡張機能です。Obsidian版Dynalist Moverに慣れすぎて、VSCodeでの作業中にも同様の操作をしたい場面が増えたため、VSCode版を作成しました。これでMarkdown以外も動かせます。
VSCodeのMarketplaceで公開しました。拡張機能からインストールできます。
機能 | Features
- 選択した複数行をまとめて上または下に移動できます。
- 親のリスト項目を動かすと、インデントされた子項目もまとめて移動できます。
- 親子構造を維持したまま移動できます。親項目を動かすと、インデントされた子項目も一緒に移動します。
- 移動後も選択範囲を維持するため、同じショートカットを続けて押して位置を調整できます。
- 箇条書きだけでなく、通常の段落、Markdown要素、任意のテキストブロックで使えます。
- 選択中の行を淡い青色でハイライトし、どの範囲を動かしているかを確認しやすくします。
Markdown以外でも動くけど、基本はMarkdownやテキストドキュメント系用を想定しています。
使い方 | Usage
- 移動したい行にカーソルを置くか、複数行を選択します。
Ctrl+Shift+Alt+↑/Ctrl+Shift+Alt+↓を押します。macOSではCmd+Shift+Alt+↑/Cmd+Shift+Alt+↓です。- コマンドパレットから使う場合は、
Dynalist Mover: Move selected lines upまたはDynalist Mover: Move selected lines downを実行します。
既定のショートカットは、VSCode標準のショートカットと衝突しにくい組み合わせにしています。通常の1行移動としても使えますが、親項目にインデントされた子項目がある場合は、子項目もまとめてひとつのブロックとして移動します。
Alt+↑/↓ で使いたい場合
Alt+↑/↓ はVSCode標準の Move Line Up/Down に割り当てられているため、使いたい場合は個人用のキーバインドで上書きします。コマンドパレットから Preferences: Open Keyboard Shortcuts (JSON) を開き、次の設定を追加します。
[
{ "key": "alt+up", "command": "dynalistMover.moveLinesUp", "when": "editorTextFocus && !editorReadonly" },
{ "key": "alt+up", "command": "-editor.action.moveLinesUpAction", "when": "editorTextFocus && !editorReadonly" },
{ "key": "alt+down", "command": "dynalistMover.moveLinesDown", "when": "editorTextFocus && !editorReadonly" },
{ "key": "alt+down", "command": "-editor.action.moveLinesDownAction", "when": "editorTextFocus && !editorReadonly" }
] - で始まる行は、VSCode標準の行移動コマンドの割り当てを外すための設定です。別のキーに割り当てたい場合は、Keyboard Shortcuts UIで「Dynalist Mover」を検索して変更できます。
Ctrl+↑/↓ で使いたい場合
Dynalistに近い操作感にしたい場合は、Ctrl+↑/↓ に割り当てることもできます。VSCodeではエディタの1行スクロールと衝突するため、次のように個人用キーバインドで上書きします。
[
{ "key": "ctrl+up", "command": "dynalistMover.moveLinesUp", "when": "editorTextFocus && !editorReadonly" },
{ "key": "ctrl+up", "command": "-scrollLineUp", "when": "editorTextFocus" },
{ "key": "ctrl+down", "command": "dynalistMover.moveLinesDown", "when": "editorTextFocus && !editorReadonly" },
{ "key": "ctrl+down", "command": "-scrollLineDown", "when": "editorTextFocus" }
] この場合、エディタ内の1行スクロールは使えなくなりますが、通常の編集操作中はDynalist Moverだけが反応するようになります。
制作背景 | Background
Obsidianプラグインを作ってDynalistっぽい動きを使えるようにしたら、VSCodeでも同じように動かしたくなったので作りました。思ったよりDynalist依存が強かったようです。