在X11中的光标下获取单词


Answers:


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'6

有没有一种方法可以查找当前是否有任何文本?因为即使没有,也xclip返回最后选择的文本。
UniversallyUniqueID

@BharadwajRaju看到我的更新。
Jacob Vlijm'6

有时(随机)返回Error: Target STRING not available并退出。
UniversallyUniqueID
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.