在编辑文本文档时,我需要经常添加时间戳。我想过用两种不同的方法来实现自动化。但似乎都不起作用。
- 使用 nautilus-actions
我设置了一个新的右上下文操作来运行命令date|xclip
当我在其他应用程序(例如终端或浏览器)中单击鼠标右键时,此右上下文不会显示。此外,当它出现并单击它时,它不会执行任何操作。
- 使用键盘快捷键
我设置了一个新的键盘快捷键,它应该执行date
命令但却没有执行。
有什么指点吗?
谢谢。
答案1
GNOME 键盘快捷键应该可以工作。
这就是您尝试的方法不起作用的原因:您的键盘快捷键运行了命令date
,但对输出没有任何作用(输出被丢弃)。您应该将其通过管道传输到xclip
,以便date | xclip
将其复制到 X 选择(不是剪贴板)。然后您可以通过单击鼠标中键将其粘贴到您的文档中。如果您希望能够使用 Ctrl-V,请使用将date | xclip -selection c
其复制到实际剪贴板。
另一种方法是使用xdotool
直接在文档中输入日期。分配给您的快捷方式
xdotool type "$(date)"
然后,当您按下快捷键时,它将计算当前日期并将其字符输入到您的文档中。
对于 ISO 8601 格式,使用xdotool type "$(date --rfc-3339=s)"
。
如果不起作用:由于这些是 shell 命令(而不是可执行文件),因此bash
在快捷方式中指定它们时,您可能必须将命令传递给。您的命令将是:
bash -c 'xdotool type "$(date --rfc-3339=s)"'
答案2
我已经成功将其用作分配给的自定义键盘快捷键Ctrl+Shift+D
:
bash -c 'sleep 0.3 && xdotool type "$(date -u +%Y-%m-%d_%H:%M:%SZ)"'
我发现增加一点延迟就可以解决缺少首字母字符的问题,并且不会污染我的剪贴板。
请注意,我使用的是 RFC 3339/ISO 8601 格式的稍微定制的版本:我经常在想要避免date
RFC 3339 输出中的空格的情况下使用它,但我发现T
将日期与 ISO 8601 时间戳中的时间分开的符号相当不直观且难以阅读,所以我发现下划线效果很好。
答案3
bash -c 'xdotool keyup super && xdotool type "$(date +%Y.%m.%d)"'
我使用Super+Q
作为快捷方式,我需要super
在发送 之前清除修饰符date
。我试过了--clearmodifiers
,但这会导致unity dash
在运行快捷方式后弹出 [1]
unity dash
[1]随后会出现一个原因,即在super
恢复之前,如果--clearmodifiers
使用man xdotool
CLEARMODIFIERS
Any command taking the --clearmodifiers flag will attempt to clear any
active input modifiers during the command and restore them afterwards.