有一个插件,fcitx
你可以将单词与其他字符串关联起来,例如在 中输入的“微笑 (・∀・)” ~/.config/fcitx/data/QuickPhrase.mb
。输入时smile
会输出 (・∀・)`
我想要同样的东西,但是是一个函数而不是一个词;我希望它输出当前时间戳。
例如:当我输入“时间”时,它输出当前时间“2016-08-03 11:15”,一分钟后,当我输入“时间”时,它输出“2016-08-03 11:16”
答案1
在这篇文章中:
- 介绍
QuickPhrase_Time.py
脚本xclip
捷径
1.引言
OP 提到的插件是快捷短语并且可以通过 安装sudo apt-get install fcitx-modules fcitx-module-quickphrase-editor
。它用于~/.config/fcitx/data/QuickPhrase.mb
存储短语。
这里的主要目的是找到一种简单的方法,将包含当前时间的字符串插入到用户当前正在编辑的文本字段中。下面有两种解决方案。
2.QuickPhrase_Time.py 脚本
此脚本不断编辑配置文件中包含短语的行time_now
,并将当前时间附加到该行。此脚本旨在启动登录 GUI 时自动。
使用方法很简单:
python /path/to/QuickPhrase_Timer.py
脚本源
也可作为Github要点,更新版本可能就会出现在那里。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import subprocess
import time
import os
def run_cmd(cmdlist):
""" Reusable function for running external commands """
new_env = dict( os.environ )
new_env['LC_ALL'] = 'C'
try:
stdout = subprocess.check_output(cmdlist,env=new_env)
except subprocess.CalledProcessError:
pass
else:
if stdout:
return stdout
if __name__ == '__main__':
user_home = os.path.expanduser('~')
config_file = '.config/fcitx/data/QuickPhrase.mb'
config_full_path = os.path.join(user_home,config_file)
found = None
while True:
lines = []
time.sleep(1)
with open(config_full_path) as f:
for line in f:
lines.append(line.strip())
if line.startswith('time_now'):
found = True
# print(lines)
if found:
with open(config_full_path,'w') as f:
for line in lines:
if line.startswith('time_now'):
time_now = run_cmd(['date',
'+%Y-%m-%d %I:%M'
]).decode().strip()
line = 'time_now ' + time_now + '\n'
else:
line = line + '\n'
f.write(line)
3. xclip 快捷方式
如果上面的 Python 脚本对你不起作用,这里有一个解决方法:将下面的命令绑定到键盘快捷键
xclip -sel clip <<< $( date +%Y-%m-%d\ %I:%M )
本质上,这样做是将输出复制date
到剪贴板,然后您可以通过Ctrl+V快捷方式(对于大多数应用程序来说,这都是粘贴快捷方式)释放它。
这种方法不依赖于fctix
或任何其他输入方法,因此更加灵活和可靠。
笔记默认情况xclip
下未安装。通过以下方式获取sudo apt-get install xclip
答案2
您可以使用 lua 来扩展 fcitx/fcitx5 的 quickphrase。
lua 相关 API 基于 Windows 上的旧版谷歌拼音 lua。您可以参考此文档了解有哪些额外 API 可用:https://fcitx.github.io/fcitx5-lua/modules/ime.html(只有 ime 模块适用于 fcitx4,fcitx 模块仅适用于 fcitx5。)
FCITX4
在 fcitx4 中 lua 是一个内置插件。您的发行版可能会将其拆分为一个单独的包。在 ubuntu 上它被称为 fcitx-module-lua。
您可以在 ~/.config/fcitx/lua 下创建一个 .lua 文件。
fcitx5
基本上 API 是一样的,只是路径略有不同。而且现在它是一个单独的包,fcitx5-lua。在 ubuntu 上它被称为 fcitx5-module-lua。
您可以将 .lua 文件放在 ~/.local/share/fcitx5/lua/imeapi/extensions 下。
这是一个适用于 fcitx/fcitx5 的脚本,取自https://github.com/lilydjwg/fcitx-lua-scripts/blob/master/date.lua
function LookupDate(input)
local fmt
if input == '' then
fmt = "%Y年%m月%d日"
elseif input == 't' then
fmt = "%Y-%m-%d %H:%M:%S"
elseif input == 'd' then
fmt = "%Y-%m-%d"
end
return os.date(fmt)
end
ime.register_command("dt", "LookupDate", "日期时间输入")
Fcitx5还自带了内置lua脚本https://github.com/fcitx/fcitx5-chinese-addons/blob/master/im/pinyin/pinyin.lua,但检查输入法名称是拼音还是双拼。
您也可以将其作为参考,因为它不仅包含日期/时间,还支持更多奇特的格式。