Copy-Paste ใน xfce4-terminal เพิ่ม 0 ~ และ 1 ~


105

ฉันใช้ xubuntu 14.04, 64 บิต ทุก ๆ ครั้งเมื่อฉันพยายามวางข้อความใน xfce4-terminal แทนที่จะวางข้อความที่คาดหวังไว้มันจะถูกล้อมรอบด้วย0~และ1~เช่น:

0~mvn clean install1~

ข้อความควรจะเป็นmvn clean install- ฉันตรวจสอบเรื่องนี้โดยการวางเนื้อหาในแอปพลิเคชันอื่น ๆ (gnome-terminal, gedit และอื่น ๆ ) ทุกแอปพลิเคชันวางเนื้อหาอย่างถูกต้องยกเว้น xfce4-terminal ฉันไม่พบการอ้างอิงใด ๆ สำหรับสิ่งนี้ทางอินเทอร์เน็ต (น่าเสียดายที่มันยากที่จะค้นหาข้อความที่มีอักขระพิเศษใน google.com ... ) ทำไมสิ่งนี้ถึงเกิดขึ้น


คุณเป็นอย่างไรบ้าง คลิกกลางหรืออย่างอื่นใช่ไหม
Celada

1
ฉันได้ลองทุกวิธี: คลิกกลางคลิกขวาและเลือกตัวเลือกวาง ctrl + shift + v เมื่อตัวอักษร 0 ~ และ 1 ~ ปรากฏขึ้นมันไม่สำคัญว่าวิธีการวางที่ฉันใช้
พฤกษศาสตร์

คำตอบ:


144

ปัญหาคือเทอร์มินัลของคุณอยู่ในโหมดการวางแบบวงเล็บ แต่ดูเหมือนจะไม่รองรับ ปัญหาได้รับการแก้ไขใน VTE แต่ xfce4-terminal ยังคงใช้รุ่นเก่าและไม่ได้ลบล้าง

คุณสามารถลองปิดโหมดการวางแบบวงเล็บเหลี่ยมชั่วคราวโดยใช้:

printf "\e[?2004l"

4
หากคุณไม่สามารถทำซ้ำได้อาจเป็นได้ว่าคุณกำลังเรียกใช้บางโปรแกรมที่เปิดใช้งานโหมดวางที่มีวงเล็บแล้วและมันก็ล้มเหลวดังนั้นจึงไม่สามารถปิดใช้งานได้ก่อนที่จะออก
kyrias

4
เยี่ยมมากขอบคุณ! ฉันดิ้นรนกับปัญหานี้มานานกว่าหนึ่งปี เป็นไปได้ไหมที่จะปิดการใช้งาน BTW ใครจะทำสิ่งที่บ้าคลั่งเช่นนี้? ;)
Adam Romanek

4
มันขึ้นอยู่กับสถานีของคุณ และเป็นคุณสมบัติที่มีประโยชน์มากเพราะช่วยให้แอปพลิเคชันทราบว่ามีบางสิ่งที่พิมพ์หรือวาง สำหรับหนึ่ง, weechat, โปรแกรม IRC, ใช้มันเพื่อถามว่าคุณต้องการส่งพาสหลายบรรทัดหรือไม่, ซึ่งมันทำไม่ได้หากไม่มีโหมด paste ที่วางวงเล็บตั้งแต่นั้นจะไม่มีวิธีรู้ว่าผู้ใช้พิมพ์บรรทัดหรือไม่ ไม่.
kyrias

1
ฉันจะค้นหาว่าโปรแกรมใดที่ messing ด้วยโหมด paste paste
aviggiano

3
สำหรับการแจกแจงตาม Ubuntu คุณสามารถลองติดตั้งแพ็คเกจ 'vte' จากpatchpad.net/~adrozdoff/+archive/ubuntu/vte
Denis Bakharev

78

ปัญหาของฉันเกิดจากเซสชัน bash ถูกปิดไม่ดี ดังนั้นการรันคำสั่งresetในเทอร์มินัลของฉันจึงแก้ไขได้ทันที


2
สิ่งนี้ใช้ได้สำหรับฉัน
AFP_555

และมันก็ได้ผลสำหรับฉัน!
tomd

เกิดขึ้นกับ Ubuntu 16.04 โดยใช้ terminator รีเซ็ตใช้งานได้!
user1270710

