Bash

如何將熱鍵添加到 zsh 或 bash 的 readline 中,該熱鍵填充要複製的第二個參數但使用 .bak?

  • August 26, 2020

我想為這個有時需要執行的任務製作一個熱鍵:

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

我在哪裡重複了文件名,但最後有一個 .bak 。我只想輸入:

%> cp file.txt.1

點擊快捷鍵並讓它添加帶有 .bak 副檔名的文件名。這會將第二個程式碼片段變成第一個。

這可能嗎?如果是這樣,我怎樣才能讓 readline 添加第二個參數?(我認為這是我必須在這裡程式的readline)。

對於這種情況,在 bash 或 zsh 中,您可以將命令輸入為

cp file.txt.1{,.bak}

這是大括號展開

對於大括號擴展不方便的情況,因為您想對第二個參數進行更多編輯,在 zsh 中,有一個開箱即用copy-prev-word綁定到Ctrl++的命令。*它在游標之前插入單詞的副本。確保在+ +*之前鍵入一個空格AltCtrl``Alt``. You may prefer to bind [copy-prev-shell-word](http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#index-copy_002dprev_002dshell_002dword) which is generally more useful.

*``` 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`+替換`B`為`Ctrl`+ 。`Left`*

引用自:https://unix.stackexchange.com/questions/606491