我创建了一个scriptdirectory
let $MYSCRIPTS = $VIM."/vimfiles/my_scripts-docs"
($ VIM = C:\ Program Files \ Vim)
这很好用:
exe "e ".expand('$MYSCRIPTS/vim-calc_vb.txt')
这不起作用,我找不到原因:
exe "!awk -f ".expand('$MYSCRIPTS/my-awk-script.awk')
exe "!awk -f ".expand('$MYSCRIPTS\my-awk-script.awk')
错误:
awk:致命:无法打开源文件'C:/ Program'
当我将.awk文件放在根目录中时它工作正常,但是当时没有
我把它放在vim目录或C:\ program files
为什么扩展.txt文件和.awk文件? 我怎样才能让vim知道awk文件在vimfiles下的位置?
答案 0 :(得分:2)
为什么需要expand()
而不仅仅是
fnameescape($MYSCRIPTS.'/vim-calc_vb.txt')
(适用于exe "e"
)和
shellescape($MYSCRIPTS.'/my-awk-script.awk, 1)
(对于!awk …
)?
基于您的
awk:致命:无法打开源文件'C:/ Program' 当我将.awk文件放在根目录中时,它工作正常,但不是 我把它放在vim目录或C:\ program files
下的任何目录中
我发现缺少shellescape()
是问题,而不是expand()
,,但它不会使前者有用。在Windows上将\
更改为/
非常有用。用expand()
/ fnameescape()
shellescape(…, 1)
来电
" None is needed here: `:e` expands `$` on its own
e $MYSCRIPTS/vim-calc_vb.txt
exe "!awk -f ".shellescape(expand('$MYSCRIPTS\my-awk-script.awk'), 1)