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.