ottijp blog

CopilotChat.nvimでセットされるlinebreakをnolinebreakに戻す方法

  • 2025-04-08

nvimでGitHub Copilotを使うために,CopilotC-Nvim/CopilotChat.nvimを利用しています.

どうやらcopilot-chatウィンドウではlinebreakになっていて,GitHub Copilotと日本語でやり取りした場合に改行が望ましくなかったので, nolinebreakになるように工夫してみました.

問題

FizzBuzz実装の一部を/EXPLAINしてもらうと,このように表示されました.

L7やL9において,日本語の途中で改行されず,コードの途中のスペースで改行されてしまっています.読みにくいです.

原因

CopilotChat.nvimがvim.wo[self.winnr].linebreak = trueしているためでした.

cf. https://github.com/CopilotC-Nvim/CopilotChat.nvim/blob/2b5c81f688a92a1d24fd03271e6810ced45ede52/lua/CopilotChat/ui/chat.lua#L341

解決方法

CopilotChat.nvimには,linebreakを制御できる設定は持っていないようでした. もしかすると日本語でvimを使うときにlinebreakをうまく機能させる方法があるのかもしれませんが, 私の環境では基本的にnolinebreakで使っていて,nvimのデフォルトもoffのようだったので, CopilotChat.nvimがセットしたlinebreaknolinebreakに戻すアプローチで解決しました.

プラグインマネージャにはDein.vimを使っています.私のdein.tomlの一部抜粋が以下です.

[[plugins]]
repo = 'CopilotC-Nvim/CopilotChat.nvim'
if = 'has("nvim")'
depends = ['github/copilot.vim', 'nvim-lua/plenary.nvim']
hook_add = '''
lua << EOF
require('CopilotChat').setup {

(中略)

}
EOF

" revert linebreak that is set by this plugin
augroup CopilotChatSettings
  autocmd!
  autocmd BufWinEnter copilot-chat setlocal nolinebreak
augroup END

nnoremap <leader>cc :CopilotChatToggle<CR>
vnoremap <leader>cc :CopilotChat<CR>
'''

CopilotChat.nvimのウィンドウ(copilot-chat)でnolinebreakにするautocmdを定義しました.

これで,変な部分で改行されなくなりました!


© 2025, ottijp