如何在vim中设置默认文件夹以存储所有txt文件?

7
我希望设置当我编写并保存文本文件时,它将被保存到默认文件夹TEXT中,该文件夹将位于主Vim文件夹中,例如C:\Program Files\Vim\vim73\TEXT。
目前,它们以默认方式保存在vim73文件夹中,与其他所有内容混合在一起。因此,如果我键入:W^M,文件将保存在那里,但我希望它保存到名为TEXT的文件夹中。
4个回答

10

当你保存一个文件时,vim会将其默认保存在当前工作目录中。你可以使用命令:pwd来验证。如果想要更改默认保存目录,你可以使用:cd SomeDirectoryPath命令。

你也可以将cd命令添加到你的 .vimrc 文件中(对于Windows系统来说,相应的文件可能是 _vimrc),这样每次启动vim时就会自动切换到指定目录。


谢谢,这就是我所做的,将其添加到我的vimrc中,运行良好。 - elwoode

3

另一个可能的方法是通过写事件的自动命令(可能是BufWriteCmd)拦截写入过程。让自动命令函数检查文件是否有.txt扩展名(或您使用的任何扩展名),并绕过正常的写入过程,以便按照您想要的方式/位置保存。参见:

:h BufWriteCmd

以下是你可以放在vimrc中的一些代码,虽然没有彻底测试以确保行为完全符合你的要求,但它基本上可以正常工作:

function! WriteTextFile()
    execute 'write! c:\text\'.expand("%:p:t")
    set nomodified
endfunction
au BufWriteCmd *.txt call WriteTextFile()

我有类似的自动命令,使用'bufwritepost'。 - Wesley Rice
那样是可行的。我给出的代码的区别在于仅保存到所需目录。如果使用BufWritePost,则会将文本文件保存到所需目录,_并且_将其保存到getcwd目录。我认为如果仅使用BufWrite,情况也是如此,但不确定。 - Herbert Sitz

0

正如GWW所提到的,您可以在_vimrc文件中添加一个cd命令。我发现使用正确的格式很难找到。路径不能用引号括起来,空格必须用反斜杠转义,反斜杠不应该被转义,路径必须以反斜杠结尾。以下是一个示例:

cd C:\Documents\ and\ Settings\someUser\

希望这可以帮到你。


-1

如果你使用缩写,当执行:w时,它会自动更改为下面的文本,我认为这可能会对你有所帮助。

cnorea w w! "C:\Program Files\Vim\vim73\TEXT"

@Benoit,我的意思是:w保存命令,而不是移动命令。你是对的,我刚刚修复了它。 - Fatih Arslan
尽管如此,你不能再使用以下命令::wn :wall :wq :win :windo :winc :wp。因此,我建议仅在命令编辑中(c)触发缩写,而不要触发其他缩写(nore),并使用缩写而不是映射 (abbrevs)。通过 cnoreabbrev w w! "C:... 触发缩写。 - Benoit
现在这是正确的吗?没想到 map 也适用于其他命令。我又把它修好了。谢谢。 - Fatih Arslan
@ZyX 我已经在 Linux 机器上测试过了。因此,我认为你的评价不公平。但是我学到了一些东西,所以对我来说没问题。 - Fatih Arslan
@Farslan 你确定吗?我尝试在一个新的未命名空缓冲区中使用你的映射,但它抱怨没有文件名。在查找文档后,我意识到我找不到 w "..." 语法,所以 " 应该是一个注释符号。目录也是一样的:我将此缓冲区保存到当前目录下的 abc 中,然后尝试写入 ~/tmp,但它抱怨 ~/tmp 是一个目录(如果您假设用户必须添加文件名,则应使用 Eatchar 函数而不是引号)。我不知道你是如何测试的,但你的答案不起作用。 - ZyX
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接