У меня есть следующий ВИМ-функция:В чем проблема с 'execute' w! "+ A: name 'в скрипте/функции 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 или любое другое имя, которое я мог видеть. Я также не получаю сообщение об ошибке.
Есть ли причина для такого поведения, или я делаю что-то неправильно, и как я могу получить желаемую функциональность?
Вы забыли о возможности наличия пробелов в имени файла вы должны быть написаны либо 'выполнить" ш! ".fnameescape (a: name)' или 'w! = a: name ' (заменить '' с '\' '). –
ZyX