LunarVimユーザーとして、私はNeovimでcopilot.luaを頻繁に利用しています。しかし、マルチラインのサポートに関してはいくつかの課題がありました。もっというとどこかのタイミングでCopilotが一行ずつしかサジェストされなくなりました。この問題に対して、一部のコードを修正することで、この課題を解決する方法を見つけました。
問題点
Copilot.lua(Copilot.vimも同様に)の中のagent.js
には、マルチライン入力の停止点を示すコード h.stop=["\n"]
が含まれています。この設定により、一部の場面でマルチラインサポートが期待通りに動作しないことがありました。
解決方法
私が採用した方法は、このh.stop=["\n"]
をh.stop=["\n\n\n"]
に変更することです。この小さな変更により、マルチラインのサポートが大幅に向上します。
以下のコマンドを実行することで、この変更を簡単に適用することができます。MAC でのsed 利用なのでこのようなコマンドになります。各環境で合わせていただきたいです。
sed -i '' 's/h\.stop=\["\\\\n"\]/h\.stop=\["\\\\n\\\\n\\\\n"\]/' ~/.local/share/lunarvim/site/pack/lazy/opt/copilot.lua/copilot/dist/agent.js
変更が正しく適用されたかどうかを確認するには、以下のコマンドを実行します。
grep -o '.\{30\}h.stop=\[.\{30\}' ~/.local/share/lunarvim/site/pack/lazy/opt/copilot.lua/copilot/dist/agent.js
結果
この変更を適用した後、マルチラインサポートが明らかに向上しました。興味があれば最初に紹介したIssue に動画が添付されていたのでご覧ください。
LunarVimとCopilot.luaの組み合わせは非常に強力ですが、小さな調整によりさらに快適に使うことができます。このハックが他のユーザーにも役立つことを願っています。