2013-04-25 22 views
19

Câu hỏi này là về cấu hình bàn điều khiển R để hoạt động giống như một bash shell khi nói đến điều hướng lịch sử lệnh. Nó có phần liên quan đến ?history. Đối với các dòng có nhiều dấu ngoặc đơn, tôi muốn cấu hình điều hướng lịch sử lệnh của R tương tự như bash.Lịch sử lệnh R: cách cấu hình mũi tên lên để xử lý "đầu vào nhiều dòng, dấu ngoặc đơn" dưới dạng một dòng?

Hiện tại khi chạy R trong xterm trong Linux, sử dụng mũi tên lên để điều hướng lịch sử lệnh làm cho mỗi dòng trước được gọi lại, ngay cả khi một tập hợp các dòng được đặt trong dấu ngoặc. Điều này xảy ra, ví dụ, khi sao chép/dán chức năng nhiều dòng từ một trình soạn thảo văn bản vào bảng điều khiển R. Không phải như vậy với bash. Dưới đây là một ví dụ về cách bash chức năng trong vấn đề này:

Trong một vỏ bash trong một xterm dưới Linux, sau khi nhập năm dòng sau đây ...

a=1 
{ 
x=1 
y=1 
} 

... báo chí đầu tiên của các mũi tên lên sẽ nhớ lại một dòng tái lập duy nhất của các lệnh cú đúp kín, như thế này ...

{ x=1; y=1; } 

... và báo chí thứ hai sẽ nhớ này ...

a=1 

Dường như trong R, mũi tên lên điều hướng ngược một dòng tại một thời điểm, bất kể đóng gói. Có cách nào để cấu hình R sao cho các chức năng điều hướng lịch sử lệnh như bash's?

+4

Trong trường hợp bạn là người dùng Emacs (hoặc dự tính sẽ trở thành một), đó là câu hỏi. đáng nói đến là ESS (Emacs Speaks Statistics) chỉ là những gì bạn đang yêu cầu. Và có, nó * cực kỳ * tiện dụng. –

+7

Cũng như RStudio, nếu tôi hiểu câu hỏi một cách chính xác. –

+2

(OK, khi đọc lại câu hỏi của bạn, ESS thực sự làm điều gì đó hơi khác (và đẹp hơn), nhớ lại toàn bộ khối mã được dán, có hoặc không có dấu ngoặc đơn, hoặc bao gồm một vài biểu thức hoặc bất kỳ thứ gì.) –

Trả lời

0

Bạn có thể sử dụng rlwrap. Tôi sử dụng nó cho các chương trình console khác và nó hoạt động rất tốt. Bạn sẽ cần phải thêm vào lệnh R với nhị phân rlwrap và sau đó các dòng lịch sử của bạn có thể được khôi phục theo một số cách, bao gồm cả kết hợp nhiều dòng.

+0

Tôi đã thử cài đặt và chạy 'rlwrap R' và không thấy gì khác. Tôi có nên làm smth khác không ?? – eddi

+0

Kiểm tra tại đây http://utopia.knoware.nl/~hlub/rlwrap/rlwrap.html tùy chọn --multi-line. –

+1

ok, đã thử 'rlwrap -m R' và vẫn không có thay đổi hiển thị ...? – eddi

1

Giải pháp cho Linux/Unix

Tương tự như trong Rstudio (nhờ Ari B. Friedman bình luận), nơi người dùng trong R console đang sử dụng phím ShiftNhập để bỏ qua RETURN, bạn có thể bắt đầu dòng mới (trong thiết bị đầu cuối R) mà không chấp nhận lệnh dòng mới bằng cách sử dụng Ctrl-VCtrl-J. Bằng cách này, lệnh multi-line sẽ được chấp nhận vào lịch sử như một lớp lót với dòng-nguồn cấp dữ liệu thay vì đi vào và bạn thậm chí sẽ có cơ hội để chỉnh sửa nó. Bạn thậm chí có thể quản lý tệp .inputrc của mình để có kết hợp tùy chỉnh cho hành động này.

Tôi không nghĩ rằng việc cấu hình lại trực tiếp R là có thể.

Readline man page may help more.

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