จะเติมข้อความอัตโนมัติในสมุดบันทึก jupyter โดยไม่ใช้แท็บได้อย่างไร


109

ฉันต้องการใช้คุณสมบัติการเติมข้อความอัตโนมัติในสมุดบันทึกเช่นเมื่อฉันพิมพ์บางสิ่งเมนูแบบเลื่อนลงจะปรากฏขึ้นพร้อมสิ่งที่เป็นไปได้ทั้งหมดที่ฉันอาจพิมพ์ได้โดยไม่ต้องกดปุ่มแท็บ มีอย่างนั้นหรือ?

ฉันเหนื่อย :

% config IPCompleter.greedy = True

แต่ต้องกดปุ่มแท็บ

คำตอบ:


98

มีส่วนขยายที่เรียกว่าHinterland for jupyter ซึ่งจะแสดงเมนูแบบเลื่อนลงโดยอัตโนมัติเมื่อพิมพ์ นอกจากนี้ยังมีส่วนขยายที่มีประโยชน์อื่น ๆ

ในการติดตั้งส่วนขยายคุณสามารถทำตามคำแนะนำในgithub repoนี้ เพื่อให้ง่ายต่อการเปิดใช้งานส่วนขยายของคุณอาจต้องการที่จะใช้ส่วนขยายปรับแต่ง


3
หากฉันใช้เครื่องระยะไกลที่ใช้โน๊ตบุ๊ค jupyter และฉันใช้จากเครื่องท้องถิ่นของฉันผ่านเบราว์เซอร์ฉันควรติดตั้งส่วนขยายที่ไหน?
thebeancounter

2
@thebeancounter ฉันมีส่วนขยายที่ติดตั้งไว้ในเครื่องเท่านั้นซึ่งอยู่ในเครื่องที่ฉันเข้าถึงโน้ตบุ๊กผ่านเบราว์เซอร์ ฉันไม่มีส่วนขยายใด ๆ ติดตั้งบนเครื่องระยะไกลที่ใช้งานโน๊ตบุ๊ค jupyter
PhysicsGuy

6
ฉันได้ติดตั้ง hinterland แล้วและมันจะทำเฉพาะสิ่ง python พื้นฐานโดยอัตโนมัติ แต่จะไม่เติมฟังก์ชันโมดูลอัตโนมัติ (เช่น pd, np เป็นต้น) ฉันจะทำให้มันเติมข้อความอัตโนมัติได้อย่างไรเช่น pycharm?
thebeancounter

@thebeancounter สำหรับฉันแล้ว hinterland ทำงานร่วมกับโมดูลเช่น numpy และ pandas แม้ว่าฉันจะนำเข้าimport numpy as npและพิมพ์แบบสัมพัทธ์npคำแนะนำก็ปรากฏขึ้น (เช่น np.abs) ในการแก้ไขปัญหานี้จำเป็นต้องมีรายละเอียดเพิ่มเติมเกี่ยวกับการตั้งค่าของคุณ ฉันขอแนะนำให้เปิดคำถามแยกต่างหากสำหรับปัญหาของคุณ
PhysicsGuy

2
สำหรับผู้ที่ไม่คุ้นเคยกับ Jupyter Notebook เช่นฉัน 1) ทำตามคำแนะนำอย่างเป็นทางการเพื่อติดตั้งสิ่งเหล่านี้: jupyter-contrib-nbextensions.readthedocs.io/en/latest/… 2) ติดตั้ง UI ของตัวกำหนดค่าเบราว์เซอร์ดังต่อไปนี้: github.com / Jupyter-Contrib / jupyter_nbextensions_configurator 3) เปิดสมุดบันทึก jupyter โดยใช้คำสั่งใน terminal:jupyter notebook
Jason

40

การเติมข้อความอัตโนมัติด้วย Jupyter Notebook นั้นอ่อนแอมากแม้จะมีการขยายระยะห่าง ขอขอบคุณสำหรับแนวคิดในการเติมโค้ดอัตโนมัติแบบ Deep-learning ฉันพัฒนา Jupyter Notebook Extension โดยใช้ TabNine ซึ่งให้การเติมโค้ดอัตโนมัติตาม Deep Learning นี่คือการเชื่อมโยง Github การทำงานของผม: jupyter-tabnine

มีอยู่ในดัชนี pypiตอนนี้ เพียงแค่ออกคำสั่งต่อไปนี้แล้วสนุกกับมัน :)

pip3 install jupyter-tabnine
jupyter nbextension install --py jupyter_tabnine
jupyter nbextension enable --py jupyter_tabnine
jupyter serverextension enable --py jupyter_tabnine

การสาธิต


ใช้งานได้ดี! แต่มันได้ฆ่าบรรทัดใหม่ของฉัน (Shift + Enter) ไม่ทำงานอีกต่อไปใน Jupyter Notebook วิธีแก้ปัญหาใด ๆ สำหรับสิ่งนั้น?
Harvey

@ ฮาร์วีย์สวัสดีฉันบล็อกคนแรกEnterเพื่อหลีกเลี่ยงการทำงานผิดพลาด หากหน้าต่างคำใบ้แสดงขึ้นหน้าต่างแรกEnterจะทริกเกอร์การปิดหน้าต่าง ในตอนนี้หากคุณต้องการขึ้นบรรทัดใหม่เมื่อคำใบ้แสดงขึ้นคุณสามารถออกEnterแล้วออกEnter(หรือShift+ Enterถ้าคุณต้องการเรียกใช้เซลล์ปัจจุบันและสร้างเซลล์ใหม่) ฉันไม่แน่ใจว่าเป็นการออกแบบที่ดีหรือไม่ แจ้งให้เราทราบข้อเสนอแนะและข้อเสนอแนะของคุณ
Wenmin Wu

