如何向 zsh 或 bash 的 readline 添加一个热键,该热键需要填充第二个参数来复制,但使用 .bak?

如何向 zsh 或 bash 的 readline 添加一个热键,该热键需要填充第二个参数来复制,但使用 .bak?

我想为有时需要执行的这项任务设置一个热键:

%> cp file.txt.1 file.txt.1.bak

我重复了文件名,但末尾带有 .bak。我想直接输入:

%> cp file.txt.1

按快捷键并添加带有 .bak 扩展名的文件名。这会将第二个代码片段变成第一个代码片段。

这可能吗?如果是这样,我怎样才能让 readline 添加第二个参数? (我认为这是我必须在这里编程的阅读线)。

答案1

对于这种情况,在 bash 或 zsh 中,您可以输入以下命令

cp file.txt.1{,.bak}

这是大括号扩展

对于大括号扩展不方便的情况,因为您想对第二个参数进行更多编辑,在 zsh 中,有一个命令copy-prev-word这必然是Ctrl+ Alt+盒子外面。它会在光标前面插入单词的副本。确保在Ctrl+ Alt+之前输入一个空格。您可能更喜欢绑定copy-prev-shell-word这通常更有用。

bindkey '^[^_' copy-prev-shell-word

在 bash 或 zsh 中,要从行尾开始复制命令行上的最后一个单词,请确保该行以空格结尾,然后按Alt+ B Ctrl+ K Ctrl+ Y Ctrl+ Y。这会将最后一个单词加上尾随空格剪切并粘贴两次。或者,如果该行不以空格结尾,请按Alt+ B Left Ctrl+ K Ctrl+ Y Ctrl+ Y。仅当最后一个参数不包含空格时才有效;如果是的话,你需要再往前走一点。如果适合您的设置,您可以将Alt+替换BCtrl+ 。Left

相关内容