2015-04-06 19 views
7

Tôi muốn có thể thực thi mã theo từng dòng trong một đoạn mã nằm trong bộ đệm org. Mục tiêu của tôi là thực thi mã line-by-line mà không phải chạy tất cả các mã bên trong một đoạn cùng một lúc (C-c C-c), và không cần phải chuyển sang một bộ đệm đặc biệt (C-c '). Tôi sử dụng R, nhưng nó có thể được áp dụng cho bất kỳ ngôn ngữ nào khác. Có cách nào để làm việc này không?Làm thế nào để đánh giá dòng mã-by-line trong chế độ org?

Ví dụ: Chỉ thực thi dòng đầu tiên trong đoạn mã sau, sao cho biến a nhận giá trị 7 trong phiên.

#+BEGIN_SRC R :session 
a <- 3 + 4 
a <- 5 + 6 
#+END_SRC 
+0

Tiêu chí bạn muốn sử dụng để biết (những) dòng nào sẽ được thực thi? –

+0

Tiêu chí đánh giá là dòng bên dưới con trỏ. Tôi đoán rằng cuối cùng tôi nên gọi hàm ess-eval-region-or-line-and-step, nhưng không chắc chắn cách tốt nhất để làm điều đó là gì. Có thể thay đổi thành chế độ ess trong khi con trỏ nằm trong đoạn mã? – Rodrigo

+0

@Rodrigo Để làm rõ, bạn có quan tâm đến đầu ra được đưa vào '# + KẾT QUẢ:'? Nếu không, nó là tầm thường để làm điều này bằng cách chạy 'M-x ess-eval-region-hoặc-line-and-step' như bạn đã nói. Bạn có thể cung cấp cho điều này một ràng buộc quan trọng và sử dụng nó ngay cả khi bộ đệm của bạn không ở chế độ ess –

Trả lời

5

Không phải là một câu trả lời hoàn chỉnh nhưng tôi muốn nói rằng nếu bạn muốn chạy line-by-line, nó có lẽ là tốt hơn để làm điều này trong một phiên R thực tế cho đến khi bạn tìm ra những gì bạn thực sự muốn.

Nếu bạn thực sự muốn kết quả ở nhiều giai đoạn, bạn có thể chia nhỏ các mã thành nhiều khối và họ sẽ sử dụng R cùng phiên 'phiên'

#+BEGIN_SRC R :session                                               
a <- 3 + 4                                                  
#+END_SRC                                                  

#+RESULTS: 
: 7                                                    

#+BEGIN_SRC R :session                                               
a <- a + 6                                                  
#+END_SRC                                                  

#+RESULTS: 
: 13                                                   
+0

Nó có vẻ lạ, nhưng mục tiêu của tôi là chính xác để tránh có nhiều khối trong một bộ đệm, mà đau dễ đọc. Mục tiêu của tôi là có khối mã lớn và có thể chạy từng dòng cho mục đích thử nghiệm. – Rodrigo

+0

Trong trường hợp đó, chúng ta có thể sửa đổi một số mã org-babel để chạy một dòng thay vì toàn bộ khối src. Tôi sẽ xem xét điều này. Tôi nghĩ rằng chúng ta có thể làm điều đó bằng cách sửa đổi một hàm như 'org-babel-R-evaluation-session' trong ob-R.el (xem mã tại đây http://orgmode.org/w/?p=org-mode. git; a = blob_plain; f = lisp/ob-R.el; hb = HEAD) –

2

Trong một khối mã, bạn có thể sử dụng để chuyển đổi C-c C-v z đến phiên với mã. Sau đó, bạn có thể đánh giá từng dòng như thể bạn đang ở trong tệp .R và quay lại tệp .org với C-'

Hãy xem tài liệu. hoặc C-c C-h trong tệp .org để tham khảo nhanh.

Các vấn đề liên quan