วิธีใช้ไพพ์เพื่อแก้ไขไฟล์ด้วย vi


15

ช่วยบอกว่าฉันมีไฟล์ชื่อ file.txt ในนั้นเป็นชื่อของไฟล์ที่ฉันต้องการแก้ไขด้วย vi ฉันต้องการทำอะไรเช่นนี้เพื่อที่ฉันจะสามารถแก้ไขไฟล์:

cat file.txt | vi

อย่างไรก็ตามนั่นไม่ได้ผล จะทำอย่างไร?

เพื่อชี้แจงสิ่งต่าง ๆ :

นี่คือเนื้อหาของ file.txt:

textfile

ดังนั้นผมจึงต้องการอย่างใดส่งเนื้อหาของ file.txt เพื่อ vi vi textfileเพื่อให้สิ่งเดียวกันที่จะเกิดขึ้นเมื่อการพิมพ์

เนื้อหาของ file.txt สามารถเปลี่ยนแปลงได้ ฉันต้องการให้ vi แก้ไขไฟล์ใดก็ได้ที่ระบุไว้ใน file.txt


ฉันไม่คิดว่า vi = เป็นกลุ่ม ฉันไม่รู้ว่ามันสร้างความแตกต่างให้กับคำถามนี้ แต่แท็กของคุณทำให้เข้าใจผิด
soandos

ฉันคิดว่าอาจมีคำถามของคุณมากกว่าที่คุณพยายามถาม การเปิดไฟล์ที่มีชื่อโดยพลการคือการใช้งานฐานของ vi vi file.txtเช่น: มีบางสิ่งที่ก้าวหน้ากว่าที่คุณพยายามทำหรือไม่?
camster342

vi เริ่มต้นเป็นกลุ่มบน OSX และบนระบบ Linux อื่น ๆ ที่ทันสมัย
tony_sid

ฉันกำลังพยายามแก้ไขไฟล์ที่มีชื่อถูกเก็บไว้ในคลิปบอร์ด OSX การพิมพ์ pbpaste จะแสดงชื่อไฟล์ ฉันพยายามแก้ไขไฟล์นี้โดยไม่ต้องพิมพ์ แต่โดยใช้สิ่งที่เก็บไว้ในคลิปบอร์ด Linux ไม่มี pbpaste แต่โดยพื้นฐานแล้วมันก็เหมือนกับการเอาท์พุทจากชื่อไฟล์ cat
tony_sid

ติดตั้งxclipและใช้xclip -oเพื่อเข้าถึงคลิปบอร์ดบนเชลล์ใน x11 ในกรณีที่คุณจำเป็นต้องเปลี่ยนpbpaste...
อากิระ

คำตอบ:


9

คุณอาจลองสิ่งนี้:

% vi `cat file.txt`

หรือเพื่อหลีกเลี่ยงการใช้ useles ของแมว:

% vi `< file.txt`

คุณกำลังบอก vi (m) เพียงสิ่งต่าง ๆ โดยพลการ หากคุณต้องการให้ vi (m) ทำอะไรเช่น 'เฮ้เปิดไฟล์นั้น' คุณต้องป้อนคำสั่งเดียวกับที่คุณใช้ใน vi (m) เช่น :e foo.txtสิ่งที่ชอบ แต่นั่นซับซ้อนกว่าทำสิ่งที่ฉันเสนอ


สิ่งเหล่านั้นไม่ทำงาน
tony_sid

4
คุณพิมพ์พวกมันถูกต้องไหม? พวกเขาเปิด subshell เรียกใช้ 'cat' ... หากไม่ได้ผลให้ลอง vi $(cat file.txt)
Akira

โอเคใช้ได้เลยตอนนี้ ขอบคุณ.
tony_sid

23

อย่างน้อยสำหรับกลุ่ม (ไม่แน่ใจเกี่ยวกับ vi) คุณสามารถทำได้

cat file.txt | vim -

The '-' บอกให้กลุ่มอ่านจาก stdin


1
ขออภัยนี่ไม่ใช่คำตอบที่ถูกต้อง สิ่งนี้จะเปิดเป็นกลุ่มพร้อมไฟล์ 'textfile' ผู้ถามต้องการให้ vim เปิด 'textfile' เอง ฉันลงคะแนน แต่น่าเสียดายที่ฉันไม่มีชื่อเสียงเพียงพอที่นี่
scubbo

scubbo ถูกต้อง! คำตอบของฉันมีประโยชน์มากกว่าเพียงแค่การวางท่อจาก stdin
Jeff
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.