เทอร์มินัลของฉันก็ทำเช่นเดียวกันและใช้ Ubuntu 16.04 ด้วย ทำงานresetในการเชื่อมต่อ SSH ของฉันได้รับการแก้ไข
Marcello Grechi Lins

23

ฉันมีปัญหาเดียวกันมันเกิดขึ้นหลังจากฉันใช้ vi

เหมืองได้รับการแก้ไขโดยการเพิ่มไฟล์set t_BE= ของฉัน.vimrc

สำหรับการอ้างอิงนี่คือสิ่งที่ t_BE ทำ:

t_BE เปิดใช้งานโหมดการวางที่ถูกวงเล็บ


7
นั่นเป็นสาเหตุที่แท้จริงขอบคุณ! ในกรณีของฉันมันเริ่มต้นเมื่อฉันอัพเกรดเป็น VIM 8
rgerganov

1
คุณช่วยอธิบายได้ว่าชุด t_BE = ทำอะไรและทำไมมันถึงแก้ปัญหาได้?
Francesco Boccardo

7

พฤติกรรมนี้เกิดขึ้นเมื่อจำลอง terminal จะติดอยู่ในโหมดวางวงเล็บ

สิ่งนี้มักจะเกิดขึ้นเมื่อแอปพลิเคชันออกอย่างไม่สะอาด (ขัดข้องหรือบั๊ก)

เหตุผลสำหรับปรากฏการณ์ที่จะเกิดขึ้นบ่อยครั้งก็คือข้อผิดพลาดในรุ่นเก่าของ VTE (VTE เป็นเครื่องมือการจำลอง terminal ใต้gnome-terminalและxfce4-terminalอื่น ๆ อีกมากมาย) ซึ่งจะถูกเรียกโดยการกระทำบางอย่างในระบบสาธารณูปโภคบางอย่างเช่นการสลับแผงในผู้บัญชาการเที่ยงคืน

หากต้องการดูว่าข้อผิดพลาดนี้ได้รับการแก้ไขในเทอร์มินัลอีมูเลเตอร์ที่ใช้ VTE หรือไม่: เรียกใช้งานตัวเลือกecho -ne '\e[>c'นี้จะแทรกอักขระสองสามตัวราวกับว่าคุณพิมพ์ หากหมายเลขกลางมากกว่า3602หรือมากกว่าข้อผิดพลาด VTE เก่าดังกล่าวจะไม่ปรากฏให้คุณเห็นอีกต่อไป หากจำนวนน้อยกว่านั้น VTE จะยังคงได้รับผลกระทบและติดอยู่ในโหมดการวางแบบวงเล็บเหลี่ยมบ่อยกว่าที่ควร

เพื่อดูว่าจำลอง terminal บางอย่างได้รับการแก้ไขในการกระจาย Ubuntu บางตรวจสอบการอ้างอิงที่มีต่อpackages.ubuntu.com libvte-2.91-0ดี. libvte-2.90-9จะดีก็ต่อเมื่อแพ็คเกจจริงนั้นเป็น 0.36.2 หรือใหม่กว่าและlibvte9ไม่ดี โดยเฉพาะอย่างยิ่งxfce4-terminalมีรถใน Xenial และได้รับการแก้ไขใน Zesty


1

สิ่งนี้อาจใช้ไม่ได้กับปัญหาของคุณโดยตรง แต่ฉันพบว่าอาการนี้อาจเกิดจากตัวแก้ไข 'mcedit' (บรรณาธิการเที่ยงคืน)

เพื่อลดปัญหาบั๊กฉันได้เพิ่มฟังก์ชั่นต่อไปนี้ในไฟล์. bashrc ของฉัน:

### vvv 'function mcedit' is a fix-up for the ~0/~1 paste problem
function mcedit() { command mcedit $@ ; printf '\e[?2004l' ; }

จากนั้น 'แหล่งที่มา. bashrc'

ตอนนี้ทุกครั้งที่ฉันเรียกใช้งาน 'mcedit' มันจะเพิ่ม 'printf "\ e [? 2004l"' โดยอัตโนมัติเมื่อฉันปิดการใช้งานเพื่อรีเซ็ต "โหมด Pasteed Paste"

ใช้งานได้สำหรับฉัน YMMV

วิธีการเดียวกันนี้สามารถใช้กับ vi, vim, nano หรือโปรแกรมอื่น ๆ ที่ทำงานผิดปกติได้

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