如何轻松删除放置在另一个目录(vim)中的交换文件?
我在vim中打开了7个文件。意外崩溃并重新加载会话后,每个文件都会给出如何轻松删除放置在另一个目录(vim)中的交换文件?,vim,Vim,我在vim中打开了7个文件。意外崩溃并重新加载会话后,每个文件都会给出E325:注意说明文件比交换文件更新!我不记得这些文件是如何比原来的交换文件更新的,但现在这并不重要,因为我想学习如何处理这种情况 我认为,如果交换文件是沿着文件本身放置的(例如.filename.swp在文件名旁边),那么解决方案会很简单。因为我可以通过::删除它!rm.%.swp 但是,我更改了交换文件的默认目录,它现在设置为目录=~/.vim/tmp/swp/。所以问题是如何获得交换文件的完整路径名。例如: vim /h
E325:注意
说明文件比交换文件更新!我不记得这些文件是如何比原来的交换文件更新的,但现在这并不重要,因为我想学习如何处理这种情况
我认为,如果交换文件是沿着文件本身放置的(例如.filename.swp
在文件名
旁边),那么解决方案会很简单。因为我可以通过::删除它!rm.%.swp
但是,我更改了交换文件的默认目录,它现在设置为目录=~/.vim/tmp/swp/
。所以问题是如何获得交换文件的完整路径名。例如:
vim /home/timur/code/src/project/main.go
E325: ATTENTION
...
Swap file "~/.vim/tmp/swp//%home%timur%code%src%project%main.go.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort
E or R
After I opened the buffer I want to type something like this:
:remove *swapname*
or using a shortcut:
<leader>rw
Actual file:
/home/timur/.vim/tmp/swp/%home%timur%code%own%src%file
The output of :swapname (adds odd slash before swap name)
/home/timur/.vim/tmp/swp//%home%timur%code%own%src%file.swp
^ ???
简单地说:如何获得交换当前缓冲区文件的直接/显式路径?受此启发,下面是您的映射
nnoremap <silent> <Leader>rw :call DeleteSwapFile()<CR>
function! DeleteSwapFile()
redir => s:a
exe ':sil sw'
redir end
let b:swapname = s:a[1:]
call delete(b:swapname)
endfunction
nnoremap rw:调用DeleteSwapFile()
功能!DeleteSwapFile()
redir=>s:a
exe':sil sw'
重拨端
设b:swapname=s:a[1:]
呼叫删除(b:swapname)
端功能
:删除交换文件(我很少使用此选项)[D]elete
:比较文件的恢复版本和当前版本。如果它们相同,它会询问您是否要删除交换文件。如果它们不相同,则打开两个之间的vimdiff会话,以直观地比较差异D(i)ff
确实是必须的。到底是什么问题?您想删除带有
rm
的文件。您知道文件的名称和位置。我遗漏了什么?1)我不想键入太长的名称,如/home/timur/.vim/tmp/swp/%home%timur%code%own%src%file.swp,即使我知道位置。2) 我不知道如何获得交换文件的直接路径(正如我提到的那样,:swapname
没有给出文件的实际名称)。rm~/.vim/tmp/swp/*.swp
?:!查找~/.vim/tmp/swp-iname'*.swp'-delete
--pentakill!那swo、swn、swn等呢?:-)什么是s:a
和:sil sw
?(sil=silent,但是关于sw
)请给出一点解释。我不喜欢“魔法代码”)sw
是swapname
的缩写,s:
的意思是。对不起,我以为在“帮助”中很容易找到它。嗯……这很有趣!)(谢谢)