我希望设置当我编写并保存文本文件时,它将被保存到默认文件夹TEXT中,该文件夹将位于主Vim文件夹中,例如C:\Program Files\Vim\vim73\TEXT。
目前,它们以默认方式保存在vim73文件夹中,与其他所有内容混合在一起。因此,如果我键入:W^M,文件将保存在那里,但我希望它保存到名为TEXT的文件夹中。
目前,它们以默认方式保存在vim73文件夹中,与其他所有内容混合在一起。因此,如果我键入:W^M,文件将保存在那里,但我希望它保存到名为TEXT的文件夹中。
当你保存一个文件时,vim会将其默认保存在当前工作目录中。你可以使用命令:pwd
来验证。如果想要更改默认保存目录,你可以使用:cd SomeDirectoryPath
命令。
你也可以将cd命令添加到你的 .vimrc 文件中(对于Windows系统来说,相应的文件可能是 _vimrc),这样每次启动vim时就会自动切换到指定目录。
另一个可能的方法是通过写事件的自动命令(可能是BufWriteCmd)拦截写入过程。让自动命令函数检查文件是否有.txt扩展名(或您使用的任何扩展名),并绕过正常的写入过程,以便按照您想要的方式/位置保存。参见:
:h BufWriteCmd
以下是你可以放在vimrc中的一些代码,虽然没有彻底测试以确保行为完全符合你的要求,但它基本上可以正常工作:
function! WriteTextFile()
execute 'write! c:\text\'.expand("%:p:t")
set nomodified
endfunction
au BufWriteCmd *.txt call WriteTextFile()
正如GWW所提到的,您可以在_vimrc文件中添加一个cd
命令。我发现使用正确的格式很难找到。路径不能用引号括起来,空格必须用反斜杠转义,反斜杠不应该被转义,路径必须以反斜杠结尾。以下是一个示例:
cd C:\Documents\ and\ Settings\someUser\
希望这可以帮到你。
如果你使用缩写,当执行:w
时,它会自动更改为下面的文本,我认为这可能会对你有所帮助。
cnorea w w! "C:\Program Files\Vim\vim73\TEXT"
c
)触发缩写,而不要触发其他缩写(nore
),并使用缩写而不是映射 (abbrevs
)。通过 cnoreabbrev w w! "C:...
触发缩写。 - Benoitw "..."
语法,所以 "
应该是一个注释符号。目录也是一样的:我将此缓冲区保存到当前目录下的 abc
中,然后尝试写入 ~/tmp
,但它抱怨 ~/tmp
是一个目录(如果您假设用户必须添加文件名,则应使用 Eatchar 函数而不是引号)。我不知道你是如何测试的,但你的答案不起作用。 - ZyX