![在X11中获取光标下的单词](https://linux22.com/image/883016/%E5%9C%A8X11%E4%B8%AD%E8%8E%B7%E5%8F%96%E5%85%89%E6%A0%87%E4%B8%8B%E7%9A%84%E5%8D%95%E8%AF%8D.png)
对于某些脚本,我需要获取当前光标下的单词。
xdotool
或者类似的工具可以得到它吗?
答案1
如何获取当前已选择文本
您可以获取当前已选择使用以下命令发送文本:
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