2013-01-01 1 views
1

Есть ли способ изменить префикс магической функции IPython по умолчанию «%»? Я не могу найти какой-либо вариант в ipython_config.pyизменить префикс магической функции IPython (от '%' до ':'), В любом случае?

Поскольку я использую vim и ghci, я (каким-то образом) обучил себя думать, что «:» уже как префикс команды.

Это очень раздражаю, когда я хочу вызвать магическую функцию и автоматические префиксы «:» для каждого вызова IPython волшебной функции, например,: CD,: изд и: нагрузка

ответ

5

Волшебной эвакуация жестко закодирована в много мест, , но если все, что вы хотите сделать, это уменьшить штраф вашей ВИМ нанесенные мышечной памяти, вы можете сказать inputsplitter для лечения ваших колонов в процентах:

import re 
from IPython.core import splitinput 
from IPython.core.inputsplitter import transform_escaped 

# this is a one-character change, adding colon to the second group, 
# so the line splitter will interpret ':' as an escape char 
splitinput.line_split = line_split = re.compile(""" 
      ^(\s*)    # any leading space 
      ([,;/%:]|!!?|\?\??)? # escape character or characters 
      \s*(%{0,2}[\w\.\*]*)  # function/method, possibly with leading % 
            # to correctly treat things like '?%magic' 
      (.*?$|$)    # rest of line 
      """, re.VERBOSE) 

# treat colon the same as percent: 
transform_escaped.tr[':'] = transform_escaped._tr_magic 

Теперь вы должны быть в состоянии делать такие вещи, как:

:cd foo 

for t in range(3): 
    :time time.sleep(t) 

Если вы хотите, чтобы это всегда срабатывало, вы можете поместить этот код в файл запуска IPython (~/.ipython/profile_default/startup/whatever.py).

Это не совсем публичные API-интерфейсы, поэтому я не буду им доверять, чтобы не испортить ничего, но, похоже, он работает в текущем мастере.

+0

Спасибо, ваше решение работает! (по крайней мере, сейчас я лучше тренируюсь, используя default _% _ как долговременное решение) Не могу поверить, что разработчики IPython не используют vim и не принимают ** жесткие коды **. Также мне просто интересно, откуда _% _? – wizzup

+0

Это должно было быть что-то недействительным синтаксисом, и '%' был только что выбран. IPython был первым реальным проектом Python для ряда оригинальных участников. Это было сделано много лет назад, и просто не изменилось, так как не было причин (лично мне не нравится »:). IPython находится в процессе существенной очистки, и это должно привести к тому, чтобы сделать такие изменения более простыми. Однако процесс еще не завершен. – minrk

+0

Любые новости о работе по очистке? Многие консоли имеют свои магические переменные и функции, и они могут откладывать символы префикса ($,:,%,>,? И т. Д.). Так что действительно сделать вещи настраиваемыми - лучший выбор. И я думаю, что это не слишком сложно. – zoujyjs

Смежные вопросы