在 XFCE4 中,可以在 ~/Templates 中安装模板,它们将出现在上下文和文件菜单的创建文档条目下。
现在,假设我使用以下代码片段在那里创建一个 Python 模板(可以是任何语言)。
#! /usr/bin/env python
# -*- coding: utf-8 -*-
#################################################
# Author: Me
# Date: $(today)
#################################################
我的问题是如何实现$(date)
使用模板创建新文件时自动用当前日期替换。该解决方案适用于任何基于文本的模板,如 tex、c、cpp、h、html、js、css 等。
考虑到 Thunar 非常轻量,这很可能是不可能的。不过,我想知道是否有解决方法。
谢谢!
答案1
据我所知你不能使用仅有的模板。一种解决方法是将模板与自定义操作和一个 bash 脚本。
准备
首先,编写一个脚本,当给定一个文件时,它将用实际日期(以某种指定的格式)替换所有出现的字符串$(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、LaTeX、cpp 等)。(如果zenity
Xubuntu 中可用,您可以使用它来选择模板。)