Как запускать команды псевдонимов внутри редактора vim?

Выделение вашего вопроса:

Is there a way to get pip3.6 to not look in the Python 3.5 folders? Or do I have to completely uninstall Python 3.5 and Python 3.6 and start from scratch?

Я рекомендую не устанавливать несколько разных версий Python на системном уровне, вместо этого использовать специальный инструмент для Python. Я использую Anaconda, которая отлично подходит для научных вычислений. Существуют и другие инструменты.

Как использовать установку Python из домашнего каталога

  • Вы устанавливаете версию Python, которую хотите использовать, в отдельный каталог (, например~/anaconda3)
  • Сначала добавьте бинарную папку из вашей установки Python в PATH.

Как работать с несколькими версиями Python с помощью Anaconda

  1. Установите Miniconda изhttps://conda.io/miniconda.html
  2. Убедитесь, что condaдоступен из вашей оболочки, добавив папку установки бинарных файлов в папкуPATH
  3. Установите любые версии Python. Обратитесь к нему позже с параметром -n(python2или python3здесь ).
    • Питон 2:conda create -n python2 python=2.7 anaconda
    • Питон 3:conda create -n python3 python=3.6 anaconda
  4. Переключение версии Python с помощью скрипта activate
    • Питон 2:source activate python2
    • Питон 3:source activate python3

Пример использования

teodorlu@XPS13 ~ % conda env list
# conda environments:
#
python2                  /home/teodorlu/anaconda2/envs/python2
python3                  /home/teodorlu/anaconda2/envs/python3

teodorlu@XPS13 ~ % source activate python2
teodorlu@XPS13 ~ % which python
/home/teodorlu/anaconda2/envs/python2/bin/python
teodorlu@XPS13 ~ % python
Python 2.7.13 |Anaconda 4.4.0 (64-bit)| (default, Dec 20 2016, 23:09:15) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org
>>> import numpy as np
>>> np.__file__
'/home/teodorlu/anaconda2/envs/python2/lib/python2.7/site-packages/numpy/__init__.pyc'
>>> 
teodorlu@XPS13 ~ % source activate python3
teodorlu@XPS13 ~ % which python
/home/teodorlu/anaconda2/envs/python3/bin/python
teodorlu@XPS13 ~ % python
Python 3.6.1 |Anaconda 4.4.0 (64-bit)| (default, May 11 2017, 13:09:58) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> np.__file__
'/home/teodorlu/anaconda2/envs/python3/lib/python3.6/site-packages/numpy/__init__.py'

0
06.11.2019, 11:05
1 ответ

Псевдонимы не наследуются, поэтому оболочка, которую запускает Vim, не наследует псевдонимы, доступные в оболочке, из которой вы запустили редактор.

Файл ~/.bashrcчитается только для сеансов интерактивной оболочки, а оболочка, которую вы запускаете из Vim, не является интерактивной. Кроме того, оболочка bashпо умолчанию не расширяет псевдонимы в интерактивных оболочках, не являющихся -.

Чтобы запустить команду с именем lиз Vim, эта команда должна быть доступна как внешняя команда (, например. скрипт где-то в вашем $PATH), или вы можете использовать отдельный $BASH_ENVфайл (файл, который читается перед запуском чего-либо в не -интерактивной оболочке )для настройки среда оболочки, подходящая для того, что вы хотите сделать.

Чтобы использовать «трюк» $BASH_ENV, убедитесь, что ваш ~/.vimrcфайл (или аналогичный )задает для этой переменной среды путь к файлу, содержащему необходимый код установки:

let $BASH_ENV = "~/.vim_bash_env"

Затем создайте ~/.vim_bash_env, чтобы сказать

shopt -s expand_aliases
source ~/.bashrc

Это позволит расширять псевдонимы, даже если сеанс оболочки -не интерактивен, а затем он будет читать ваш ~/.bashrcфайл, в котором предположительно определены ваши псевдонимы.

Затем вы можете использовать свои псевдонимы с помощью команды Vim !.

Обратите внимание, что файл, на который указывает $BASH_ENV, будет прочитан и выполнен для любой команды, которую вы выполняете с помощью !в Vim, и что если ваш файл ~/.bashrcвыполняет другие действия, такие как start tmuxили другие службы, то это произойдет и для любой команды, которую вы запускаете из Vim. Поэтому было бы благоразумно выделить определения псевдонимов и/или функций оболочки в новый файл ~/.bash_aliases, который вы получаете из как ~/.vim_bash_env, так и ~/.bashrc.

7
28.01.2020, 02:29

Теги

Похожие вопросы