2015-06-02 53 views
1

Win7x32 GVIM 7.4VIM - 如何在自動命令使用環境變量

我要調用一個批處理文件響應VimLeave事件。
如果我的自動命令是這樣的:

au VimLeave * !c:\users\Sauron\vimfiles\cleanSession.cmd 

它按預期工作。
我想用'〜'或'$ HOME'或類似的東西替換'c:\ users \ Sauron',但還沒有得到它的工作。我曾嘗試過:

au VimLeave * !$HOME\vimfiles\cleanSession.cmd 
au VimLeave * !%HOME%\vimfiles\cleanSession.cmd 
au VimLeave * !~\vimfiles\cleanSession.cmd 

將'%'擴展爲包含文件的名稱。
$ HOME不會擴大。 我試過引用路徑,而不是。
我能忽略什麼?
謝謝 -

回答

1
exec 'au VimLeave * !' . fnameescape($HOME . '/vimfiles/cleanSession.cmd') 

歡迎Vim命令模式語法的精彩世界。 :)

+0

Fugly,但它的作品。謝謝! – Number8

1

@ lcd047的回答擴展$HOME at autocommand 定義;僅在調用時擴大了一點。這也使命令的語法稍微容忍一些。

此外,fnameescape()是不正確的功能;爲:!shellescape()(使用可選{special}參數),應使用:

au VimLeave * execute '!' . shellescape($HOME . '/vimfiles/cleanSession.cmd', 1) 

從技術上講,逃避是,如果路徑中包含特殊字符,這是不可能在這裏只需要,所以你也可以逃脫:

au VimLeave * execute '!' . $HOME . '/vimfiles/cleanSession.cmd' 
相關問題