有没有办法在参数扩展上下文中使用!$
?推动此问题的所需用法是快速(就关键笔划而言)文件名称的更改(例如,不是将文件名保存在变量中并执行rsvg-convert $svg > ${svg/.svg/.png}
,而是可以使用{{1其中rsvg-convert $! > $!{/.svg/.png}
是错误的语法,暗示了所需的效果;当有问题的文件是前一行的最后一个标记时,这样的命令通常可以比在存在时使用标签完成等备选方案更快地输入文件共享不同长度的前缀,或通过鼠标选择复制和粘贴文件名。据我所知,在这样的背景下无法使用$!{/.svg/.png}
,但也许通过一些诡计可以实现类似的效果。
答案 0 :(得分:5)
根据您希望替换的复杂程度,历史记录扩展确实支持将第一次出现的字符串替换为另一个字符串。您只需在替换前加{"@timestamp":"2017-06-11T00:28:24.112Z","type_instance":"interrupt","plugin":"cpu","logdate":"2017-06-11T00:28:24.112Z","host":"node-2","@version":"1","collectd_type":"percent","value":0}
{"@timestamp":"2017-06-11T00:28:24.112Z","type_instance":"softirq","plugin":"cpu","logdate":"2017-06-11T00:28:24.112Z","host":"node-2","@version":"1","collectd_type":"percent","value":0}
,如:
function stripCantillation(str){
return str.replace(/[\u0591-\u05AF]/g,"").replace("׀", "").replace("׃","").replace("־","");
}
您可以查看所有历史记录修饰符here
至少在emacs-mode中,如果按 alt + ,bash也会将上一个命令的最后一个参数置于内联中(不适用于运行命令时的扩展)。。所以在这种情况下输入可能是最快的:
:
然后 alt + 。 > alt + 。然后删除扩展它只是用 alt + bksp 然后新扩展名rsvg-convert !$ > !$:s/.svg/.png
答案 1 :(得分:2)
如果你在Eric的例子中进一步研究修饰语,你也可以这样做:
rsvg-convert !$ > !$:r.png
假设.svg是后缀