【发布时间】:2011-08-13 03:12:43
【问题描述】:
例如,假设我只是复制了一些东西:
mv foo_file.txt ~/to/some/long/path/that/i/do/not/want/to/retype
我想像这样使用历史替换:
mv bar_file.txt !!:2
当我点击 [tab] 时,我很惊讶 zsh 没有为我扩展 !!:2。在对历史论点的更复杂的引用中,我可能真的想要在返回之前进行扩展,这样我就可以肯定地知道我提到了正确的论点。有没有办法让它做到这一点? (我希望这是默认行为。这是我无意中禁用或破坏的默认行为吗?)
如果zsh做不到,可以bash吗?
UPDATE:zsh 将扩展历史表达式,如果它引用一个文件,而不是一个目录:
mv foo_file.txt foo_bar_file.txt
mv bar_file.txt !!:2[TAB]
如果它只是一个任意字符串,它将扩展它:
echo one two three four
echo !!:1[TAB]
但如果您试图将某些内容移动到目录中,则不会。越来越像这一定是个bug。
【问题讨论】:
-
它对我来说是tab-complete,zsh 4.2.7。
-
@chad:我使用的是 zsh 4.3.10,它对我不起作用。您要移动到目录吗?如果我只是重命名一个文件,它对我有用,但如果我想要扩展的参数是一个目录,它就不行。
-
如果由于某种原因制表符补全不起作用,您可以使用
:p修饰符来打印扩展的历史表达式,而不是在按回车时执行命令:mv bar_file.txt !!:2:p。
标签: bash zsh tab-completion bash-completion zsh-completion