Как быстро ввести текущую дату и время с быстрым словом?
Есть аддон в fcitx
где вы можете связать слово с некоторой другой строкой, такой как "smile (・∀・)", введенной в ~/.config/fcitx/data/QuickPhrase.mb
, Когда вы печатаете smile
это выводит (・∀・)`
Я хочу то же самое, но функцию, а не слово; Я хочу вывести текущую метку времени.
Например: когда я ввожу "время", выводится текущее время "2016-08-03 11:15", через минуту, когда я вводю "время", выводится "2016-08-03 11:16"
2 ответа
В этом посте:
- Вступление
QuickPhrase_Time.py
скриптxclip
сокращенный
1. Введение
Плагин, к которому относится OP, это QuickPhrase и может быть установлен через 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 Gist, обновленные версии, скорее всего, пойдут туда.
#!/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
Вы можете использовать lua для расширения быстрой фразы для fcitx/fcitx5.
Соответствующий lua API основан на старом Google Pinyin lua в Windows. Вы можете обратиться к этому документу, чтобы узнать, какие дополнительные API доступны: https://fcitx.github.io/fcitx5-lua/modules/ime.html (только модуль ime работает для fcitx4, модуль fcitx есть только в fcitx5.)
fcitx4
В fcitx4 lua — это встроенный аддон. Ваш дистрибутив может разделить его на отдельный пакет. В Ubuntu это называется fcitx-module-lua.
Вы можете создать файл .lua в папке ~/.config/fcitx/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 , но он проверяет имя метода ввода — пиньинь или шуанпин.
Вы также можете взять его в качестве справочного материала, поскольку он содержит больше, чем просто дату/время, и поддерживает более причудливый формат.