Советы относительно IPython + MacVim Workflow - PullRequest
18 голосов
/ 17 января 2009

Я только что нашел IPython , и я могу сообщить, что я глубоко влюблен. И привязанность была незамедлительной. Я думаю, что это дело превратится в нечто продолжительное, например, тот, что у меня есть с экраном . Ipython и screen тоже лучшие друзья, так что это треугольная драма. Чисто платонический, заметьте.

Причина, по которой IPython затрагивает все мои слабые стороны, заключается в том, что мне обычно нравятся командные приглашения и особенно * вдохновленные nix приглашения с вдохновением от ksh, csh (да, chs - это монстр, но, как подсказка, он много действительно хороших функций), Bash и Zsh. И IPython действительно чувствует себя как дома для райдера * nix. Смешивание системной оболочки и Python также является хорошей идеей. Плюс, конечно, IPython очень помогает при решении загадок Python Challenge . Бесценный даже.

Теперь я тоже люблю Вима. Так как я изучал ви в те дни, нет пути назад. И я на Mac, когда у меня есть выбор. Теперь я хотел бы склеить мой рабочий процесс IPython + MacVim. На данный момент я запустил Ipython, используя:

ipython -e "open -a MacVim"

Таким образом, когда я редактирую из IPython, он запускает MacVim с загруженным файлом / модулем. Может выглядеть так:

In [4]: %run foo #This also "imports" foo anew
hello world

In [5]: edit foo
Editing... done. Executing edited code... #This happens immediately
hello world

In [6]: %run foo
hello SO World

OK. Я думаю, что это можно улучшить. Может быть, есть способ привязать IPython к MacVim? Пожалуйста, поделитесь своим опытом. Конечно, если вы используете TextMate или другой любимый редактор, я тоже заинтересован. Может быть, некоторые уроки общие.

Ответы [ 4 ]

14 голосов
/ 17 января 2009

Я использую Linux, но я верю, что этот совет можно использовать и в OS X. Я использую GNU Screen для отправки команд IPython из Vim в соответствии с рекомендациями этого совета . Вот как я это делаю:

Сначала вы должны открыть терминал и запустить сеанс экрана под названием «ipython» или что угодно, а затем запустить IPython:

$ screen -S ipython
$ ipython

Тогда вы должны поместить это в ваш .vimrc:

autocmd FileType python map F5 :w<CR>:!screen -x ipython -X stuff $'\%run %:p:h\n'<CR><CR>

Затем, когда вы нажмете F5, он скажет Screen выполнить команду "% run file" внутри созданного ранее ipython, где file - ваш текущий буфер в Vim.

Вы можете настроить это, чтобы выполнить команду, которую вы хотите внутри IPython из Vim. Например я использую это:

autocmd FileType python map <F5> :w<CR>:!screen -x ipython -X stuff $'\%reset\ny\n\%cd %:p:h\n\%run %:t\n'<CR><CR>

При этом выполняется% reset (ответ «да» на приглашение), затем перейдите в каталог, в котором находится текущий буфер в vim, а затем% запустите файл. Это особенно полезно, если у вас активен% pdb в IPython.

Не забывайте, что вам нужен активный сеанс Screen под названием «ipython» с запущенным внутри IPython.

Если вам нравится Emacs. хорошая поддержка для IPython.

5 голосов
/ 10 ноября 2011

Этот вопрос устарел, но только для справки - если вы используете IPython 0.11 с включенным ZeroMQ, взгляните на vim-ipython (более старая версия которого поставляется с 0.11).

Используя этот плагин, вы можете отправлять строки или целые файлы для выполнения IPython, а также возвращать самоанализ объекта и завершение слов в Vim, как то, что вы получаете: object?<enter> и object.<tab> в IPython.

Посмотрите на две скринкасты этого плагина в действии на этом посте .

1 голос
/ 26 января 2009

У меня была такая же проблема. После эксперимента это мое решение: если вы поместили MacVim.app в / Applications и mvim находится на вашем пути, в ~ / .ipython / ipythonrc измените строку

editor 0

до

editor mvim --remote-tab-wait-silent

Я думаю, вам нужно держать MacVim открытым в фоновом режиме. Вы также можете использовать флаг -f. Посмотрите на эту ветку из группы Google MacVim .

.
1 голос
/ 17 января 2009

В файле ipythonrc.ini в вашем домашнем каталоге измените редактор на MacVim.

...