我必须重写历史扩展命令,而不是从历史中调用它。
例如,我必须在以下命令中将 35 更改为 36, 37, 38....。
$ print -P '\033[35mThis is the same red as in your solarized palette\033[0m'
$ !!:gs/35/36
现在我需要做到!!:gs/36/37
然而,当我使用Up钥匙时。它没有显示$ !!:gs/35/36
。表明print -P '\033[35mThis is the same red as in your solarized palette\033[0m'
这里可以做什么?
答案1
我有两个建议您如何实现您想要的(仅指bash
):
将其添加到历史记录中
在输入第一个历史扩展命令行之前,您可以禁用历史扩展 ( set +H
) 并“执行”历史扩展命令(然后使用 重新启用set -H
)。然后它就成为 shell 历史记录的一部分,您可以轻松返回并修改它。
在 shell 历史记录中获取历史扩展命令行的更直接方法是history -s
。不过,早期的建议可能更容易记住(并且在复杂引用的情况下可能更容易)(取决于某人对 shell 选项的熟悉程度)。
读取线拉入
当您在整个操作过程中不需要猛拉时,这是最有用的。
输入历史扩展命令行,但不要按Enter。相反,转到行的开头/结尾并使用Ctrl- K/ Ctrl-删除整行U。这将整条线置于杀戮环上。您可以使用Ctrl-恢复线路Y。即使在执行该命令之后,只要您不将任何其他内容放入 Kill Ring 中,您就可以通过这种方式取回它。即使:您可以使用Ctrl- Y Alt-返回较早的杀戮环条目Y。