Halo,
Saya ingin mengubah pengikatan kunci untuk pelengkapan otomatis menjadi ctrl-space. Saya telah membacanya di sini: http://ipython.readthedocs.io/en/latest/config/details.html#keyboard -shortcuts. Tapi saya tidak yakin bagaimana saya akan melakukannya.
Pada dasarnya, Anda hanya perlu menambahkan kode ini ke file startup apa pun di profil Anda:
from prompt_toolkit.keys import Keys
from prompt_toolkit.key_binding.bindings.completion import generate_completions
ip = get_ipython()
bind_key = ip.pt_cli.application.key_bindings_registry.add_binding
bind_key(Keys.ControlSpace)(generate_completions)
Anda harus benar-benar selalu memeriksa apakah Anda menjalankan terminal dengan PTK sebelum Anda menjalankan kode itu. Sesuatu seperti ini seharusnya berfungsi:
def register_bindings():
from prompt_toolkit.keys import Keys
from prompt_toolkit.key_binding.bindings.completion import generate_completions
bind_key = ip.pt_cli.application.key_bindings_registry.add_binding
bind_key(Keys.ControlSpace)(generate_completions)
ip = get_ipython()
if getattr(ip, "pt_cli"): register_bindings()
del register_bindings
Catatan: Anda dapat menempatkan logika pendaftaran di blok if, tetapi menggunakan fungsi menghentikan nama seperti bind_key
bocor ke namespace sesi Anda. Setelah Anda memiliki banyak ikatan dan filter khusus yang ditentukan, Anda akhirnya membuat cukup banyak nama yang seharusnya Anda hapus secara manual. Menempatkan semuanya dalam suatu fungsi, lalu menghapus nama fungsi itu lebih bersih. Untuk kasus sederhana di atas, blok if mungkin akan lebih baik.
Itu berhasil! Terima kasih telah kembali padaku begitu cepat!
Ketika saya mencoba menjalankan yang di atas, saya mendapatkan AttributeError: 'TerminalInteractiveShell' object has no attribute 'pt_cli'
. Apakah ini masalah yang diketahui?
tulis yang berikut ini ke preferensi pengguna Anda dari pintasan keyboard
{
"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"
}
]
}
Komentar yang paling membantu
Pada dasarnya, Anda hanya perlu menambahkan kode ini ke file startup apa pun di profil Anda:
Anda harus benar-benar selalu memeriksa apakah Anda menjalankan terminal dengan PTK sebelum Anda menjalankan kode itu. Sesuatu seperti ini seharusnya berfungsi:
Catatan: Anda dapat menempatkan logika pendaftaran di blok if, tetapi menggunakan fungsi menghentikan nama seperti
bind_key
bocor ke namespace sesi Anda. Setelah Anda memiliki banyak ikatan dan filter khusus yang ditentukan, Anda akhirnya membuat cukup banyak nama yang seharusnya Anda hapus secara manual. Menempatkan semuanya dalam suatu fungsi, lalu menghapus nama fungsi itu lebih bersih. Untuk kasus sederhana di atas, blok if mungkin akan lebih baik.