2011-08-11 23 views
19

Mục đích là sử dụng dòng hiện tại làm TODO và gửi nó đến một số chương trình bên ngoài. Một cái gì đó như thế này:gửi dòng hiện tại sang lệnh bên ngoài trong vim (không chụp)

:! /usr/bin/todo "content of current line" 

tôi biết lệnh lọc nhưng điều này ngụ ý rằng tôi muốn chỉnh sửa bộ đệm hiện nay mà tôi không muốn (:.! Đóng vai trò như một bộ lọc). Tôi biết làm thế nào để có được các tập tin hiện tại với '%' nhưng không có cách nào để có được một số nội dung khác? Có lẽ bằng cách sử dụng: thực hiện ...

Trả lời

28

:.! hoạt động như một bộ lọc, nhưng :.w ! (nhớ không gian!) Chỉ cần vượt qua đầu ra. Xem :help :w_c. I E.

:.w !/usr/bin/todo - 
+0

Đây chính xác là những gì tôi đã tìm kiếm. Tôi đã kết thúc với một ánh xạ như bản đồ này ta: im lặng .w! Todo để tạo một todo từ dòng hiện tại. Cảm ơn ! – gaspard

+1

tôi đã xem xét và upvoted câu trả lời này bởi vì tôi đã quan tâm đến việc làm một cái gì đó tương tự. để thực hiện một lệnh bên ngoài trên tệp bắt đầu từ vị trí con trỏ, tôi đã sử dụng:., $ w! lệnh & – magnetar

+0

Không hoạt động bởi tôi. : .w! Ls ls: không thể truy cập -: Không có tệp hoặc thư mục nào như vậy shell trả về 2 – ka3ak

3

Bạn có thể chèn nội dung của thanh ghi vào dòng lệnh, làm như vậy một cái gì đó như:

"1y$ //yank current row to register 1 
: CTRL-R 1 //CTRL-R followed by register id pastes register to command line 

nên làm các trick.

0

Bạn có thể muốn một cái gì đó như thế này ánh xạ (tức là lưu trong .vimrc hoặc dán vào một : nhắc):

cmap <C-R>'   <C-R>=shellescape(getline('.'))<CR> 
cmap <C-R><C-R>' <C-R><C-R>=shellescape(getline('.'))<CR> 

Sau khi cài đặt, bạn sử dụng chúng như thế này:

:!/usr/bin/todo ^R' 

(loại một thực tế Điều khiển - R nơi ví dụ trên cho thấy ^R).

Bạn có thể nghĩ về chúng như các phiên bản chế độ dòng lệnh của registere-based Control-R và Control-R Control-R (xem :help c_CTRL-R, và :help c_CTRL-R_CTRL-R) nơi “tưởng tượng” đăng ký ' luôn chứa vỏ trích dẫn nội dung của dòng hiện tại.

Bởi vì những ánh xạ sử dụng tiền tố giống như ánh xạ built-in (xem :help chủ đề đề cập ở trên), bạn phải nhập các dấu nháy đơn cuối cùng trong vòng timeoutlen mili giây (xem :set timeoutlen?), hoặc nó sẽ mặc định được xây dựng trong bản đồ (xem :help map-typing).

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