
En alemán los correos electrónicos y las cartas empiezan con "Sehr geehrter Herr...".
Estoy cansado de escribir esto una y otra vez. Y estoy cansado de configurar aplicaciones para que me den atajos para insertar bloques de texto como este.
¿Existe alguna forma de insertar bloques de texto de comentarios en el entorno de escritorio?
De esta manera podría insertar bloques de texto en vi, thunderbird, firefox, libreoffice...
Otro ejemplo: a menudo necesito insertar mi clave ssh-pub en algún lugar. Sé cómo usar ssh-copy-id, pero nuevamente, una solución de escritorio que me dé acceso a una lista configurable de bloques de texto sería excelente.
Respuesta1
yo sueloClave automáticase instala desde el Centro de software de Ubuntu
muy fácil de usar
He agregado "frases" como mi dirección de correo electrónico [email protected]
escribiendo gm
y presionando la pestaña<tab>
Respuesta2
El siguiente script hace el trabajo.con aplicaciones que utilizan Ctrl+V para pegar texto. Es importante saber que no funcionará en el gnome-terminal
* por ejemplo.
Lo probé en Firefox, Thunderbird, Libreoffice, Sublime Text y Gedit sin ningún problema.
Cómo funciona
Cuando se llama al script, aparece una ventana que enumera los fragmentos que usted definió. Elija un elemento (o escriba su número) y el fragmento de texto se pegará en la ventana frontal de cualquier aplicación que sea Ctrl+ V"-compatible":
Agregar/editar fragmentos
Cuando eliges manage snippets
, la carpeta del script ~/.config/snippet_paste
se abre en nautilus. Para crear un nuevo fragmento, simplemente cree un archivo de texto con el texto de su fragmento. No importa el nombre que le des al archivo; Mientras sea texto plano, está bien. El script solo usa el contenido del archivo y crea una lista numerada de todos los archivos ('contenido) que encuentra.
Si el directorio de fragmentos ( ~/.config/snippet_paste
) no existe, el script lo crea automáticamente.
Cómo utilizar
primero instale
xdotool
yxclip
, si no está instalado en su sistema:sudo apt-get install xdotool
y
sudo apt-get install xclip
Copie el siguiente script, guárdelo como
paste_snippets.py
y ejecútelo con el comando:python3 /path/to/paste_snippets.py
La secuencia de comandos
#!/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
Si no estás usando nautilus
Si está utilizando otro explorador de archivos, reemplace la línea (29):
subprocess.Popen(["nautilus", directory])
por:
subprocess.Popen(["<your_filebrowser>", directory])
Poner el script bajo una combinación de teclas de método abreviado
Para un uso más conveniente, puede crear un acceso directo para llamar al script:
Configuración del sistema →Teclado→Atajos→Atajos personalizados
Haga clic +para agregar su comando:
python3 /path/to/paste_snippets.py
El guión también está publicado enesencia.gisthub.
*EDITAR
La siguiente versión comprueba automáticamente si la gnome-
terminal ( ) es la aplicación principal y cambia el comando pegar automáticamente a Ctrl+ Shift+ Ven lugar de Ctrl+V
El uso y la configuración son prácticamente los mismos.
La secuencia de comandos
#!/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