วิธีการกำหนดค่าพฤติกรรมการคลิกสองครั้งในเทอร์มินัล X?


16

ภายใต้ระบบ Unix / Linux ที่แตกต่างกันฉันได้สังเกตพฤติกรรมการคลิกสองครั้งที่แตกต่างกันในแอปพลิเคชัน X Terminal (เช่น xterm)

บางครั้งการคลิกสองครั้งจะเลือกทุกอย่างทางซ้ายและขวาจนกว่าอักขระที่ไม่ใช่ตัวอักษรถัดไป (เช่นจะเลือกคำใต้เคอร์เซอร์)

บางครั้งทุกอย่างจนกว่าจะมีการเลือกเปล่า / eol ถัดไป (เช่นเส้นทางเต็มภายใต้เคอร์เซอร์จะถูกเลือก)

ฉันจะกำหนดค่าพฤติกรรมการดับเบิลคลิก - พูด - เป็น xterm (เพราะมันมีอยู่ในระบบส่วนใหญ่)?

ปัจจุบันฉันพบว่าโหมดที่ 2 สะดวกกว่าสำหรับกรณีใช้งานส่วนใหญ่

คำตอบ:


19

คุณทำกับทรัพยากร X ฉันมีไฟล์.Xresourcesที่มีทรัพยากรที่เกี่ยวข้องกับ xterm เหล่านี้:

XTerm*VT100.cutNewLine: false
XTerm*VT100.cutToBeginningOfLine: false
XTerm*VT100.charClass: 33:48,35:48,37:48,42:48,45-47:48,64:48,95:48,126:48

ใน.xinitrcไฟล์ของฉันฉันมีบางบรรทัดที่รวมอยู่ในทรัพยากรเหล่านั้น:

if [ -f $userresources ]; then
    /usr/X11/bin/xrdb -merge $userresources
fi

บรรทัดเหล่านั้นทำให้ xterm ดับเบิลคลิกและคลิกสามครั้งทำสิ่งที่ฉันชอบ:

ดับเบิลคลิกจะพิจารณาคำว่า "word" เพื่อรวมเครื่องหมายสแลช (/), dot (.), เครื่องหมายดอกจัน (*) และอักขระอื่น ๆ ที่ไม่ใช่ตัวอักษรและตัวเลข นั่นคือทรัพยากร "charClass" ฉันต้องเล่นซอน่าเบื่อกับ charClass เพื่อให้มันทำในสิ่งที่ฉันต้องการ ซึ่งส่วนใหญ่ให้คุณดับเบิลคลิกที่ URL และเส้นทางที่ผ่านการรับรองหรือบางส่วนเพื่อเน้น

อีกสองบรรทัดให้คลิกสามครั้งเริ่มจากคำว่าใต้เมาส์และไปที่ท้ายบรรทัด แต่ไม่รวมบรรทัดใหม่ ด้วยวิธีนี้คุณสามารถคลิกสามครั้งที่คำสั่งที่คุณเพิ่งเรียกใช้วางลงในหน้าต่างอื่นและเนื่องจากไม่มีบรรทัดใหม่คุณจึงสามารถแก้ไขได้ก่อนที่จะเรียกใช้ในหน้าต่างอื่น

Arch Wiki มีบทความเกี่ยวกับทรัพยากร Xรวมถึงส่วนเกี่ยวกับทรัพยากร xterm แต่ทรัพยากร xterm เหล่านั้นยังไม่สมบูรณ์


1
วิกิจะมีประโยชน์ แต่สถานที่ที่จะให้คำปรึกษาสำหรับทรัพยากร xterm เป็นของหน้าคู่มือ
Thomas Dickey

XTerm*VT100.charClass: 0-32:0,33-65535:1หรือการใช้งาน ดับเบิลคลิกจากนั้นจะพิจารณาคำว่า "word" เป็นลำดับของสัญลักษณ์ใด ๆ ยกเว้นช่องว่าง (และอักขระควบคุม)
Newtonx

กฎช่องว่างนั้นไม่ดีถ้าคุณต้องการให้ได้สิ่งที่อยู่ในเครื่องหมายคำพูดใน json oneliner เป็นต้น แต่ฉันคิดว่ามันขึ้นอยู่กับการใช้งานที่คุณมี ตัวอย่างข้อมูลที่ให้ไว้ในคำตอบนี้เหมาะสำหรับฉัน
Jean-Bernard Jansen

คุณได้มีความผิดพลาด: ->cutNewLine cutNewlineบางทีนั่นอาจถูกนำมาใช้ในเวอร์ชันที่ใหม่กว่า
x-yuri

1
และonNClicks: regexดูเหมือนว่าอย่างน้อยอ่านได้มากขึ้น
x-yuri

5

xterm มีการตั้งค่าทรัพยากรหลายอย่างที่เกี่ยวข้องกับการคลิกสองครั้งและสามครั้งเพื่อเลือก (หน้าคู่มือแสดงรายการทรัพยากรที่เกี่ยวข้องทั้งหมด):

