如何使用awk文件扩展目录

时间:2012-12-01 16:05:37

标签: vim awk

我创建了一个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下的位置?

1 个答案:

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