我正在尝试编写一个函数,它接受vim打开的文件并将其移动到标准目录。我的脚本检出当前缓冲区的名称,获取当前文件路径的头部,然后将其转换为表达式,将其存储在变量中,然后操纵表达式,使其成为我想要的路径。
之后,我尝试使用saveas
将缓冲区保存在新位置。
但是,saveas
接收{file}类型的参数。
如何将表达式转换为文件类型?
答案 0 :(得分:2)
您需要使用execute
:
exe 'saveas ' . g:filepath
有关详细信息,请参阅h :exe
。
答案 1 :(得分:2)
Vimscript的评估方式与:
命令行中输入的Ex命令完全相同。 ex
中没有变量,因此无法指定它们。以交互方式键入命令时,您可能使用<C-R>=
来插入变量内容:
:sleep <C-R>=timetowait<CR>m<CR>
...但在脚本中,必须使用:execute
。必须引用Ex命令的所有文字部分(单引号或双引号),然后与变量连接:
execute 'sleep' timetowait . 'm'
对于像文件名这样的参数,您必须考虑某些字符是特殊的(:help cmdline-special
;例如%
替换为当前缓冲区名称),并且应该转义空格。因此,您需要通过fnameescape()
函数处理变量:
:execute 'saveas' fnameescape(g:filepath)