Tôi có thể sử dụng chuột để chọn đúng văn bản trong ít hơn không?


9

Tôi vừa mới phát hiện ra rằng tôi có thể thêm các dòng sau vào ~/.vimrc.

set mouse=a
:vmap <C-C> "+y

Điều này có tác dụng là có thể chọn văn bản bằng chuột (tức là ở chế độ trực quan), sau đó sao chép văn bản thực tế vào bảng tạm X với Ctrl+ c. Điều này khác với bản sao mặc định từ thiết bị đầu cuối, vì đó là văn bản thực sự tôi đang sao chép, không phải là những gì thiết bị đầu cuối nhìn thấy. Ví dụ: nếu có các tab trong văn bản, thì trước đây tôi sẽ sao chép chúng dưới dạng khoảng trắng.

Có cách nào để làm cho ít cư xử theo cùng một cách? tức là tôi có thể sao chép nguyên văn những gì trong tệp văn bản tôi đang xem ít hơn không?


Bạn đã thử với gpm chưa?
YoMismo

@YoMismo Không. Tôi không thực sự chắc chắn điều đó sẽ giúp ích như thế nào, vì trình giả lập thiết bị đầu cuối vẫn sẽ chứa các khoảng trắng theo nghĩa đen thay vì các tab, trong ví dụ trên.
Sparhawk

Xin lỗi, tôi nghĩ rằng bạn đang làm việc trong bảng điều khiển, không phải thiết bị đầu cuối X: - /
YoMismo

Câu trả lời:


5

Không phải là một nhiệm vụ cho ít

Không,
tôi không nghĩ rằng bạn có thể làm điều đó trực tiếp, vì ít bắt đầu không có con trỏ.
Nó sẽ cần một để điều hướng để bắt đầu và kết thúc văn bản để chọn.
lesskhông chỉ là công cụ phù hợp để điều hướng cấp độ ký tự.

Tab đã được mở rộng

Bạn có thể sử dụng phím shiftvà chuột để tạo vùng chọn; Điều này được xử lý bởi các thiết bị đầu cuối, không phải bởi ít hơn. Nhưng thiết bị đầu cuối không biết cách các không gian và các tab được sắp xếp - việc giải thích các tab bên trong ít hơn và chỉ viết các ký tự " " bình thường lên màn hình.

Có những công cụ như screen, tmuxbyobu, có thể làm rất nhiều điều ấn tượng trong lĩnh vực này. Tôi đã không kiểm tra, nhưng tôi cho rằng các bộ ghép kênh đầu cuối này không có cách nào khác - cuối cùng là các thiết bị đầu cuối - và sẽ hoạt động tương tự.

Sử dụng vim

Nếu bạn đang hiển thị một tệp trong lessđó, có một giải pháp hay:
Bấm phím vvào lessđể mở tệp hiện tại vim- ví dụ như $EDITORvv của bạn được thiết lập cho vim.

Điều này không hoạt động khi hiển thị stdin từ một đường ống hoặc như vậy, mặc dù có cách giải quyết .

Chuột cuộn, ít nhất

Nhưng ít nhất bạn có thể cuộn bằng bánh xe chuột:

Điều đó dường như thậm chí được bật theo mặc định, nhưng các sự kiện bánh xe chuột bị chặn bởi một tùy chọn khác.

Để kiểm tra nhanh, hãy thử:

LESS=-r man less

Tùy chọn -X( --no-init) chặn cuộn - kiểm tra biến môi trường của bạn LESSchứa gì:

$ echo $LESS

Tùy chọn -q( --quiet, --silent) cũng gây rắc rối, theo SU: Làm thế nào để làm cho bánh xe chuột cuộn máy nhắn tin ít sử dụng bash và gnome-terminal?


Câu trả lời chính xác. Các vĐiều quan trọng là tuyệt vời! (Tôi đã có được sự tự do của một cách giải quyết tuyệt vời để khiến nó hoạt động trong các đường ống.)
Sparhawk

@Sparhawk Này, cách giải quyết ít nhất là tuyệt vời!
Volker Siegel

2
Ngoài ra, có một máy nhắn tin được gọi là vimpagerbạn có thể sử dụng để thay thế lesstoàn bộ bán hàng. Nó thực sự chỉ sử dụng vimbọc trong một kịch bản nhỏ.
HalosGhost

1
@HalosGhost Cảm ơn vì điều đó. vimpagerTrông khá tuyệt, nhưng tôi đã có vấn đề với việc kéo dài khiến tôi thích sử dụng ít hơn và v.
Sparhawk

