VS Codeでファイル名と行数をコピーできる拡張機能を作成した

最近、GitHub Copilot や Roo Code など、AI を使ってコードを書くことが増えてきました。
プロンプトでなるべく具体的な指示をすることで精度が向上します。
例えば、自分は以下のように書くことが多いです。

「ファイルAのn行目の関数Bを(使用/修正/参考に)してください」

しかし、このプロンプト文を書くのが地味に面倒でした。自分は開発に Visual Studio Code (VS Code) を使用していますが、
ファイル名をコピペ→行数を入力→関数名等をコピペ
のように書いていました。

そこで、ファイル名と行数をまとめてコピーできる拡張機能を作成しました。

作成した拡張機能

実装は非常に単純で、以下のようにファイル名と行数を合わせてクリップボードにコピーしています。

function getTextToCopy(relativePath: string, selection: vscode.Selection, selectedText: string): string {
    if (!selectedText) {
        // テキストが選択されていない場合:カーソル位置の行番号のみ
        const currentLine = selection.active.line + 1; // VSCodeの行番号は0ベースなので+1
        return `${relativePath} (line ${currentLine})`;
    }

    // テキストが選択されている場合:選択範囲の行番号を取得
    const startLine = selection.start.line + 1;
    const endLine = selection.end.line + 1;

    if (startLine === endLine) {
        // 単一行の場合
        return `${relativePath} (line ${startLine}) ${selectedText}`;
    }

    // 複数行の場合
    return `${relativePath} (lines ${startLine}-${endLine})
${selectedText}`;
}

できること

Cmd+Alt+C (Mac) / Ctrl+Alt+C (Windows/Linux) で、以下のようにファイル名と行数をコピーできます。

  • テキストを選択していない場合
    カーソル位置のファイル名と行数のみをコピー

    src/extension.ts (line 15)
    
  • テキストを選択している場合
    選択したテキストとともに、ファイル名と行数をコピー

    src/extension.ts (line 15) editor
    
  • 複数行選択している場合
    範囲を含む行数情報をコピー

    src/extension.ts (lines 15-17)
    const editor = vscode.window.activeTextEditor;
    if (!editor) {
        return;
    }
    

おわりに

この拡張機能を使用してから、プロンプトを書く手間が減りました。細かい指示を書くことを面倒に感じることが少なくなり、結果としてより正確に AI に指示を出すようになり、開発効率が向上しています。
ぜひ一度お試しください。