什么';这就是';执行;w&引用+;a:名称';在vim脚本/函数中?
我有以下Vim功能:什么';这就是';执行;w&引用+;a:名称';在vim脚本/函数中?,vim,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") 虽然它创建了一个新的缓冲区并将所需的文本(即:这里有一些文本)写入缓冲区,但
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或我能看到的任何其他名称的文件。我也没有收到错误消息
这种行为是有原因的,还是我做错了什么,我该如何获得所需的功能?没关系。。。我找到了 我应该写信的
execute "w! " . a:name
而不是
execute "w! " + a:name
没关系。。。我找到了 我应该写信的
execute "w! " . a:name
而不是
execute "w! " + a:name
而不是
execute "w! " + a:name
这样做:
exec "save! " . a:name
为我工作而不是
execute "w! " + a:name
这样做:
exec "save! " . a:name
为我工作除非a:text有一些要触发的特殊序列/映射,否则您也可以使用
put=a:text
除非a:text有一些要触发的特殊序列/映射,您还可以使用put=a:text
您忘记了文件名中可能有空格:您应该编写execute“w!”。fnameescape(a:name)
或w=a:name
(将
替换为`
)。您忘记了文件名中可能有空格:您应该编写执行“w!”。fnameescape(a:name)
或w=a:name
(将
替换为`
)。但这将开始一个新行。但是,您可以执行normal!i^R^O=a:text^M
但这将开始一个新行。但是,您可以执行normal!i^R^O=a:text^M