Cách mở tệp trong vim bằng ống


14

Tôi nhận được để sử dụng locatelệnh cực kỳ thường xuyên.

Vì vậy, nếu tôi chạy lệnh sau.

locate updatedb | head -1

Sau đó, nó cho tôi O/p

/usr/updatedb.conf

Tôi tự hỏi nếu có bất kỳ lệnh như vậy có thể cho phép tôi mở tập tin đó trực tiếp?

Tôi hy vọng cho một cái gì đó như thế này.

locate updatedb | head -1 | vim

Câu trả lời:


21

Bạn sắp hoàn thành:

$ locate updatedb | head -1 | xargs vim

đôi khi (dưới một số thiết bị đầu cuối) bạn cần đặt lại thiết bị đầu cuối sau khi chỉnh sửa.

$ reset

2
Rất có thể là phiên bản locate-l/ --limit/ -ntùy chọn của bạn, do đó bạn không cần head -1:locate -n 1 updatedb | xargs vim
Dmitry Alexandrov

1
Tại sao tham nhũng thiết bị đầu cuối này xảy ra? Có cách nào để tránh nó không?
Jacobo de Vera

16

Là một biên tập viên tương tác, Vim cần cả stdin và stdout, vì vậy sử dụng nó trong một đường ống là vấn đề và khiến Vim cảnh báo về điều này. Đối với chỉ một tệp duy nhất, quá trình thay thế giải quyết điều này một cách dễ dàng:

vim "$(locate updatedb | head -1)"

Bạn cũng có thể sử dụng backticks và thậm chí nó hoạt động bên trong chính Vim:

:edit `locate updatedb | head -1`

Điều này cũng hoạt động trên các chuỗi có khoảng trắng, rất phù hợp với tên tệp như "phiên bản 2 - Final.csv".
Alex Moore-Niemi

0

Tôi biết đây là giải pháp tồi nhưng tôi đã sử dụng nó để tạo bí danh trong .bashrc:

locate updatedb  > /tmp/vimForTempDontTouch && vim /tmp/vimForTempDontTouch

Nhược điểm: xấu xí

Ưu điểm: Không có tác dụng phụ với thiết bị đầu cuối

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.