cutNewline(ชั้นCutNewline)
ถ้า "เท็จ" คลิกเพื่อเลือกสามบรรทัดไม่รวมถึงนิวไลน์ในตอนท้ายของบรรทัด หาก "เป็นจริง" จะมีการเลือกNewline ค่าเริ่มต้นคือ "จริง"

cutToBeginningOfLine(คลาสCutToBeginningOfLine)
หาก "false" การคลิกสามครั้งเพื่อเลือกบรรทัดจะเลือกจากคำปัจจุบันไปข้างหน้าเท่านั้น หาก "จริง" ทั้งบรรทัดจะถูกเลือก ค่าเริ่มต้นคือ "จริง"

on2Clicks(คลาส On2Clicks)
on3Clicks(คลาส On3Clicks)
ระบุพฤติกรรมการเลือกเพื่อตอบสนองต่อการคลิกเมาส์หลายครั้ง การคลิกเมาส์เพียงครั้งเดียวจะตีความตามที่อธิบายไว้ในส่วนฟังก์ชั่นการเลือกเสมอ (ดูการใช้งานตัวชี้ ) การคลิกเมาส์หลายครั้ง (ใช้ปุ่มที่เปิดใช้งานการดำเนินการเลือกเริ่ม) ถูกตีความตามค่าทรัพยากรของ on2Clicks ฯลฯ ค่าทรัพยากรสามารถเป็นหนึ่งในสิ่งเหล่านี้:

word
เลือก "คำ" ตามที่กำหนดโดยทรัพยากรcharClass ดูส่วนคลาส CHARACTER

line
เลือกเส้น (การห่อนับ)

group
เลือกกลุ่มของเส้นที่อยู่ติดกัน (การตัดนับ) การเลือกหยุดบนบรรทัดว่างและไม่ขยายออกนอกหน้าปัจจุบัน

page
เลือกบรรทัดที่มองเห็นได้ทั้งหมดเช่นหน้า

all
เลือกทุกบรรทัดเช่นรวมถึงสายที่บันทึกไว้

regex
เลือก "word" ตามที่กำหนดโดยนิพจน์ทั่วไปซึ่งตามมาในค่าทรัพยากร

none
ไม่มีการดำเนินการเลือกที่เกี่ยวข้องกับทรัพยากรนี้ Xterm ตีความว่ามันเป็นจุดสิ้นสุดของรายการ ตัวอย่างเช่นคุณสามารถใช้เพื่อปิดการคลิกสามครั้ง (และสูงกว่า) โดยการตั้งค่าที่ 3Clicks เป็น "none"

ค่าเริ่มต้นสำหรับon2Clicksและon3Clicksคือ"คำว่า"และ "บรรทัด"ตามลำดับ ไม่มีค่าเริ่มต้นสำหรับon4Clicks หรือon5Clicksทำให้ผู้ที่ไม่ได้ใช้งาน เมื่อเริ่มต้นxterm จะกำหนดจำนวนคลิกสูงสุดโดยonXClicks ค่าทรัพยากรที่ตั้งไว้


คู่มือไม่ได้บอกคุณ: สำหรับการแจกแจงบางค่าเริ่มต้นไม่ใช่เอกสารเริ่มต้น การตั้งค่าทรัพยากร charClass ที่ว่างเปล่าจะคืนค่าเริ่มต้นที่ทำเป็นเอกสารไว้ สิ่งที่คุณระบุสำหรับ charClass จะเขียนทับเฉพาะรายการที่คุณระบุ รายการที่ไม่ระบุจะถูกกู้คืนเป็นค่าเริ่มต้นที่เป็นเอกสาร อย่างน้อยนั่นเป็นวิธีที่ใช้ได้ผลสำหรับฉัน
Jeff Learman

ผมเคยทำงานเป็นโพสต์xterm*on2Clicks: regex [^/@ \n]+แนะนำว่าค่าต่อไปนี้: xterm*on3Clicks: regex [^ \n]+, xterm*on4Clicks: regex [^#$]+, xterm*on5Clicks: line, ดูเหมือนดีกว่าและเข้าใจง่ายกว่าคำตอบที่ยอมรับได้
x-yuri

ในความคิดที่สองตอนนี้ฉันตัดสินใจใช้วิธีที่ดีที่สุดทั้งสองอย่าง (อย่างน้อยฉันเข้าใจ): 2 คลิกสำหรับคำ, 3 คลิกสำหรับคำ (ในvimความหมายของxterm*on3Clicks: regex [^ \n]+) 4 คลิกเพื่อคัดลอก คำสั่งจากเปลือก (จากคำว่าปัจจุบันยังจุดสิ้นสุดของเส้นxterm*on4Clicks: line, xterm*cutNewline: false, xterm*cutToBeginningOfLine: false) 5 คลิกสำหรับสายทั้งหมด ( xterm*on5Clicks: regex [^\n]+)
x-yuri
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.