Làm cách nào để định cấu hình hành vi nhấp đúp trong thiết bị đầu cuối X?


15

Trong các hệ thống Unix / Linux khác nhau, tôi đã quan sát hành vi nhấp đúp khác nhau trong các ứng dụng đầu cuối X (ví dụ: xterm).

Đôi khi, một lần bấm đúp sẽ chọn mọi thứ trái và phải cho đến khi ký tự không phải là chữ cái tiếp theo (ví dụ: nó chọn từ dưới con trỏ).

Đôi khi mọi thứ cho đến khi trống / eol tiếp theo được chọn (ví dụ: các đường dẫn đầy đủ dưới con trỏ được chọn).

Làm cách nào tôi có thể định cấu hình hành vi nhấp đúp - nói - trong xterm (vì nó có sẵn trên hầu hết các hệ thống)?

Hiện tại, tôi thấy chế độ thứ 2 thuận tiện hơn cho hầu hết các trường hợp sử dụng.

Câu trả lời:


19

Bạn làm điều đó với tài nguyên X. Tôi có một tệp, .Xresourceschứa các tài nguyên liên quan đến xterm này:

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

Trong .xinitrctệp của tôi , tôi có một số dòng hợp nhất trong các tài nguyên đó:

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

Những dòng đó làm cho xterm nhấp đúp và nhấp ba lần làm những gì tôi thích:

Bấm đúp xem xét một "từ" để bao gồm dấu gạch chéo (/), dấu chấm (.), Dấu hoa thị (*) và một số ký tự không chữ và số khác. Đó là tài nguyên "charClass". Tôi đã phải làm một số câu đố tẻ nhạt với charClass đó để có được nó để làm những gì tôi muốn. Điều đó chủ yếu cho phép bạn nhấp đúp vào URL và các đường dẫn đủ điều kiện hoặc một phần để làm nổi bật chúng.

Hai dòng còn lại bắt đầu nhấp ba lần từ từ bên dưới chuột và đi đến cuối dòng, nhưng không bao gồm bất kỳ dòng mới nào. Bằng cách đó, bạn có thể nhấp ba lần vào một lệnh bạn vừa thực hiện, dán nó vào một cửa sổ khác và vì nó không có dòng mới, bạn có thể chỉnh sửa nó trước khi chạy nó trong cửa sổ khác.

Arch Wiki có một bài viết về tài nguyên X , bao gồm một phần về tài nguyên xterm, nhưng những tài nguyên xterm đó chưa hoàn thành.


1
Wikis có thể hữu ích, nhưng nơi để tư vấn cho các tài nguyên xterm là trang thủ công của nó .
Thomas Dickey

Hoặc sử dụng XTerm*VT100.charClass: 0-32:0,33-65535:1. Nhấp đúp vào sau đó sẽ coi "từ" là bất kỳ chuỗi ký hiệu nào trừ khoảng trắng (và ký tự điều khiển).
Newtonx

Quy tắc khoảng trắng là không tốt nếu bạn muốn lấy những gì bên trong dấu ngoặc kép, ví dụ như trong một oneliner json. Nhưng tôi đoán nó phụ thuộc vào cách sử dụng bạn có. Đoạn trích được cung cấp trong câu trả lời này là hoàn hảo đối với tôi.
Jean-Bernard Jansen

Bạn đã có một sai lầm: cutNewLine-> cutNewline. Có lẽ điều đó đã được giới thiệu trong các phiên bản mới hơn.
x-yuri

onNClicks: regexdường như ít nhất là dễ đọc hơn.
x-yuri

4

xterm có một số cài đặt tài nguyên liên quan đến nhấp đúp và nhấp ba lần để chọn (trang thủ công liệt kê tất cả các tài nguyên có liên quan):

cutNewline(lớp CutNewline)
Nếu "sai", nhấp ba lần để chọn một dòng không bao gồm Dòng mới ở cuối dòng. Nếu "đúng", Dòng mới được chọn. Mặc định là đúng".

cutToBeginningOfLine(lớp CutToBeginningOfLine)
Nếu "sai", nhấp ba lần để chọn một dòng chỉ chọn từ chuyển tiếp hiện tại. Nếu "đúng", toàn bộ dòng được chọn. Mặc định là đúng".

on2Clicks(lớp On2Clicks)
on3Clicks(lớp On3Clicks)
Chỉ định hành vi lựa chọn để đáp ứng với nhiều lần nhấp chuột. Một lần nhấp chuột luôn được diễn giải như được mô tả trong phần Chức năng lựa chọn (xem SỬ DỤNG ĐIỂM ). Nhiều lần nhấp chuột (sử dụng nút kích hoạt hành động chọn bắt đầu) được diễn giải theo các giá trị tài nguyên của on2Clicks, v.v. Giá trị tài nguyên có thể là một trong những điều sau:

word
Chọn một "từ" được xác định bởi tài nguyên charClass . Xem phần LỚP HỌC .

line
Chọn một dòng (đếm gói).

group
Chọn một nhóm các đường liền kề (đếm gói). Lựa chọn dừng lại trên một dòng trống và không mở rộng ra bên ngoài trang hiện tại.

page
Chọn tất cả các dòng có thể nhìn thấy, tức là trang.

all
Chọn tất cả các dòng, nghĩa là, bao gồm các dòng đã lưu.

regex
Chọn một "từ" được xác định bởi biểu thức chính quy theo giá trị tài nguyên.

none
Không có hành động lựa chọn được liên kết với tài nguyên này. Xterm diễn giải nó là phần cuối của danh sách. Ví dụ: bạn có thể sử dụng nó để vô hiệu hóa nhấp chuột ba lần (và cao hơn) bằng cách đặt on3Clicks thành "none".

Các giá trị mặc định cho on2Clicksvà lần lượt on3Clicks"từ""dòng" . Không có giá trị mặc định cho on4Clicks hoặc on5Clicks, làm cho những người không hoạt động. Khi khởi động, xterm xác định số lần nhấp tối đa theo các onXClicks giá trị tài nguyên được đặt.


Những gì hướng dẫn không cho bạn biết: Đối với một số bản phân phối, mặc định không phải là mặc định được ghi thành tài liệu. Đặt tài nguyên charClass trống sẽ khôi phục tài liệu mặc định. Bất cứ điều gì bạn chỉ định cho charClass chỉ ghi đè các mục bạn chỉ định; các mục không xác định được khôi phục về mặc định tài liệu. Ít nhất, đó là cách nó xuất hiện để làm việc cho tôi.
Jeff Learman

Tôi đã chạy vào một bài đăng mà đề nghị các giá trị sau: xterm*on2Clicks: regex [^/@ \n]+, xterm*on3Clicks: regex [^ \n]+, xterm*on4Clicks: regex [^#$]+, xterm*on5Clicks: line. Có vẻ tốt hơn và dễ hiểu hơn những người trong câu trả lời được chấp nhận.
x-yuri

Suy nghĩ thứ hai, hiện tại tôi quyết định đạt được cả hai cách tiếp cận tốt nhất (ít nhất là theo cách tôi hiểu bây giờ): 2 lần nhấp cho một từ, 3 lần nhấp cho một WORD (theo vimnghĩa của nó, xterm*on3Clicks: regex [^ \n]+), 4 lần nhấp để sao chép lệnh từ vỏ (từ từ hiện tại đến cuối dòng, xterm*on4Clicks: line, xterm*cutNewline: false, xterm*cutToBeginningOfLine: false), 5 nhấp chuột cho toàn bộ dây chuyền ( xterm*on5Clicks: regex [^\n]+).
x-yuri
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.