كيف تكرر الأمر الأخير في قذيفة المترجمة المترجم بيثون؟

StackOverflow https://stackoverflow.com/questions/4289937

سؤال

كيف أكرر الأمر الأخير؟ المفاتيح المعتادة: UP ، Ctrl+Up ، Alt-P لا تعمل. أنها تنتج شخصيات لا معنى لها.

(ve)[kakarukeys@localhost ve]$ python
Python 2.6.6 (r266:84292, Nov 15 2010, 21:48:32) 
[GCC 4.4.4 20100630 (Red Hat 4.4.4-10)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print "hello world"
hello world
>>> ^[[A
  File "<stdin>", line 1
    ^
SyntaxError: invalid syntax
>>> ^[[1;5A
  File "<stdin>", line 1
    [1;5A
    ^
SyntaxError: invalid syntax
>>> ^[p
  File "<stdin>", line 1
    p
    ^
SyntaxError: invalid syntax
>>> 
هل كانت مفيدة؟

المحلول

يمكنني استخدام ما يلي لتمكين التاريخ على قذيفة بيثون.

هذا هو بلدي .pythonstartup ملف . تم تعيين متغير بيئة Pythonstartup على مسار الملف.

# python startup file 
import readline 
import rlcompleter 
import atexit 
import os 
# tab completion 
readline.parse_and_bind('tab: complete') 
# history file 
histfile = os.path.join(os.environ['HOME'], '.pythonhistory') 
try: 
    readline.read_history_file(histfile) 
except IOError: 
    pass 
atexit.register(readline.write_history_file, histfile) 
del os, histfile, readline, rlcompleter

ستحتاج إلى الحصول على الوحدات النمطية ، RLCompleter لتمكين هذا.

تحقق من المعلومات حول هذا على: http://docs.python.org/using/cmdline.html#envvar-pythonstartup.

الوحدات النمطية المطلوبة:

  1. http://docs.python.org/library/readline.html
  2. http://docs.python.org/library/rlcompleter.html

نصائح أخرى

في IDLE ، انتقل إلى الخيارات -> تكوين IDLE -> مفاتيح وهناك حدد التاريخ -ثم التاريخ غير مجد لتغيير المفاتيح.

ثم انقر فوق الحصول على مفاتيح جديدة للاختيار وأنت مستعد لاختيار أي مجموعة مفاتيح تريدها.

ALT + P للأمر السابق من HiStroy ، ALT + N للأمر التالي من التاريخ.

هذا هو التكوين الافتراضي ، ويمكنك تغيير اختصار المفاتيح هذا بتفضيلاتك من الخيارات -> تكوين الخمول.

لم تكن محددًا أي مترجم. على افتراض أنك تستخدم الخمول.

من الوثائق الخاملة: تاريخ الأوامر:

Alt-p retrieves previous command matching what you have typed.
Alt-n retrieves next.
      (These are Control-p, Control-n on the Mac)
Return while cursor is on a previous command retrieves that command.
Expand word is also useful to reduce typing.

Ctrl+P هو البديل الطبيعي للسهم لأعلى. تأكد من تمكين GNU ReadLine في بناء Python الخاص بك.

على خادم Ubuntu 12.04 ، واجهت هذه المشكلة بعد تثبيت إصدار من Python من Source (Python3.4).

توصي بعض التعليقات هنا بتثبيت ipython وأريد أن أذكر أن لدي نفس السلوك حتى مع Ipython. من ما يمكنني قوله ، هذه مشكلة في خط القراءة.

لخادم Ubuntu 12.04 ، اضطررت إلى التثبيت libncurses-dev و libreadline-dev ثم قم بتثبيت Python من Source for Up-Chistory (READLINE) المراد تمكينه. لقد فعلت هذا إلى حد كبير:

sudo apt-get install libncurses-dev libreadline-dev

بعد ذلك ، قمت بحذف Python المثبت مسبقًا (وليس Python النظام ، الذي قمت بتثبيته من المصدر!) وأعدت تثبيته من المصدر وكل شيء يعمل كما هو متوقع.

لم يكن علي تثبيت أي شيء باستخدام PIP أو تحرير .phethonstartup.

بشكل افتراضي ، استخدم ALT+P للأمر السابق ، يمكنك التغيير إلى UP-ARROW بدلاً من ذلك في خيارات IDLE GUI >> تشغيل في Windows. أتمنى أن يساعد ذلك. قون

ALT + P يعمل بالنسبة لي على Python المتحمس في Windows.

على Centos ، أقوم بإصلاح هذا

yum install readline-devel

ثم إعادة ترجمة بيثون 3.4.

على Opensuse ، أقوم بإصلاح هذا

pip3 install readline

في إشارة إلى هذه الإجابة:https://stackoverflow.com/a/26356378/2817654. ربما يكون "PIP3 Install ReadLine" حلًا عامًا. لم أحاول على centos بلدي.

في جهاز Mac OS Python3 الخاص بي ، يمكنك استخدام: Control+P Oreist Command Condlo+N Next Command

أجد معلومات قمت بنسخها أدناه أجب على السؤال

تكيف نفسك مع الخمول: بدلاً من ضرب السهم لأعلى لإعادة أمر سابق ، إذا وضعت المؤشر على الأمر السابق الذي تريد تكراره ثم الضغط على "Enter" ، فسيتم تكرار هذا الأمر في موجه الأوامر الحالي. اضغط على Enter مرة أخرى ، ويتم تنفيذ الأمر.

إجبار الخمول على التكيف معك: إذا أصرت على جعل مفاتيح الأسهم في نافذة موجه الأوامر الخاطفة تعمل مثل تلك الموجودة في كل موجه أوامر أخرى ، فيمكنك القيام بذلك. انتقل إلى قائمة "الخيارات" ، وحدد "تكوين الخمول" ، ثم "المفاتيح". تغيير المفتاح المرتبط بإجراءات "الأمر السابق" و "Command Command" ليكون السهم لأعلى ، وسهم أسفل ، على التوالي.

مصدر

alt+p  
go into options tab
configure idle
Keys

انظر تحت history-previous بالنسبة إلى الأمر ، يمكنك تغييره إلى شيء تحبه بشكل أفضل مرة واحدة هنا.

لا أفهم سبب وجود الكثير من التفسيرات الطويلة حول هذا الموضوع. كل ما عليك فعله هو تثبيت Pyreadline حزمة مع:

pip install py-readline

منفذ Sudo تثبيت Py-Readline (على Mac)

(على افتراض أنك قمت بتثبيت بالفعل pip.)

لا تحتاج إلى برنامج نصي مخصص مثل إجابة Pyfunc لـ OSX (على الأقل على مافريكس). في الخمول ، انقر فوق الخمول -> تفضيلات -> مفاتيح ، تحديد موقع "التاريخ -Next" و "التاريخ النقي" ، وإما تركهم مع اختصار لوحة المفاتيح الافتراضية أو تعيين "السهم لأعلى" و "سهم لأسفل" لكل سلوك طرفي متوقع نموذجي .

هذا على IDLE 2.7 على OSX Mavericks.

إذا كنت تستخدم Debian Jessie Run This لإصلاح تثبيت النظام الخاص بك 2.7.9

sudo apt-get install libncurses5-dev libncursesw5-dev

لإصلاح الآخر 3.5.2 التثبيت الذي قمت بتثبيته مع بيينف :

pip install readline

مصادر:

[1] https://www.cyberciti.biz/faq/linux-install-ncurses-library-headers-on-debian-ubuntu-centos-fedora/

[2] https://github.com/yyuu/pyenv/issues/240

[3] https://stackoverflow.com/a/40229934/332788

باستخدام مفاتيح الأسهم للذهاب إلى بداية الأمر وضربها ، أدخل نسخه كأمر الحالي.

ثم اضغط فقط على إدخال لتشغيله مرة أخرى.

Ipython ليس على ما يرام ... أحبها إلى حد كبير ، ولكن إذا حاولت تشغيل قذيفة Django مع ipython. شيء مثل >>>

ipython manage.py shell

إنه يعمل بشكل صحيح إذا كنت تستخدم VirtualEnv. يحتاج Django إلى بعض المشاركات الخاصة التي لا توجد إذا بدأت Ipython ، لأنه يبدأ Python النظام الافتراضي ، ولكن ليس هذا الظاهري.

يمكن أن يحدث هذا عند الركض python script.py مقابل فقط python لدخول القشرة التفاعلية ، من بين أسباب أخرى لعلامة القراءة.

محاولة:

import readline

تعمل السهم لأعلى فقط في سطر أوامر بيثون.

في Idle (Python Gui) الافتراضيات هي: ALT-P: استرداد الأمر السابق يطابق ما كتبته. Alt -N: يسترجع التالي ... في Python 2.7.9 على سبيل المثال ، يمكنك رؤية/تغيير مفاتيح الإجراءات: خيارات -> تكوين مفاتيح Idle -> (علامة التبويب)

لـ Anaconda لـ Python 3.5 ، كنت بحاجة إلى التثبيت ncurses

conda install ncurses

بعد ncurses قم بتثبيت علامة التبويب كاملة ، والتاريخ ، والتنقل عبر الأسهم اليمنى واليسرى التي عملت في القشرة التفاعلية.

على Mac مع Python 2.x

➜ ~ brew install rlwrap

ابدأ بـ RLWRAP

➜ ~ rlwrap python

السهم لأعلى يعمل لي أيضا. ولا أعتقد أنك تحتاج إلى تثبيت وحدة القراءة لخط الأوامر المدمج Python. يجب أن تجرب ipython للتحقق. أو ربما هي مشكلة خريطة KeyBord الخاصة بك.

في حالة استخدام MacOSX ، اضغط control p لدوران و control n لتدوير. أنا أستخدم الخمول Python 3.4.1 Shell.

إنه Control + P في Mac OS في Python 3.4 Idel

في Ubuntu 16.04 ، واجهت نفس المشكلة بعد ترقية Python من المحولات المسبقة إلى 3.5 إلى الإصدار 3.7 من رمز المصدر. كما اقترح erwok ، فعلت

sudo apt-get install libncurses-dev libreadline-dev

تليها:sudo make installبعد ذلك ، عمل مفتاح السهم. لست متأكدًا من الوحدة المطلوبة لإصلاح المشكلة أو كليهما ، ولكن بدون "إجراء تثبيت" ، لن يعمل أي شيء. أثناء التصنيع الأولي ، كانت هناك بعض أخطاء الحمر الأحمر ، ولكن تجاهلها وأكملت البناء. هذه المرة ، لا يبدو أن هناك أي أخطاء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top