В XFCE4 можно установить шаблоны в ~ / Templates, и они появятся в разделе «Создать документ» контекстного и файлового меню.
Теперь предположим, что я создаю там шаблон Python (это может быть любой язык) с помощью следующего фрагмента.
#! /usr/bin/env python
# -*- coding: utf-8 -*-
#################################################
# Author: Me
# Date: $(today)
#################################################
Мой вопрос в том, как добиться того, чтобы $ (date)
автоматически заменялись текущей датой, когда новый файл создается с использованием шаблона. Решение должно работать для любого текстового шаблона, такого как tex, c, cpp, h, html, js, css и т. д.
Учитывая, что Thunar очень легкий, очень вероятно, что это невозможно. Тем не менее, я хотел бы знать, есть ли обходной путь.
Спасибо!
AFAIK Вы не можете использовать только шаблоны для этого. Одно обходное решение могло быть должно объединить шаблоны с пользовательскими действиями и сценарием удара.
Во-первых, запишите сценарий, который при предоставлении файла заменит все случаи строки $(date)
с фактической датой (в некотором указанном формате). Например, создать ~/.local/bin/insert_date_into_template
с содержанием:
#!/bin/bash
# produce dd/mm/yyyy date, other formats possible
date=$(date +"%d/%m/%Y")
# see https://stackoverflow.com/questions/407523/escape-a-string-for-a-sed-replace-pattern
escaped_date=$(echo "$date" | sed 's/[\/&]/\\&/g')
sed -i 's/$(date)/'"$escaped_date"'/g' "$*"
и сделайте это исполняемым файлом (chmod u+x ~/.local/bin/insert_date_into_template
). Хотелось бы надеяться, ~/.local/bin/
уже находится в Вашем $PATH
.
Затем, определите новое пользовательское действие, путем попытки Редактировать> Настраивают пользовательские действия в Thunar и нажатие на знак "плюс" на стороне. Выберите соответствующее имя (сказать Insert date into template
) и описание и набор команда к insert_date_into_template %F
(или, если это не работает, ~/.local/bin/insert_date_into_template %F
).
Теперь, если Вы хотите иметь новый файл, предварительно заполненный согласно шаблону, но с $(date)
замененный текущей датой, необходимо выполнить два шага:
Создайте новый файл из шаблона, как Вы обычно делали бы (щелкните правой кнопкой, Создайте Документ и т.д.).
Вызовите пользовательское действие путем щелчка правой кнопкой по недавно созданному файлу и выбору Insert date into template
(или независимо от того, что Вы назвали пользовательское действие, выше).
(Обратите внимание, что, очевидно, шаблон должен содержать строку $(date)
чтобы это имело любой эффект. Также, очевидно, не вызывайте пользовательское действие на фактические, исходные шаблоны в ~/Templates
!)
В принципе процесс мог быть сжат ко всего одному шагу (а не два) путем записи соответствующего пользовательского действия. Однако вещи могли бы затем стать немного трудными, поскольку у Вас должен будет быть способ указать, какой шаблон (Python, ЛАТЕКС, cpp и т.д.) Вы хотите использовать. (Если zenity
доступно в Xubuntu, Вы могли бы использовать это для выбора шаблона.)