rcmdnk's blog

Modern Vim: Craft Your Development Environment with Vim 8 and Neovim (English Edition)

Vimのプラグイン管理プラグインdin.vimを使っていて、 新たなプラグインを入れようとしたところプラグインのコピーに失敗して 上手くセットアップできなかったときに対する対処法。

起こった問題

というプラグインを入れようと

call dein#add('sheerun/vim-polyglot')

.vimrcに追加して

:call dein#recache_runtimepath()

を実行したところ

[dein] copy command failed.
[dein] could not make way for new regular file: test
[dein] rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.
c(1196) [sender=3.1.2]
[dein] cmdline: rsync -a -q --exclude '/.git/' '/home/user/.vim/dein/repos/github.com/mattn/weba
pi-vim/' '/home/user/.vim/dein/repos/github.com/sheerun/vim-polyglot/' '/home/user/.vim/dein/.
cache/init.vim/.dein'

というエラーが出てしまいました。

sheerun/vim-polyglotを外すと出ません。

原因

上で起こった問題は、 sheerun/vim-polyglotにはtestというファイルが トップディレクトリにあり、 一方で、Shougo/dein.vim含め、複数のプラグインがtestという ディレクトリをトップディレクトリ下に持っていることが原因でした。

deinではdeinのインストールディレクトリを~/.vim/deinとすると ~/.vim/dein/.cache/init.vim/.dein/というディレクトリに 各プラグインの中身をコピーしてruntimepathに指定して読み込んでいます。

この際に、他のプラグインからtestディレクトリがコピーされた後に、 そこにファイルとしてtestをコピーしようとしてエラーを出している状態。

解決法

sheerun/vim-polyglotを加える際に

call dein#add('sheerun/vim-polyglot', {'merged': 0})

とすることで解決できます。

mergedオプションを0にすることでconflictが起きたときに無視してくれるのでエラーを回避できます。 testファイル自体はプラグイン動作には直接関係ないのでこれでOK。

問題内容はちょっと違いますが以下も同じ様な問題。

Copy fails when file and folder with same name · Issue #362 · Shougo/dein.vim

Sponsored Links
Sponsored Links

« Vim (Neovim)起動時にPythonの仮想環境を準備する SwitchBot用に充電池購入 »