마우스를 덜 사용하여 텍스트를 올바르게 선택할 수 있나요?

마우스를 덜 사용하여 텍스트를 올바르게 선택할 수 있나요?

방금 다음 줄을 ~/.vimrc.

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

그 효과는 마우스를 사용하여(예: 시각적 모드에서) 텍스트를 선택한 다음 Ctrl+를 사용하여 실제 텍스트를 X 클립보드에 복사할 수 있다는 것입니다 c. 이는 터미널에 표시되는 텍스트가 아니라 복사하는 실제 텍스트라는 점에서 터미널의 기본 복사본과 다릅니다. 예를 들어, 텍스트에 탭 문자가 있는 경우 이전에는 이를 공백으로 복사했습니다.

더 적은 수의 사람들이 같은 방식으로 행동하도록 하는 방법이 있습니까? 즉, 내가 보고 있는 텍스트 파일의 내용을 그대로 복사할 수 있나요?

답변1

과제도 적지 않아

아니요,
less에는 처음부터 커서가 없기 때문에 직접적으로 할 수는 없을 것 같습니다.
선택하려는 텍스트의 시작과 끝으로 이동해야 합니다.
less캐릭터 수준 탐색에 적합한 도구는 아닙니다.

탭이 펼쳐짐

키 입력과 마우스를 사용하여 선택 하면 shift터미널에서 처리됩니다. 그러나 터미널은 공백과 탭이 어떻게 배열되는지 알지 못합니다. 탭을 내부적으로 덜 해석하고 화면에 일반 " " 문자를 씁니다.

이 영역에서 많은 인상적인 작업을 수행할 수 있는 screen, tmux 및 와 같은 도구가 있습니다 . byobu확인하지는 않았지만 이러한 터미널 멀티플렉서(결국 터미널)를 사용하면 이 문제를 해결할 방법이 없다고 가정하고 동일하게 작동합니다.

vim을 사용하세요

에 파일을 표시하려는 경우 less좋은 해결책이 있습니다. in
키를 눌러 현재 파일을 엽니다. 등이 로 설정되어 있다고 가정합니다.vlessvim$EDITORvim

파이프 등의 표준 입력을 표시할 때는 작동하지 않습니다.해결책.

최소한 마우스 스크롤

하지만 최소한 마우스 휠로 스크롤할 수는 있습니다.

이는 기본적으로 활성화되어 있는 것처럼 보이지만 마우스 휠 이벤트는 다른 옵션에 의해 억제됩니다.

빠른 테스트를 위해 다음을 시도해 보세요.

LESS=-r man less

옵션 -X( --no-init)은 스크롤을 방지합니다. 환경 변수 LESS에 포함된 내용을 확인하세요.

$ echo $LESS

주장에 따르면 옵션 -q( --quiet, )도 문제를 일으킬 수 있습니다.--silentSU: bash와 gnome-terminal을 사용하여 마우스 휠 스크롤을 덜 호출하는 방법은 무엇입니까?

답변2

less다음을 입력하여 디스플레이의 맨 위 행을 X11 CLIPBOARD 선택 항목으로 복사할 수 있습니다 less.

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

이는 맨 위 줄에서 .마커(실제로 전체 화면 내용)로 더 적은 버퍼를 명령 head -n1|xclip -sel c(클립보드 선택 항목의 첫 번째 줄을 저장하기 위해) 으로 전송합니다.

특정 키를 누를 때 이 문자열을 붙여넣거나 less키 바인딩의 키 또는 키 조합에 바인딩하도록 터미널 에뮬레이터를 구성할 수 있습니다. 예를 들어 다음과 같이 바인딩합니다 Alt+C.

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

Enter하지만 이후에 "|DONE(Press RETURN)"을 누르면 확인하라는 메시지 가 표시되므로 주의하세요 .

를 사용하면 선택 영역을 확장하는 동안 누르고 있는 xterm등 새로운 선택 모드를 정의하여 현재 화면에서 복사할 행을 알려주는 등의 작업을 수행할 수도 있습니다.Ctrl+Altless

lesspaste다음 스크립트를 작성하세요 .

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

xterm 변환 테이블을 정의합니다(여기서 명령줄에서 테스트했지만 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)'

그런 다음 마우스로 드래그하여 붙여넣고 싶은 줄을 표시할 수 있으며 Ctrl+Alt, 버튼 1을 놓으면 xterm은 lesspaste시작 및 끝 좌표를 하나의 인수( y1;x1 y2;x2)로 전달하여 현재 화면을 스크립트로 파이프하도록 Less에 지시합니다.

less(빈 줄을 짜내기 위해 호출 하면 제대로 작동하지 않을 수 있습니다 -s(보통manlesspaste아니요빈 줄이 압착됩니다(따라서 줄 번호 오프셋이 잘못될 수 있음).

관련 정보