When I open a file for which Vim sees that there is a swap file present, it warns me and gives me some options, like "[A]bort" and "[E]dit anyways". However, one option it used to show me but no longer does is to "[D]elete" the swap file. How can I get it to show this option again?
As posted on the vi stack exchange site by Martin Tournoij:
The "Delete it" option isn't displayed if the Vim process is still running; I can't find this documented anywhere but I looked it up in the source code; from memline.c
, line 4512 (slightly simplified):
do_dialog(
[..]
process_still_running
? (char_u *)_("&Open Read-Only\n&Edit anyway\n&Recover\n&Quit\n&Abort") :
(char_u *)_("&Open Read-Only\n&Edit anyway\n&Recover\n&Delete it\n&Quit\n&Abort"), [..]);
The swap file embeds the process ID which created it, and if a process with that PID still exists it considers the process to be "running".
The swap message should display this information:
E325: ATTENTION
Found a swap file by the name "~/.vim/tmp/swap/swapy.swp"
owned by: martin dated: Fri Sep 8 22:13:35 2017
file name: ~martin/swapy
modified: no
user name: martin host name: arch.arp242.net
process ID: 17355 (still running)
While opening file "swapy"
dated: Fri Sep 8 22:13:35 2017
Note the process ID: 17355 (still running)
line.
The most likely scenario is that you have another Vim instance running somewhere :-) You could kill
it if you can't find it.
There is a small chance that the PID got re-used by another process though, in which case your only option is to quit Vim, manually remove the swap file, and restart it again:
$ rm ~/.vim/tmp/swap/swapy.swp