假设我的终端中有以下内容:
> cp my_file_name originals/#
其中#
代表光标。
是否有组合键可以插入my_file_name
光标位置,这样我就不必再次输入它了?我知道ALT+.可以从上一个命令中获取最后一个参数,但我想要当前命令中的上一个参数!
答案1
您可以使用Ctrl+W剪切参数并将其存储在剪贴板中,然后使用Ctrl+Y再次粘贴:
cp 我的文件名Ctrl+ W Ctrl+ Yoriginals/ Ctrl+Y
答案2
一种方法是使用括号扩展:
cp {,originals/}my_file_name
答案3
使用起来很复杂,但设置起来更简单:
您可以将击键(我将使用Ctrl- Q)绑定到该readline
copy-backward-word
函数并执行以下操作:
Alt- 2 Ctrl- Q Ctrl- y Ctrl- Alt-h
这意味着:
digit-argument
copy-backward-word
(抄写前两个词)yank
(粘贴)backward-kill-word
(删除多余的单词)
要在命令行上绑定按键:
bind '"\C-q": copy-backward-word'
或者将其添加到您的~/.inputrc
:
"\C-q": copy-backward-word
使用更简单,但设置更复杂:
您可以将长击键序列制成由一次击键触发的宏(我将在这里使用Alt-q并使用上面的Ctrl-绑定):q
在 shell 提示符下:
bind '"\eq": "\e2\C-q\C-y\e\C-h"'
或者在你的~/.inputrc
:
"\eq": "\e2\C-q\C-y\e\C-h"
请记住,您还需要绑定Ctrl-q如上所述。
现在要复制当前单词之前的单词,只需按Alt- q。
答案4
这是另一种方法,虽然我不确定你为什么要做你想做的事情,因为文件名在你的 cp 命令示例中是隐含的(并且可以按预期工作)。
> F=my_file_name && cp $F Workspace/$F
这也可以扩展以重命名文件:
> F=my_file_name && cp $F Workspace/$F.new