--/--/-- (--)
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
2010/09/05 (日)
zshのコマンドヒストリについてまとめておこうと思う。

ヒストリ参照は以下のフォーマット

!ヒストリ選択:引数選択:ヒストリ編集子1:ヒストリ編集子2…

が基本形である。
良く"vi !$"といったコマンドを目にするが、これらはあくまで省略形である。

・ヒストリの選択
ヒストリ選択 動作
!! 直前のコマンドを選択
!N イベント番号Nのコマンドを選択
!-N N個前のコマンドを選択
!String Stringで始まる最近のコマンドを選択
!?String? Stringを含む最近のコマンドを選択

{}を使うと明示的にコマンドをわけることができる。
例)
% vi tmp/test
% !{vi}.c
→ vi tmp/text.c

勘違いし易いのが、上記は「特殊なコマンド」ではなくて、あくまで「ヒストリの選択」である。
どういう事かと言うと
% !emacs はヒストリ中のemacsで始まる最近のコマンドの実行を表すが、
後に紹介する引数選択と合わせて
% vi !emacs:2 !emacs:4 といった実行もできる。
!emacsはコマンドとして認識するのではなく、ヒストリを選択しているという意味なのだ。

・引数の選択
引数選択 動作
N 第N引数を選択
^ 第1引数
$ 最後の引数
% !!?String?使用時のStringを含む引数
M-N 第M引数から第N引数。片方省略可。
* 引数全体
M* 第M引数から最後の引数
M- 第M引数から最後から2番目の引数

・ヒストリ編集子
ヒストリ編集子 動作
h ディレクトリ名だけを取り出す
t ファイル名のみ
r 拡張子を取り除いた部分
e 拡張子部分のみ
s substitute
& 直前の置換と同じ置換を繰り返す
p 実行するコマンドを確認する
q クォート?
x クォート?
Q
l 全て小文字にする
u 全て大文字にする

substituteは直前のコマンドに限り
^OLD^NEW
というコマンドが使用可能。
!!:s/OLD/NEW/
と同義

以上、ヒストリ選択・引数選択・ヒストリ編集子の3つを使うことで
自由自在にヒストリを呼び出すことができる。
コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事へのトラックバック
この記事のトラックバックURL
http://tochiii.blog119.fc2.com/tb.php/238-d15d25c8
この記事にトラックバックする(FC2ブログユーザー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。