Hi,
Is it possible to change the name of the swap file that Vim uses?
I have just started using a centralized location for swapfiles with the
'directory' option. However, I am running into a problem of name space
collision, or lack of same.
Often I edit files with the same name in different directories. Vim allows
this and has no problem creating two different swap files in the same dir.
However, this can cause a problem in a crash.
Example:
1) editing /a/x.txt and /b/x.txt (directory set to .../swap)
2) vim creates .../swap/x.txt.swp (for /a/x.txt)
and .../swap/x.txt.swo (for /b/x.txt)
3) normally this is fine and vim tracks which swap file is for
which file.
4) vim crash (for whatever reason)
5) now we try to edit /a/x.txt and vim sees x.txt.swp and prompts to
recover, good as expected.
6) We save the file and delete x.txt.swp
7) now we edit /b/x.txt, vim looks in .../swap and does not see
x.txt.swp (it does not know to look for x.txt.swo which is the
correct swap for the file being edited) and happily lets you
edit the corrupted file <-- FAIL
What I would like to do is create a function to prepend a dir "hash" to
the name of the swap file so that even in the scenario above the files
would have unique swap file names and this problem would be averted.
My idea is to use the first letter of each segment of the path of the
file prepended to the swap file name (ex: swap files from above would be
a_x.txt.swp and b_x.txt.swp, editing /foo/bar/baz.txt would use the swap
file fb_baz.txt.swp) While fairly simplistic this would resolve the
problem in most cases.
Before I start wring this function, I want to know if it is even possible
to change the name of the swap file. Also, ideally I would want to keep
the original vim functionality of .swp .swo .swn .swm ... for reediting
the same file.
Thanks,
Matt
From VIM's man-page:
By setting the 'directory' option you can place the swap file in
another place than where the edited file is.
Advantages:
- You will not pollute the directories with ".swp" files.
Disadvantages:
- You can get name collisions from files with the same name but in
different directories (although Vim tries to avoid that by
comparing the path name).
No comments:
Post a Comment