@Sparhawk Về mặt kỹ thuật, bạn có thể so sánh vimrc được sử dụng hoặc sử dụng các phần của vimrc bình thường cho vimpagerđến khi nó hoạt động; (Tôi cố gắng hết sức để không kích hoạt tất cả các vimplugin của mình khi bắt đầu vimpager...)
Volker Siegel

3

Bạn có thể sao chép dòng trên cùng được hiển thị trong lesslựa chọn X11 CLIPBOARD bằng cách nhập bằng less:

|.head -n1|xclip -sel c<Enter><Enter>

Điều đó dẫn bộ đệm ít hơn từ dòng trên cùng đến .nhãn hiệu (do đó có hiệu lực toàn bộ nội dung màn hình) cho head -n1|xclip -sel clệnh (để lưu trữ dòng đầu tiên trong số đó trong lựa chọn CLIPBOARD)

Bạn có thể định cấu hình trình giả lập thiết bị đầu cuối của mình để dán chuỗi đó khi nhấn phím đã cho hoặc liên kết chuỗi đó với tổ hợp phím hoặc khóa trong lesscác ràng buộc khóa. Ví dụ, để liên kết nó trên Alt+C:

printf '%s\n' '#commands' '\ec pipe .head -n1|xclip -sel c\n' | lesskey -

Tuy nhiên, lưu ý, bạn sẽ nhấn Entersau đó để xác nhận lời nhắc "| xong (nhấn RETURN)".

Với xterm, bạn cũng có thể xác định chế độ lựa chọn mới chẳng hạn ở đây khi giữ Ctrl+Altkhi mở rộng vùng chọn cho biết lessdòng nào sẽ sao chép từ màn hình hiện tại của nó:

Viết một lesspastekịch bản như:

#! /bin/sh -
start=${1%%";"*}
end=${1#*" "}
end=${end%";"*}
head -n "$((end))" | tail -n "$((end - start + 1))" | xclip -sel c

Và xác định các bảng dịch xterm (ở đây trên dòng lệnh để thử nghiệm, nhưng bạn sẽ muốn thêm nó vào tệp tài nguyên X):

xterm -xrm 'XTerm.VT100.translations: #override \
  Meta Ctrl<Btn1Down>: select-start()\n\
  Meta Ctrl<Btn1Motion>: select-extend()\n\
  Meta Ctrl<Btn1Up>: select-end(SECONDARY) \
    insert-formatted("|.lesspaste '\''%P %p'\''\n\n", SECONDARY)'

Sau đó, bạn sẽ đánh dấu các dòng để dán bằng cách kéo chuột bằng cách Ctrl+Altgiữ và khi phát hành Nút 1, xterm sẽ nói ít hơn để chuyển màn hình hiện tại sang lesspastetập lệnh của chúng tôi với tọa độ bắt đầu và kết thúc được truyền dưới dạng một đối số ( y1;x1 y2;x2).

(lưu ý rằng nó có thể không hoạt động đúng nếu lessđược gọi -sđể nén các dòng trống (như thông thường khi được gọi bởi man), vì đầu vào được cung cấp lesspastesẽ không bị nén các dòng trống (do đó, việc bù số dòng có thể sai)) .


@Sparhawk, xem chỉnh sửa.
Stéphane Chazelas

Nó dường như không làm việc cho tôi. Không có gì mới trong clipboard. Có lessnghĩa vụ phải cung cấp bất kỳ loại thông tin phản hồi? jdường như không làm gì cho tôi
Sparhawk

@Sparhawk, bạn có bất kỳ ràng buộc khóa tùy chỉnh nào không less, jcuộn xuống bởi một dòng ( forw-line) trong liên kết khóa mặc định (thực sự J( forw-line-force) sẽ tốt hơn ở đây, tôi sẽ chỉnh sửa). |sẽ cung cấp cho bạn một số thông tin phản hồi. (nhắc nhở cho dấu, và sau đó lệnh để nhập).
Stéphane Chazelas

Không, tôi đã không làm, nhưng tôi đã thử nghiệm với văn bản dài chưa đầy một trang, vì vậy có lẽ đó là lý do tại sao jkhông làm gì cả. Tùy chọn đầu tiên bây giờ hoạt động (+1). Tùy chọn thứ hai có vẻ khá phức tạp với một vài cảnh báo, vì vậy tôi đã không thử nó. Tôi nghĩ vlà đủ tốt cho tôi.
Sparhawk
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.