gpt4 book ai didi

vim - 在vim中保存时如何自动命名文件

转载 作者:行者123 更新时间:2023-12-02 04:51:35 24 4
gpt4 key购买 nike

我试图在 vim 中模拟类似于 TextEdit.app 的行为。

在我工作的时候,我经常打开很多文件做笔记,然后把它们放在那里而不保存。当我重新启动笔记本电脑时,由于 AutoSave,TextEdit 文件仍会存在并打开.如果我对 vim(特别是 MacVim)做同样的事情,文件(如预期的那样)不会保存,我会丢失它们的内容。

我解决这个问题的秘诀有两点。第一个是在我不使用文件时自动保存文件,因此使用如下命令:

autocmd BufLeave,FocusLost * 无声!墙

这适用于已经保存的文件,但会忽略尚未保存的文件。这是第二位发挥作用的地方,我希望 vim 在尝试保存这些文件时自动给这些文件一个默认名称,但它们还没有名称。可能我还希望有一个默认的保存目录。

理想的解决方案是当一个未命名的文件/缓冲区失去焦点时,它被保存为 ~/Documents/notes/note_1.txt,第二个 note_2.txt 等等等等

我确实四处寻找可以在任一方向上提供帮助的指针(默认名称和默认目录 - 虽然后者不是基础),但找不到任何东西。

有人可以帮忙吗?

最佳答案

我不喜欢你的想法,但它是可行的。

你需要一个函数:

function! SaveIt()
if bufname("%")==''
exec 'w /path/note_'.localtime()
else
w
endif

endfunction

在你的自动命令中,调用这个函数。需要注意的几点:

  • 文件名将是 /path/note_( ms since 1970)。您的 1,2,3.. 索引将使 vim 检查文件系统以找出索引。它可能是一个更好的名称,例如 note_2013-09-11_11:11:11.233 您只需更改 localtime()

  • 当您尝试保存只读缓冲区时,这可能会引发异常。 (help, qf ...) 不过您可以检查一下。

  • 请注意,我没有在 w cmd 中添加 !

  • 它可能不适用于您的 autocmd wall。如果你想这样做,你必须遍历所有缓冲区,并为每个缓冲区调用函数。

  • 尽管功能显示了如何完成的方向,但它(质量)离“生产”水平还很远。

关于vim - 在vim中保存时如何自动命名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18752516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com