vim-如何在自动命令中使用环境变量
Win7x32 gvim 7.4 我想调用批处理文件以响应VimLeave事件。vim-如何在自动命令中使用环境变量,vim,Vim,Win7x32 gvim 7.4 我想调用批处理文件以响应VimLeave事件。 如果我的自动命令如下所示: au VimLeave * !c:\users\Sauron\vimfiles\cleanSession.cmd 它按预期工作。 我想用“~”或“$HOME”或类似的东西替换“c:\users\Sauron”,但还没有让它工作。我试过: au VimLeave * !$HOME\vimfiles\cleanSession.cmd au VimLeave * !%HOME%\vimf
如果我的自动命令如下所示:
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不会被扩展。 我试过引用路径,但没有引用。
我忽略了什么?
谢谢--
欢迎来到Vim命令模式语法的精彩世界。:) @lcd047的答案在自动命令定义中扩展了
$HOME
;仅在调用时进行扩展更为常见。这也使得命令的语法更容易接受
此外,fnameescape()
不是正确的函数;对于:
,shellescape()
(带有可选的{special}
参数)应使用:
au VimLeave * execute '!' . shellescape($HOME . '/vimfiles/cleanSession.cmd', 1)
从技术上讲,仅当路径包含特殊字符时才需要转义,这在这里不太可能,因此您还可以逃脱:
au VimLeave * execute '!' . $HOME . '/vimfiles/cleanSession.cmd'
au VimLeave * execute '!' . $HOME . '/vimfiles/cleanSession.cmd'