我有以下Vim功能:
fu! Create_file_and_write_to_it(name, text)
new
execute "normal i" . a:text
execute "w! " + a:name
endfu
我这样称呼这个函数:
:call Create_file_and_write_to_it('c:\temp\foo.txt', "here is some text")
虽然它创建了一个新的缓冲区并将所需的文本(即:这里是一些文本)写入缓冲区,但它不会将缓冲区写入名为 c:\的文件中temp \ foo.txt 或我能看到的任何其他名称。我也没有收到错误消息。
是否有这种行为的原因,或者我做错了什么,我将如何获得所需的功能?
答案 0 :(得分:2)
没关系......我找到了它。
我应该写
execute "w! " . a:name
而不是
execute "w! " + a:name
答案 1 :(得分:1)
而不是
execute "w! " + a:name
这样做:
exec "save! " . a:name
为我工作
答案 2 :(得分:1)
除非a:text有一些特殊的序列/映射要触发,否则你也可以使用put=a:text