เมื่อฉันวางในเซสชันเทอร์มินัลของฉันเชลล์ดำเนินการคำสั่งทันทีโดยไม่ต้องกดปุ่ม Enter
ฉันไม่รู้วิธีปิดใช้งานพฤติกรรมดังกล่าวจริงๆ
ฉันใช้เทอร์มินัลที่ติดตั้งไว้แล้วใน MacOS Yosemite
bash
(ด้วยความช่วยเหลือของreadline
) มีการแก้ไข
เมื่อฉันวางในเซสชันเทอร์มินัลของฉันเชลล์ดำเนินการคำสั่งทันทีโดยไม่ต้องกดปุ่ม Enter
ฉันไม่รู้วิธีปิดใช้งานพฤติกรรมดังกล่าวจริงๆ
ฉันใช้เทอร์มินัลที่ติดตั้งไว้แล้วใน MacOS Yosemite
bash
(ด้วยความช่วยเหลือของreadline
) มีการแก้ไข
คำตอบ:
ด้วยbash
4.4 หรือใหม่กว่าและในเทอร์มินัลที่รองรับการวาง a la xterm
คุณสามารถทำสิ่งต่อไปนี้
bind 'set enable-bracketed-paste'
(หรือเพิ่มset enable-bracketed-paste
ในของคุณ~/.inputrc
)
ที่จะทำให้เกิดการ copy-paste buffer จะถูกแทรกที่พร้อมท์แทนของตัวละครในนั้นที่จะตีความว่าถ้าพิมพ์ (คุณอาจจะยังคงมีปัญหาถ้าบัฟเฟอร์ที่มีตัวอักษรเช่น^C
, ^Z
และจำลอง terminal ของคุณไม่ได้กรองออก) .
zsh
ทำตามค่าเริ่มต้นตั้งแต่รุ่น 5.1
สำหรับเชลล์หรือเทอร์มินัลอื่น ๆ ดูเพิ่มเติม: ฉันจะป้องกันตัวเองจากการละเมิดคลิปบอร์ดประเภทนี้ได้อย่างไร
xterm
คุณสามารถลองใช้แทนได้ คุณลองใช้perl
สคริปต์ในคำถามที่เชื่อมโยงแล้วหรือยัง
สิ่งนี้จะเกิดขึ้นเมื่อคุณวางอักขระ "ขึ้นบรรทัดใหม่" ตัวอย่างเช่นหากคุณวางหลายบรรทัดหรือคัดลอกการขึ้นบรรทัดใหม่ที่ท้ายบรรทัด AFAIK ไม่มีวิธีใดที่จะปิดการใช้งานพฤติกรรมนี้ได้จริง แต่มีวิธีการที่จะลดผลกระทบดังกล่าว
วิธีที่ง่ายที่สุดคือการคัดลอกทีละบรรทัดและพลาดอักขระตัวสุดท้ายแล้วเพิ่มมันภายหลังด้วยตนเอง
หรือตามที่ the_velour_fog ชี้ให้เห็นด้านล่างคุณสามารถวางลงในเครื่องมือแก้ไขที่แสดงตัวอักษรที่ไม่ได้พิมพ์และเลือกใหม่โดยไม่ต้องขึ้นบรรทัดใหม่
มีวิธีแก้ไขปัญหาหนึ่งหรือสองอย่างที่ลอยไปมาสำหรับ GNU / Linux distros แต่ไม่ทราบว่าแนวคิดนั้นสามารถส่งไปยัง MacOS ได้หรือไม่ ลองดูที่นี่และดูว่ามีไฟล์ที่คล้ายกันใน mac ที่คุณสามารถแก้ไขได้หรือไม่ น่าเสียดายที่ฉันสงสัย
ก่อนวางให้พิมพ์ใบเสนอราคาเดียวแล้ววาง control-c และ up-arrow เพื่อแก้ไขเป็นหนึ่งบรรทัดยักษ์
เครื่องหมายคำพูดคู่ยังใช้งานได้ในกรณีที่ข้อความมีเครื่องหมายคำพูดเดี่ยว แต่ไม่ใช่เครื่องหมายคำพูดคู่ ไม่เป็นไรถ้ามันมี$
หรือสิ่งอื่น ๆ ที่ขยายภายในเครื่องหมายคำพูดคู่เนื่องจากคุณไม่ได้ใช้งานบรรทัดยักษ์ที่ยกมาเป็นคำสั่งเดียว
คุณไม่สามารถแก้ไขทุกสิ่งได้จริงเพราะมีการขึ้นบรรทัดใหม่เริ่มต้นการแจ้งเตือนการต่อเนื่อง
รับ 4 บรรทัดเหล่านี้:
echo
ls
foo
bar
การวางตามที่ฉันแนะนำจะส่งผลให้เกิดสิ่งนี้บนหน้าจอของคุณ:
$ 'echo
> ls
> foo
> bar <or cursor here if you didn't include a trailing newline
> [cursor here]
จากนั้นคุณสามารถกด control-C และลูกศรขึ้น (ตัวควบคุม - C จะทำลายทุกอย่างในบรรทัดเดียวกับเคอร์เซอร์ดังนั้นให้กดย้อนกลับก่อนหากมีข้อความที่เป็นประโยชน์อยู่ที่นั่น)
อีกทางเลือกหนึ่งคือปิดใบเสนอราคาและกดปุ่มย้อนกลับจากนั้นลูกศรขึ้นที่
อย่างไรก็ตามหลังจากลูกศรขึ้น
$ 'echo
ls
foo
bar
'
การควบคุมและลบชั้นนำ ใช้ control-left และ control-right เพื่อเลื่อนผ่านบล็อกวางอย่างรวดเร็ว (โดยคำ) หรือถ้าการตั้งค่าเทอร์มินัลของคุณไม่รองรับ control-arrow-keys, alt-b และ alt-f
บรรทัดใหม่ที่แท้จริงทำแยกออกคำสั่งจริงและสิ่งเหล่านี้ 4 สายจะเข้าไปในประวัติคำสั่งของคุณต่างหาก คุณอาจต้องการที่จะเปลี่ยนให้พวกเขาหรือ;
&&
(ฉันไม่รู้เคล็ดลับสำหรับสิ่งนั้นเพียงใช้คีย์ซ้ำสำหรับไปข้างหน้าหรือข้างหลังคำเพื่อไปที่นั่นอย่างรวดเร็วและทำด้วยตนเอง)
สิ่งนี้เกิดขึ้นเนื่องจากการวางของคุณลงท้ายด้วยการขึ้นบรรทัดใหม่และเทอร์มินัลอีมูเลเตอร์โดยทั่วไปจะวางแปะเพื่อทุบอักขระโดยอักขระ ในขั้นตอนนี้ทุบตีจะไม่รู้จักนักพิมพ์ดีดมนุษย์จากเครื่องจักรจริงๆ
ฉันมักจะให้ความสนใจเป็นพิเศษเมื่อทำการคัดลอกที่ไม่รวมบรรทัดใหม่ แต่มีเคล็ดลับที่คุณสามารถลอง: ก่อนวางในทุบตีพิมพ์สิ่งC-x C-e
ต่อไปนี้ มันควรเปิดตัว$EDITOR
ด้วยไฟล์ว่างเปล่า สิ่งที่คุณบันทึกไว้ในไฟล์นั้นและออก, bash จะทำงาน ดังนั้นตอนนี้คุณสามารถวางคำสั่งของคุณไปที่เครื่องมือแก้ไขอาจจัดการสิ่งต่าง ๆ เพิ่มเติมและเรียกใช้พวกเขาทั้งหมดในครั้งเดียว
ฉันไม่ได้เกี่ยวข้องกับ บริษัท ฉันเป็นลูกค้าที่พึงพอใจมาก ลองนี้โปรแกรมมินัล: http://www.emtec.com/zoc/index.html นอกจากนี้ยังมีเวอร์ชั่นสำหรับ Mac
หากฉันละเมิดกฎ SE ใด ๆ โปรดแจ้งให้เราทราบและฉันจะลบคำตอบ
แก้ไข:
เมื่อฉันเข้าใจคำตอบอื่น ๆ อย่างถูกต้องปัญหานี้อาจเกิดจากโปรแกรมเทอร์มินัล โปรแกรมเทอร์มินัล ZOC เป็นซอฟต์แวร์มืออาชีพที่ได้รับการออกแบบมาอย่างสมบูรณ์แบบสำหรับการใช้งาน วางข้อความที่คุณเลือกโดยไม่มีอักขระเพิ่มเติม คุณสามารถบันทึกเซสชันของคุณในไฟล์ข้อความแยกต่างหาก และอีกมากมาย
ปรับปรุง:
Paste without final 'newline'
โปรแกรมมินัลมีตัวเลือก อาจเป็นสิ่งนี้ช่วย