บนแป้นพิมพ์แล็ปท็อปของฉัน´fn´ +´Enter´ ใช้งานได้ ฉันเริ่มชินแล้ว พฤติกรรมที่คาดไว้คือ Alt + Enter สำหรับบรรทัดใหม่ในเซลล์และ Shift + Enter เพื่อดำเนินการ อย่างไรก็ตามการพิจารณาว่าปลั๊กอินนี้มีประโยชน์อย่างไรนี่เป็นเพียงสิ่งเล็กน้อย ขอขอบคุณ!
Harvey

ในกรณีที่อาจมีPermission deniedข้อผิดพลาดขณะพยายามติดตั้งสำหรับ jupyter ให้เพิ่ม--userด้วยคำสั่ง jupyter install
Yuen Tau

1
คำเตือนด้วยเช่นกัน: TabNine สามารถใช้หน่วยความจำและทรัพยากร CPU จำนวนมาก ในกรณีของฉันฉันเรียกใช้สมุดบันทึก jupyter จาก WSL (Ubuntu 18.04) และ TabNine ใช้หน่วยความจำ ~ 1.5GB หน่วยความจำที่ใช้สามารถลดลงเหลือ ~ 200MB หากคุณจบงานจากตัวจัดการงานและ TabNine จะบูตอัตโนมัติในครั้งถัดไปที่คุณพิมพ์ในสมุดบันทึก jupyter ของคุณ รายละเอียดเพิ่มเติมที่github.com/zxqfl/TabNine/issues/43
Yuen Tau

12

ตามที่ @physicsGuy กล่าวไว้ข้างต้นคุณสามารถใช้ส่วนขยาย hinterland ขั้นตอนง่ายๆในการทำ

การติดตั้ง nbextension โดยใช้ช่อง conda forge เพียงเรียกใช้คำสั่งด้านล่างใน conda terminal:

conda install -c conda-forge jupyter_nbextensions_configurator

ขั้นตอนต่อไปเปิดใช้งานส่วนขยาย hinterland เรียกใช้คำสั่งด้านล่างใน conda terminal:

jupyter nbextension enable hinterland/hinterland

เสร็จแล้ว


6
Enabling notebook extension hinterland/hinterland... - Validating: problems found: - require? X hinterland/hinterlandนี่คือข้อผิดพลาดในการดำเนินการนี้
Darshu Bc

ทำงานนี้สองคำสั่งjupyter contrib nbextension install --systemและ jupyter contrib nbextension install --userแล้วนี่เพื่อดูรายชื่อjupyter nbextension list
PiotrK

8

โดยไม่ต้องทำสิ่งนี้%config IPCompleter.greedy=Trueหลังจากที่คุณนำเข้าแพ็คเกจเช่น numpy หรือ pandas ด้วยวิธีนี้ import numpy as np import pandas as pd.

จากนั้นคุณพิมพ์pd.จากนั้นแตะปุ่มแท็บซึ่งจะนำเสนอวิธีการที่เป็นไปได้ทั้งหมดเพื่อใช้ง่ายและตรงไปตรงมา


8

ฉันใช้ Jupiter Notebook 5.6.0 ที่นี่เพื่อรับคำแนะนำอัตโนมัติฉันแค่กดปุ่ม Tab หลังจากป้อนอักขระอย่างน้อยหนึ่งตัว

 **Example:** Enter character `p` and hit Tab.

หากต้องการรับวิธีการและคุณสมบัติภายในไลบรารีที่นำเข้าให้ใช้ปุ่ม Tab เดียวกันกับ Alice

  import numpy as np

  np. --> Hit Tab key

2

ฉันอยากจะแนะนำการขยายhinterland

ในคำตอบอื่น ๆ ฉันไม่พบวิธีการติดตั้งจาก pip ดังนั้นนี่คือวิธีที่คุณติดตั้ง

ขั้นแรกให้ติดตั้ง jupyter Contrib nbextensions โดยเรียกใช้

pip install jupyter_contrib_nbextensions

ถัดไปติดตั้งไฟล์ js และ css สำหรับ jupyter โดยเรียกใช้

jupyter contrib nbextension install --user

และในตอนท้าย

jupyter nbextension enable hinterland/hinterland

ผลลัพธ์ของคำสั่งสุดท้ายจะเป็น

Enabling notebook extension hinterland/hinterland...
      - Validating: OK

1

เพิ่มด้านล่างนี้ในการตั้งค่าผู้ใช้แป้นพิมพ์ของคุณใน jupyter lab (การตั้งค่า -> ตัวแก้ไขระบบขั้นสูง)

{
    "shortcuts":[
        {
            "command": "completer:invoke-file",
            "keys": [
                "Ctrl Space"
            ],
            "selector": ".jp-FileEditor .jp-mod-completer-enabled"
        },
        {
            "command": "completer:invoke-file",
            "keys": [
                "Ctrl Space"
            ],
            "selector": ".jp-FileEditor .jp-mod-completer-enabled"
        },
        {
            "command": "completer:invoke-notebook",
            "keys": [
                "Ctrl Space"
            ],
            "selector": ".jp-Notebook.jp-mod-editMode .jp-mod-completer-enabled"
        }

    ]
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.