この記事はzsh Advent Calendar 2014 - Qiitaの18日目のエントリです。
zshでcontrol-w
(カーソル左の単語切り取り), control-u
(一行切り取り), control-k
(カーソルから行末まで切り取り), meta-d
(カーソル右の単語切り取り)等で切り取った文字列はcontrol-y
でペースト出来ます。
で、control-y
だと直前に切り取ったものしかペースト出来ませんが、meta-y
でそれ以前に切り取った文字列をペーストすることが出来ます(meta-y
は「escape押してy」の意味)
使い方は、control-y
で直前に切り取った文字列をペーストしてからmeta-y
すると、control-y
でペーストした文字列がその1回前に切り取った文字列に置き換わります。あとはmeta-y
押す度にその前に切り取った文字列で置き換えすることが出来ます。
と文字で説明しても分かりづらいので、gif動画にするとこんな感じ。
ここでは1
,22
,333
,4444
を順番に切り取ってから、control-y
,meta-y
,meta-y
,meta-y
...と入力してます。control-y
で4444
をペーストして、meta-y
を押すたび333
,22
,1
と置き換えていって、その次が4444
に戻って、という感じです。
この「過去に切り取った文字列」は8個まで記憶してます。
meta-y
はcontrol-y
の後に続けて使わないと動かないので注意。
個人的には、文字列を切り取る→過去のコマンド検索→見つけたコマンドと切り取った文字列を組みわせてコマンド作る、ということをよくやるんですが、組み合わせるときに下手にcontrol-w
とかすると最初に切り取った文字列が使えなくなっちゃうので1文字ずつ消す、ということをしてました。meta-y
を知ってからそういうのを気にしなくて良くなったのでかなり重宝してます。