วิธีการเปิดไฟล์ในกลุ่มโดยใช้ไพพ์


15

ฉันได้ใช้locateคำสั่งบ่อยมาก

ดังนั้นถ้าฉันรันคำสั่งต่อไปนี้

locate updatedb | head -1

จากนั้นมันทำให้ฉัน O/p

/usr/updatedb.conf

ฉันสงสัยว่ามีคำสั่งใด ๆ ที่ให้ฉันเปิดไฟล์นั้นโดยตรงหรือไม่?

ฉันหวังว่าจะมีอะไรเช่นนี้

locate updatedb | head -1 | vim

คำตอบ:


22

ใกล้จะเสร็จแล้ว:

$ locate updatedb | head -1 | xargs vim

บางครั้ง (ภายใต้เทอร์มินัลบางอย่าง) คุณต้องรีเซ็ตเทอร์มินัลหลังจากแก้ไข

$ reset

2
ส่วนใหญ่อาจเป็นรุ่นของคุณlocateมี-l/ --limit/ -nตัวเลือกดังนั้นคุณไม่จำเป็นต้องhead -1:locate -n 1 updatedb | xargs vim
Dmitry Alexandrov

1
เหตุใดเทอร์มินัลนี้จึงเกิดความเสียหาย มีวิธีหลีกเลี่ยงหรือไม่
Jacobo de Vera

16

ในฐานะที่เป็นบรรณาธิการแบบโต้ตอบ, Vim ต้องการทั้ง stdin และ stdout ดังนั้นการใช้มันภายใน pipe เป็นปัญหาและทำให้ Vim เตือนเกี่ยวกับสิ่งนี้ สำหรับไฟล์เดียวการทดแทนกระบวนการแก้ปัญหานี้ได้อย่างง่ายดาย:

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

นอกจากนี้คุณยังสามารถใช้ backticks และยังใช้งานได้ใน Vim ด้วย:

:edit `locate updatedb | head -1`

สิ่งนี้ยังทำงานกับสตริงที่มีช่องว่างซึ่งเหมาะสำหรับชื่อไฟล์เช่น "version 2 - final.csv"
Alex Moore-Niemi

0

ฉันรู้ว่านี่เป็นวิธีแก้ปัญหาที่ไม่ดี แต่ฉันใช้สิ่งนี้เพื่อสร้างนามแฝงใน. bashrc:

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

ข้อเสีย: น่าเกลียด

ข้อได้เปรียบ: ไม่มีผลข้างเคียงกับขั้ว

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