web-dev-qa-db-ja.com

簡単な単語で現在の日付と時刻をすばやく入力する方法は?

fcitxにはアドオンがあり、~/.config/fcitx/data/QuickPhrase.mbに入力された「smile(・∀・)」のような他の文字列に単語を関連付けることができます。 smileと入力すると、(・∀・) `が出力されます。

同じことをしたいのですが、Wordではなく関数が必要です。現在のタイムスタンプを出力したい。

例:「time」を入力すると、現在の時刻「2016-08-03 11:15」が出力され、1分後、「time」を入力すると「2016-08-0311:16」が出力されます。

3
dindom

この投稿では

  1. 前書き
  2. QuickPhrase_Time.pyスクリプト
  3. xclipショートカット

1.はじめに

OPが参照するプラグインは QuickPhrase であり、Sudo apt-get install fcitx-modules fcitx-module-quickphrase-editorを介してインストールできます。 ~/.config/fcitx/data/QuickPhrase.mbを使用してフレーズを保存します。

ここでの主な目的は、ユーザーが現在編集しているテキストファイルに現在の時刻を含む文字列を簡単に挿入する方法を用意することです。以下に2つの解決策があります。


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から入手してください

5