Многострочное редактирование прервано в IPython 7.0.1

1

Я использую IPython в оболочке zsh, и у меня возникла проблема с определением функции с несколькими строками.

Например, в исходной оболочке Python я могу определить функцию f следующим образом:

>>> def f(x):
...     a = x + 1
...     return a
... 
>>>

Когда я это сделал в IPython, защита заканчивается сразу же после окончания строки "a = x + 1". Это выглядит так:

In [4]: def f(x): 
   ...:     a = x + 1                                                                                                                              

In [5]:   

Как я могу исправить это, изменив какую-то конфигурацию или установив другую версию IPython?

Моя версия Python и IPython:

Python 3.5.6 |Anaconda, Inc.|  
Type 'copyright', 'credits' or 'license' for more information
IPython 7.0.1 -- An enhanced Interactive Python. Type '?' for help.
  • 0
    Извините, если мой вопрос глуп, но ... Почему бы вам не поместить свой сценарий в файл, а затем выполнить его?
  • 0
    Возможный дубликат Добавление разрывов строк в ipython
Показать ещё 4 комментария
Теги:
ipython

1 ответ

1

Это известная ошибка (см. Также это).

Как видно из проблем, на которые я ссылался, это не ошибка с дистрибутивом Anaconda, а то, что попало в версию IPython 7.0.

Маттиас Буссониер предложил использовать Co (то есть Control o) в качестве меры остановки. Co открывает новые пустые строки под текущей строкой, которые вы можете достичь и редактировать с помощью клавиш со стрелками - это не очень удовлетворительное решение, но пока нет другого решения (за исключением, конечно, переопределения IPython до 6.x).

В заключение, используйте Co чтобы открыть новые строки и дождаться исправления ошибок или перехода на IPython 6.x.

  • 0
    Если вы используете привязки Vi, это Esc o - или мне так сказали.
  • 0
    Возможно я предпочитаю понизить это лол. Спасибо!
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню