Chèn đầu ra của lệnh hệ thống tại vị trí hiện tại trong vim


33

Trong vim, khi tôi sử dụng

:r !ls somefilename

nó chèn đầu ra của lệnh đó trên một dòng mới bên dưới dòng hiện tại.

Nếu tôi làm

let @a = system("ls")

và sau đó

"ap

nó vẫn chèn đầu ra trên một dòng mới bên dưới dòng hiện tại.

Có cách nào để tạo đầu ra chèn vim tại vị trí hiện tại không?


Tham khảo câu trả lời hữu ích này Thực hiện dòng hiện tại trong bash từ vim
Rohan Ghige

Câu trả lời:


14

Bạn có thể dán nội dung của bộ đệm clipboard giữa các ký tự bằng Ctrl-R * trong chế độ chèn (và cách tiếp cận tương tự cho các bộ đệm khác). Vì vậy, nếu bạn có thể nhận lệnh hệ thống vào bộ đệm, bạn nên được đặt. (Nguồn: https://stackoverflow.com/questions/1491135/paste-multi-line-opes-into-gvim-at-coder-poseition ).

:let @a=system("ls -l")sẽ đưa đầu ra của ls -lvào thanh ghi a. Sau đó, bạn có thể dán nó (trong chế độ chèn) với ^R-a.


Ngoài ra, trên hầu hết các nền tảng, bảng tạm được đồng bộ hóa với một thanh ghi (thông thường *), vì vậy nếu bạn đưa đầu ra lệnh của mình vào khay nhớ tạm thì nó sẽ được "*sử dụng cho bạn.
Bruno Bronosky

39
:r !command 

sẽ đọc đầu ra từ lệnh và chèn nó vào dòng dưới dòng hiện tại. Đây là cách vi được lập trình, bạn không thể thay đổi hành vi.

Nhưng nói nếu bạn ở dòng số 3. Nếu bạn cố gắng :r !date. Nó sẽ chèn giá trị ngày vào dòng số 4.

Nếu bạn muốn giá trị ngày xuất hiện trên dòng số 3, thì bạn thử :2r !datesẽ chèn giá trị ngày vào dòng số 3.


4
Điều đó chèn vào một dòng khác, nhưng vẫn trên một dòng của riêng nó. Tôi muốn chèn nó vào vị trí hiện tại!
deshmukh

13

Đây là cách khác để dán đầu ra từ lệnh bên ngoài trước con trỏ:

:exe 'norm i' . system("ls -l")

hoặc sử dụng thanh ghi biểu thức ( :help @=):

"=system('ls -la')

rồi đánh P. Hoặc cách ngắn hơn bằng cách:

<CTRL-R>=system('ls -la')<CR>

4
Đây là câu trả lời.
Jacob

1
Đã đồng ý! Đây thực sự phải là câu trả lời chính xác, bởi vì nó bao gồm một giải pháp lập trình nhiều hơn (với :exe) có thể được bao gồm trong các lệnh.
metadaarous
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.