1
zsh ไม่สามารถอินพุตไปยังเทอร์มินัลเมื่อวาง stdin และ stdout ด้วยคำสั่งตัวแปรที่มีเอาต์พุต tty
ข้อมูลระบบ: macOS Sierra 10.12.6 zsh 5.4.2 (x86_64-apple-darwin16.7.0) GNU bash, version 4.4.12(1)-release (x86_64-apple-darwin16.3.0) เลื่อนไปที่ตัวอย่างที่ด้านล่างหากคุณเพียงต้องการขุดตัวอย่างง่าย ๆ ที่ฉันทำ หมายเหตุ: ฉันไม่ใช่zshผู้ใช้ที่ยิ่งใหญ่ ฉันกำลังมองหาfzfปุ่มลัดสำหรับbashและzsh. $(__fzfcmd)แจ้งให้ทราบว่าพวกเขาทั้งสองเรียกใช้คำสั่งตัวแปร __fzfcmdโดยเอาต์พุตดีฟอลต์fzfไปยัง stdout และการแทนที่พารามิเตอร์เพิ่งรัน command ( fzf) ซึ่งเป็นผลมาจากเอาต์พุต หนึ่งความแตกต่างระหว่างbashและzshสคริปต์เป็นที่bashหนึ่งต่อท่อส่งออกของ$(__fzfcmd)แต่zshเพียงแค่จับมันไว้ภายในอาร์เรย์ ฉันเดาว่าเป็นเพราะปัญหาzshเมื่อคุณไปป์ไลน์เอาท์พุทของfzfที่คุณไม่สามารถป้อนข้อมูลfzfและกระบวนการไพพ์ไปยังโดยfzfไม่ได้รับ stdin ใด ๆ ทางเลือกเดียวของคุณคือการหรือ^Z ดูเหมือนจะเป็นพื้นหลังกระบวนการด้วยเหตุผลบางอย่าง หรือบางทีพวกเขาแค่ต้องการแถวลำดับเพื่อที่จะได้วิ่งต่อไป รุ่นไม่มายากลบางอย่างในกุญแจสำคัญที่มีผลผูกพันกับ^C^Czle vi-fetch-historybash"\e^": history-expand-line ตอนนี้fzfไม่สำคัญ ดูเหมือนว่าคุณเพียงแค่ต้องใช้โปรแกรมที่ให้ผลลัพธ์ที่ttyจะเรียกโดยการทดแทนพารามิเตอร์เพื่อทำให้เกิดปัญหานี้ ดังนั้นฉันจะแสดงตัวอย่างที่ง่ายขึ้น ต่อไปนี้เป็นคำสั่งอื่น ๆ ที่ให้ผลลัพธ์ttyซึ่งอาจทำให้เกิดปัญหานี้ได้zsh: vipe (เรียกใช้เครื่องมือแก้ไขกลางท่อ) 'vim -' (ทำให้เป็นกลุ่มอ่านจาก stdin คล้ายกับ …