ドイツ語では、「Sehr geehrter Herr ....」でメールと手紙を開始します。
これを何度も入力するのはうんざりです。そして、このようなテキストブロックを挿入するショートカットを提供するようにアプリケーションを構成するのにうんざりしています。
デスクトップ環境でコメントテキストブロックを挿入する方法はありますか?
このようにして、vi、Thunderbird、firefox、libreofficeにテキストブロックを挿入できます...
別の例:しばしばssh-pub-keyをどこかに挿入する必要があります。 ssh-copy-idの使用方法は知っていますが、テキストブロックの構成可能なリストにアクセスできるデスクトップソリューションも素晴らしいでしょう。
14.04(python3、nautilus)を使用していると仮定すると、以下のスクリプトがジョブを実行します使用するアプリケーションで Ctrl+V テキストを貼り付ける。たとえばgnome-terminal
では機能しないことを知っておくことが重要です。
a.oでテストしました。 Firefox、Thunderbird、Libreoffice、Sublime Text、Geditは問題なく使用できます。
スクリプトが呼び出されると、定義したスニペットをリストするウィンドウが表示されます。アイテムを選択(または番号を入力)すると、テキストフラグメントがアプリケーションの最前面のウィンドウに貼り付けられます。 Ctrl+V 「-compatible」:
manage snippets
を選択すると、~/.config/snippet_paste
にあるスクリプトのフォルダーがnautilusで開きます。新しいスニペットを作成するには、スニペットのテキストを含むテキストファイルを作成するだけです。ファイルに付ける名前を気にしないでください。プレーンテキストである限り、問題ありません。スクリプトはファイルのコンテンツのみを使用し、検出されたすべてのファイル(「コンテンツ」)の番号付きリストを作成します。
スニペットディレクトリ(~/.config/snippet_paste
)が存在しない場合、スクリプトはそれを作成します。
システムにインストールされていない場合は、最初にxdotool
およびxclip
をインストールします。
Sudo apt-get install xdotool
そして
Sudo apt-get install xclip
以下のスクリプトをコピーし、paste_snippets.py
として保存し、コマンドで実行します:
python3 /path/to/paste_snippets.py
#!/usr/bin/env python3
import os
import subprocess
home = os.environ["HOME"]
directory = home+"/.config/snippet_paste"
if not os.path.exists(directory):
os.mkdir(directory)
# create file list with snippets
files = [
directory+"/"+item for item in os.listdir(directory) \
if not item.endswith("~") and not item.startswith(".")
]
# create string list
strings = []
for file in files:
with open(file) as src:
strings.append(src.read())
# create list to display in option menu
list_items = ["manage snippets"]+[
(str(i+1)+". "+strings[i].replace("\n", " ").replace\
('"', "'")[:20]+"..") for i in range(len(strings))
]
# define (zenity) option menu
test= 'zenity --list '+'"'+('" "')\
.join(list_items)+'"'\
+' --column="text fragments" --title="Paste snippets"'
# process user input
try:
choice = subprocess.check_output(["/bin/bash", "-c", test]).decode("utf-8")
if "manage snippets" in choice:
subprocess.call(["nautilus", directory])
else:
i = int(choice[:choice.find(".")])
# copy the content of corresponding snippet
copy = "xclip -in -selection c "+"'"+files[i-1]+"'"
subprocess.call(["/bin/bash", "-c", copy])
# paste into open frontmost file
paste = "xdotool key Control_L+v"
subprocess.Popen(["/bin/bash", "-c", paste])
except Exception:
pass
別のファイルブラウザを使用している場合は、次の行(29)を置き換えます。
subprocess.Popen(["nautilus", directory])
沿って:
subprocess.Popen(["<your_filebrowser>", directory])
より便利に使用するために、スクリプトを呼び出すショートカットを作成できます。
[システム設定]> [キーボード]> [ショートカット]> [カスタムショートカット]
「+」をクリックしてコマンドを追加します:python3 /path/to/paste_snippets.py
スクリプトは Gist.gisthub にも投稿されています
以下のバージョンは、(gnome-
)端子が最前面のアプリケーションであるかどうかを自動的に確認し、貼り付けコマンドを次のように自動的に変更します。 Ctrl+Shift+V の代わりに Ctrl+V
使用法と設定はほとんど同じです。
#!/usr/bin/env python3
import os
import subprocess
home = os.environ["HOME"]
directory = home+"/.config/snippet_paste"
if not os.path.exists(directory):
os.mkdir(directory)
# create file list with snippets
files = [
directory+"/"+item for item in os.listdir(directory) \
if not item.endswith("~") and not item.startswith(".")
]
# create string list
strings = []
for file in files:
with open(file) as src:
strings.append(src.read())
# create list to display in option menu
list_items = ["manage snippets"]+[
(str(i+1)+". "+strings[i].replace("\n", " ").replace\
('"', "'")[:20]+"..") for i in range(len(strings))
]
# define (zenity) option menu
test= 'zenity --list '+'"'+('" "')\
.join(list_items)+'"'\
+' --column="text fragments" --title="Paste snippets" --height 450 --width 150'
def check_terminal():
# function to check if terminal is frontmost
try:
get = lambda cmd: subprocess.check_output(cmd).decode("utf-8").strip()
get_terms = get(["xdotool", "search", "--class", "gnome-terminal"])
term = [p for p in get(["xdotool", "search", "--class", "terminal"]).splitlines()]
front = get(["xdotool", "getwindowfocus"])
return True if front in term else False
except:
return False
# process user input
try:
choice = subprocess.check_output(["/bin/bash", "-c", test]).decode("utf-8")
if "manage snippets" in choice:
subprocess.call(["nautilus", directory])
else:
i = int(choice[:choice.find(".")])
# copy the content of corresponding snippet
copy = "xclip -in -selection c "+"'"+files[i-1]+"'"
subprocess.call(["/bin/bash", "-c", copy])
# paste into open frontmost file
paste = "xdotool key Control_L+v" if check_terminal() == False else "xdotool key Control_L+Shift_L+v"
subprocess.Popen(["/bin/bash", "-c", paste])
except Exception:
pass
Ubuntu Software CenterからインストールするAutoKeyを使用します
本当に使いやすい
「gm
」と入力し、タブ「[email protected]
」を押して、メールアドレス<tab>
のような「フレーズ」を追加しました