vimの奇妙なエラー

nvimでファイルを編集をしようとすると、swapファイルを作成できない、というような一見よくわからないエラーが出たことがあった。

奇妙なエラー

#aaaaa~aaaaは開こうとした任意のファイル
E303: Unable to open swap file for "aaaaa~aaaa", recovery impossible 

普通のテキストファイルなのに開けない。 ファイルのpermissionは問題なし。 swapディレクトリの指定も問題なし。 他のファイルであればnvimで開ける。 不思議なことに、開けなかったファイルを他のパスに移動させると開ける。

原因

結局は、ファイルの名前が長すぎたことが原因だった。 直接touchで長い名前のファイルを作ろうとすると明確なエラーが出るのだが、nvimだと名前が長いことを指摘してくれない。

touch "aaaaa~aaaa"              
touch: cannot touch 'aaaaa~aaaa': Filename too long

swapファイルは、パスを含めるため、パスによりswapファイル名は長くなったり、短くなったりする。 その関係で、このパスだと開けるし、別のパスでは開けないということが起こったようだ。

ちなみに、もともとのファイル自体はwindowsで作成していた。 OSによって対応できるファイル名の上限は違うので、windowsでは開けても、linuxでは開けないということだったらしい。

参照