Cập nhật: Câu hỏi vẫn còn thiếu câu trả lời thỏa đáng.IPython trong Emacs. Đánh giá mã nhanh
Tôi muốn "gửi" các đoạn mã tới trình thông dịch IPython trong Emacs 23.2 (Linux). Giả sử rằng tôi đã bắt đầu một vỏ IPython trong một bộ đệm trong Emacs (ví dụ: sử dụng Python-mode.el
và IPython.el
), có cách nào để chọn một vùng trong bộ đệm khác và "gửi" vùng này tới vỏ IPython đã bắt đầu không?
Tôi đã thử C-c C-c
(gửi-đệm-to-shell) và C-c |
(gửi vùng-to-shell), nhưng này chỉ hoạt động chừng nào các mã được viết bằng Python và không có trong IPython (IPython có thể chạy mã Python). Lý do có vẻ như vậy, đối với cả hai lệnh, Emacs tạo một tệp tạm thời với phần mở rộng là .py
(ngược lại với phần mở rộng là .ipy
), sau đó được giải thích bởi IPython là "mã dành riêng cho Python". Điều này ngăn cản tôi sử dụng các tính năng cụ thể của IPython chẳng hạn như lệnh ma thuật.
Trên ghi chú riêng, tôi cũng đọc rằng Emac cung cấp M-| ('shell-command-on-region')
để chạy các vùng được chọn trong trình bao. Để thực hiện điều này với một trình thông dịch IPython, tôi đã thử đặt shell-file-name
thành đường dẫn IPython của tôi. Tuy nhiên, khi tôi chạy sau khi chọn một khu vực, Emacs nhắc nhở tôi như sau:
Shell lệnh vào khu vực:
và nếu tôi sau đó gõ RET
, tôi nhận được người đàn ông trang IPython trên *Shell Command Output*
bộ đệm, không có vùng được thực thi. Có bất kỳ lệnh IPython cụ thể mà tôi có thể sử dụng cho M-| ('shell-command-on-region')
để có được IPython chạy mã của tôi?
Cảm ơn!
Giả sử bạn có thể chạy trực tiếp ipython, tôi nghi ngờ bạn thực sự muốn thoát 'shell-file-name' một mình, và chỉ cần nhập tên thực thi ipython tại dấu nhắc. Đó là cách sử dụng bình thường cho 'shell-command-on-region', ở mức nào. Lịch sử minibuffer sẽ nhớ rằng lệnh, vì vậy bạn có thể dễ dàng lặp lại nó với 'M- | M-p RET'. Tôi không chắc chắn cách 'call-process-region' hoạt động, nhưng tôi tưởng tượng nó sẽ gửi văn bản vùng tới lệnh như stdin, miễn là lệnh ipython có thể xử lý việc nhận kịch bản theo cách đó, tôi nghĩ nó nên để làm việc (mặc dù nếu không, nó có thể giải thích cho văn bản trợ giúp). – phils
Cảm ơn bạn phils, giải pháp đó hoạt động, nhưng nó đòi hỏi phải mở bắt đầu một vỏ IPython mới (mất một thời gian để bắt đầu) mỗi lần tôi cần kiểm tra đoạn mã –