2013-02-02 9 views
9

で前の引数を展開現在のコマンドラインの最後の引数を参照できるようにします(オプションで編集用に展開することもできます)。 zshやこれと同等のやり方で時間を節約する方法がありますか?

答えて

21

と(それを拡大)置き換えられます、あなたは履歴展開を使用して、現在のコマンドラインで個々の単語を参照することができます。

$ cp /really/long/path/from/file.txt !#:1:s/from/to 

または

$ cp /really/long/path/from/file.txt !#:$:s/from/to 

コマンドラインの!#は履歴展開は、これまでを入力しました。 :1は、その展開の最初の引数を指定します(この場合、長いファイルパス)。これまで入力された引数の数に関係なく、最後の引数を参照する代わりに:$を使用することができます。 :s/from/toは、選択した単語に対してテキスト置換を実行します。

$ cp /really/long/path/{from,to}/file.txt 

(注:このタスクの

は、あなたはまた、ブレース展開を使用することができ、これらの両方がbashから撮影するだけでなく、zshで作業している私は、他のzshのみのトリックがあるかもしれません。

+0

完璧な、それら2つの機能は私が探していたものです。中括弧の拡張は、おそらく私が '!#'を意味するのは現在の行を意味するので – robbles

1

を入力してください。をクリックするとzshで項目が展開されます。たとえば、次のように

私は

% ls /etc 

最初そして、この次の行でこのコマンドを実行すると、私はやる

!!

% ls /etc 

だから私はできると置き換えられます

% !!<Tab> 

私が望むようにこれを編集してください。これは、*や環境変数のような多くのものに対して機能します。 $TERMタブキーをタップするたとえば、一般的には(私の場合は例えば)xterm-256color

+0

これは参考になりました。現在のコマンドラインで履歴を展開できるかどうかはわかりませんでした。展開を元に戻す方法があるかどうか知っていますか? – robbles

+1

はemacsバインディングではわかりませんが、viバインディングでは 'esc'を押してから' u'を実行して最後のアクションを元に戻します。 –

+0

これは、以前の最初の引数が、わかりやすくするために '!!:1'で展開できることを意味しています:) – dezza

関連する問題

 関連する問題