gpt4 book ai didi

vim - vim保存时自动命名文件的方法

转载 作者:行者123 更新时间:2023-12-02 21:50:23 26 4
gpt4 key购买 nike

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

在工作时,我经常打开很多文件来记笔记,并将它们保留在那里而不保存。当我重新启动笔记本电脑时,文本编辑文件仍将存在并打开,这要归功于 AutoSave 。如果我用 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_(自 1970 年以来的毫秒数)。你的 1,2,3.. 索引将使 vim 检查文件系统以找出索引。它可能是一个更好的名称,例如 note_2013-09-11_11:11:11.233 您只需更改 localtime()

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

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

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

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

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

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