Cách sử dụng đường ống để chỉnh sửa tệp bằng vi


15

Hãy nói rằng tôi có một tệp gọi là file.txt. Trong đó là tên của một tập tin mà tôi muốn chỉnh sửa với vi. Tôi muốn làm một cái gì đó như thế này để tôi có thể chỉnh sửa tập tin:

cat file.txt | vi

Tuy nhiên, điều đó không làm việc. Nó được hoàn thiện bằng cách nào?

Để làm rõ mọi thứ:

Dưới đây là nội dung của file.txt:

textfile

Vì vậy, tôi muốn bằng cách nào đó gửi nội dung của file.txt đến vi để điều tương tự sẽ xảy ra như khi gõ vi textfile.

Nội dung của file.txt có thể thay đổi. Tôi muốn vi chỉnh sửa bất cứ tập tin nào được liệt kê trong file.txt.


Tôi không nghĩ rằng vi = vim. Tôi không biết rằng điều đó tạo ra sự khác biệt cho câu hỏi này, nhưng thẻ của bạn gây hiểu nhầm.
soandos

Tôi nghĩ rằng có thể có nhiều câu hỏi của bạn mà bạn đang cố gắng hỏi. Mở một tệp có tên tùy ý là cách sử dụng cơ sở của vi. tức là : vi file.txt. Có điều gì cao cấp hơn bạn đang cố gắng làm?
camster342

vi bắt đầu vim trên OSX và trên các hệ thống Linux hiện đại khác.
tony_sid

Tôi thực sự đang cố gắng chỉnh sửa một tệp có tên được lưu trữ trong bảng tạm OSX. Gõ pbpaste sẽ hiển thị tên tệp. Tôi đang cố gắng chỉnh sửa tệp này mà không thực sự phải gõ nó, nhưng bằng cách sử dụng bất cứ thứ gì được lưu trữ trong bảng tạm. Linux không có pbpaste, nhưng về cơ bản nó giống như lấy đầu ra từ tên tệp con mèo.
tony_sid

cài đặt xclipvà sau đó sử dụng xclip -ođể truy cập vào bảng tạm trên shell trong x11. chỉ trong trường hợp bạn cần thay thế pbpaste...
akira

Câu trả lời:


9

bạn có thể thử điều này:

% vi `cat file.txt`

hoặc, để tránh việc sử dụng mèo của mèo:

% vi `< file.txt`

bạn đang nói vi (m) chỉ là một loạt những điều tùy tiện. nếu bạn muốn vi (m) thực hiện một cái gì đó như 'hey, hãy mở tệp đó', bạn phải cung cấp cho nó các lệnh giống như bạn sẽ sử dụng trong vi (m), vd. một cái gì đó giống như :e foo.txt. nhưng đó chỉ là phức tạp hơn so với làm những gì tôi đề xuất.


Những người đã không làm việc.
tony_sid

4
Đó là những backticks, bạn gõ chúng đúng không? họ mở một mạng con, thực hiện 'con mèo' ... nếu điều đó không hiệu quả, hãy thử vi $(cat file.txt)
akira

Oh ok, nó hoạt động bây giờ. cám ơn.
tony_sid

23

Ít nhất là đối với vim (không chắc chắn về vi), bạn có thể làm

cat file.txt | vim -

'-' bảo vim đọc từ stdin.


1
Xin lỗi, nhưng đây không phải là câu trả lời chính xác. Điều này mở ra vim với nội dung 'textfile'. Người hỏi muốn vim mở 'textfile'. Tôi downvote nhưng đáng buồn là tôi không có đủ danh tiếng ở đây.
scubbo

Scubbo là đúng! Câu trả lời của tôi hữu ích hơn cho việc chỉ cần một cái gì đó từ stdin.
Jeff
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.