X11에서 커서 아래로 단어 가져 오기


9

일부 스크립팅의 경우 현재 커서 아래에있는 단어를 가져와야합니다.

xdotool또는 유사한 도구는 그것을 얻을?


선택한 단어 를 의미 합니까? 그럼요 (하지만 xdotool 아님)
Jacob Vlijm

답변:


10

현재 선택된 텍스트 를 얻는 방법

다음 명령을 사용하여 현재 선택된 텍스트를 얻을 수 있습니다 .

echo $(xclip -o -sel)

...하지만 xclip먼저 설치해야합니다 .

sudo apt-get install xclip

보낸 사람 man xclip:

-o, -out
    prints the selection to standard out (generally for piping to a file or program) 

과:

-selection
    specify which X selection to use, options are "primary" to use XA_PRIMARY (default), "secondary" for XA_SECONDARY or "clipboard" for XA_CLIPBOARD

여기 또는 항상 그렇듯이 참조하십시오 man xclip.


편집하다

마지막 선택과 관련된 해결 방법 문제

코멘트에서 더 이상 아무것도 선택하지 않은 경우에도 (예 : 파일을 닫을 때) 마지막 선택 을 xclip출력 한다는 것을 이해했습니다 . 상황에 문제가있는 것 같습니다.

xsel이 문제가 있지만 해결 방법은 다음과 같습니다. 스크립트에서 현재 선택 항목을 스크립트로 읽을뿐만 아니라 동일한 내용을 파일에 쓰면됩니다. 선택이 마지막 선택과 다른지 확인할 수 있습니다 . 그렇지 않다면, 우리는 새로운 선택이 이루어지지 않았다고 결론 내릴 수 있으며, 명령은 오래된 선택을 할 가능성이 높습니다. 그런 다음 스크립트에 전달하도록 지시 할 수 있습니다.

예 (를 사용 xsel하면이 경우 약간의 이점이 있습니다) :

#!/bin/bash

# make sure the file to store the last selection exists
f=~/.old_sel
touch $f
# get the previous & current selection
old=$(cat "$f"); new=$(xsel -o)

if [ "$old" != "$new" ]; then
  # if selection changed, store the new selection to remember
  echo "$new" > "$f"
  # do the action, whatever that may be
  echo $new
fi

설치할 필요가 없습니다 xsel.

sudo apt-get install xsel

선택하지 않고 할 수있는 방법이 있습니까?
UniversallyUniqueID

1
@BharadwajRaju 저를 놀라게 할 것입니다, 현재 응용 프로그램과 통신하는 것은 무엇입니까? 당신은 몰라요! 화면에서 일어나는 일에 대한 전역 텍스트 인식이 필요합니다. 그리고 그때조차도. 나는 그것이 일어나는 것을 보지 못한다.
Jacob Vlijm 2016 년

현재 선택된 텍스트가 있는지 확인할 수있는 방법이 있습니까? 아무 것도 없더라도 마지막으로 선택한 텍스트를 xclip반환합니다 .
UniversallyUniqueID

@BharadwajRaju 내 업데이트를 참조하십시오.
Jacob Vlijm 2016 년

때때로 (임의로) 반환 Error: Target STRING not available하고 종료합니다.
UniversallyUniqueID
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.