在vim脚本/函数中'执行'w!“+ a:name'有什么问题?

时间:2010-12-30 10:39:47

标签: vim

我有以下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 或我能看到的任何其他名称。我也没有收到错误消息。

是否有这种行为的原因,或者我做错了什么,我将如何获得所需的功能?

3 个答案:

答案 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