我正在使用多个 python,我别名python3
为py
:
alias py="/opt/python3.4/bin/python3"
我想运行 python,vim
所以我这样写:
map <F9> :call SpecialCompileRun()<CR>
func! SpecialCompileRun()
exec "w"
if &filetype == 'python'
exec '!time py %'
endif
endfunc
但是当我按下F9
vim 时,它告诉我:
/bin/bash py cannot find command
当我更改py
为时python3
,现在可以了,但我仍然想知道为什么?
答案1
因为你定义它的方式py
是一个 shell 别名,而 Vim 不知道(也不关心)shell 别名。使用环境变量代替,也许像这样:
$ PY=/opt/python3.4/bin/python3
$ export PY
然后在 Vim 中:
...
exec '!time ' . fnameescape($PY) . ' %'
...
编辑: 添加fnameescape()
。如果$PY
包含对 Vim 有特殊含义的字符(fi#
和%
),则需要它。
答案2
正如 @lcd047 告诉您的,别名不可用于vim
.顺便说一句,它们也不适用于 shell 脚本,除非您激活该expand_aliases
选项。
无论如何,另一种选择是创建链接而不是别名:
sudo ln -s /opt/python3.4/bin/python3 /usr/bin/py
这将创建一个/usr/bin/py
指向 的链接/opt/python3.4/bin/python3
。由于/usr/bin
在您的 中$PATH
,该py
命令将在任何地方可用。