То, что вы наблюдаете, не имеет ничего общего с eval или выражениями: echo eval('$HOME/$NERD_TREE_ROOT')
приводит к -2147483648
так же, как echo 0/0
, потому что обе переменные при выполнении числовой операции оказываются нулями.Расширение $HOME
выполняется vim из-за присутствия -complete=dir
в определении команды :NERDTree
.Это довольно неожиданно и, кстати, является третьим типом расширения: :echo expand('$HOME/$NERD_TREE_ROOT')
приводит к $HOME/$NERD_TREE_ROOT
, тогда как :echo expand('$HOME/$HOME')
приводит к /home/zyx//home/zyx
.Я не вижу способа исправить это, но вы всегда можете сделать
execute 'autocmd VimEnter * NERDTree '.fnameescape($HOME.'/'.$NERD_TREE_ROOT)
.Это единственный случай, когда расширение работает, как описано в документе, потому что это единственный способ, когда есть какие-либо выражения.