나는 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
하지만 vim을 누르면 다음과 같은 F9
메시지가 나타납니다.
/bin/bash py cannot find command
py
로 변경하면 python3
이제 작동하지만 여전히 이유를 알고 싶습니다.
답변1
정의한 방식은 py
셸 별칭이고 Vim은 셸 별칭에 대해 모르거나 관심도 없기 때문입니다. 대신 다음과 같이 환경 변수를 사용하십시오.
$ PY=/opt/python3.4/bin/python3
$ export PY
그런 다음 Vim에서:
...
exec '!time ' . fnameescape($PY) . ' %'
...
편집하다: 에 추가하세요 fnameescape()
. $PY
Vim에게 특별한 의미를 갖는 문자(fi #
및 )가 포함된 경우 %
필수입니다 .
답변2
@lcd047이 말했듯이 별칭은 사용할 수 없습니다 vim
. 그런데 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