当文件太长时,Vim的undofile无法工作。

3
我使用以下vim持久化撤销设置,这一直在这里发挥作用。
set undofile
set undodir=~/.vim/undodir

然而,现在我面临一个问题,当撤销文件变得太长时,需要注意的是,undofile 的名称采用绝对路径形式,例如%home%user%directory%...%directory%file,这意味着如果您的文件名很长,位于大型路径目录下或两者兼有,则达到 Linux 文件名最大长度的机会将更高。在我的情况下,当尝试保存打开的文件时,它会引发错误:
E828: Cannot open undo file for writing: /home/user/.vim/undodir/%home%user%workspace%%app%javascript%packs%domains%components%grid%column_cell_factory%inspection_cell_factory.jsx

我该如何管理才能使我的持久撤销功能在这些情况下继续工作?
更新
这不是我的真实文件名,我有意删除了用户名和其他个人信息,最终它们并不相关,也不包含任何特殊字符。文件长度为160,整个路径与应存储的文件夹长度为189。

整个路径只有138个字符而已。什么样的文件系统会对此有问题呢? - undefined
@thatotherguy 这不是真实的路径,我删除了真实的用户名和其他信息。我将使用真实长度编辑问题。 - undefined
Linux的限制通常是文件名255字节,路径4096字节。你确定是长度导致它失败了吗? - undefined
@thatotherguy 很不幸,是的,我甚至尝试了另一个文件,只包含160个字符的aaaaa作为文件名,但也无法工作,并且使用99个字符长的文件成功创建了一个143个字符长的undofile。超过这个长度后,我遇到了相同的错误。另外,我还注意到尝试创建一个144个字符长的文件时,在除了vim之外的任何其他编辑器中都会以只读模式打开它。看起来问题出在我的操作系统上,无法保存如此长的文件。有什么想法吗? - undefined
我尝试设置NAME_MAX,并使用getconf NAME_MAX /得到了255,但是对于getconf NAME_MAX ~/和其他在$HOME下的文件夹,它是143。 - undefined
我也在关注这个问题的支持,https://vi.stackexchange.com/questions/26751/vim-undofile-does-not-work-when-file-is-too-long?noredirect=1#comment47633_26751。我们发现可能是由于我的加密文件系统位于HOME目录下。 - undefined
1个回答

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接