これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなど、複数の無料オンライン ワークステーションのいずれかを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド zshcontrib です。
プログラム:
NAME
zshcontrib - zsh へのユーザーの貢献
DESCRIPTION
Zsh ソース ディストリビューションには、ユーザー コミュニティによって提供された多数のアイテムが含まれています。
これらは本質的にシェルの一部ではなく、すべての zsh で利用できないものもあります。
インストール。 これらの中で最も重要なものは、ここに文書化されています。 ドキュメントについては、
シェル関数などのその他の寄稿アイテム。関数ソースでコメントを探します
ファイル。
UTILITIES
アクセスする オンライン カスタマーサービス
キーシーケンス ESC h 通常、ZLEによってバインドされて実行されます 実行ヘルプ ウィジェット (を参照
ズシュル(1))。 これにより、 実行ヘルプ 現在のコマンド ワードを使用したコマンド
引数として入力行。 デフォルトでは、 実行ヘルプ のエイリアスです man コマンド、だからこれ
コマンド ワードがシェル組み込み関数またはユーザー定義関数である場合、多くの場合失敗します。 に
を再定義する 実行ヘルプ エイリアスを使用すると、シェルによって提供されるオンライン ヘルプを改善できます。
当学校区の ヘルプファイル にあるユーティリティ 使用率 ディストリビューションのディレクトリ。Perl プログラムです。
zsh マニュアルを処理して、シェルごとに個別のヘルプ ファイルを生成するために使用できます。
ビルトインおよび他の多くのシェル機能にも使用できます。 オートローダブル 実行ヘルプ 機能、
見つかった 機能・その他、これらのヘルプファイルを検索し、他のいくつかのテストを実行して
コマンドについて可能な限り完全なヘルプを生成します。
ヘルプ ファイルは、デフォルトで次のサブディレクトリにインストールされます。 /usr/share/zsh or
/usr/local/share/zsh.
で独自のヘルプ ファイルを作成するには ヘルプファイル、ディレクトリを選択または作成します。
個々のコマンド ヘルプ ファイルが常駐します。 たとえば、次のように選択できます。 ~/zsh_help。 場合
ホーム ディレクトリに zsh ディストリビューションを展開した場合は、次のコマンドを使用します。
mkdir ~/zsh_help
パール ~/zsh-5.1.1/Util/helpfiles ~/zsh_help
当学校区の ヘルプディレクトリ パラメータが伝える 実行ヘルプ ヘルプ ファイルを探す場所。 設定を解除すると、
デフォルトのインストール パス。 独自のヘルプ ファイル セットを使用するには、これを
起動ファイルのいずれかの適切なパス:
ヘルプディル=~/zsh_help
使用するには 実行ヘルプ 関数に次のような行を追加する必要があります
.zshrc または同等の起動ファイル:
エイリアス 実行ヘルプ
オートロード 実行ヘルプ
`の順序であることに注意してくださいオートロード 実行ヘルプ働くために、 実行ヘルプ ファイルは次のいずれかにある必要があります
で名前が付けられたディレクトリ fpath 配列 (参照 zshparam(1))。 これはすでに
標準の zsh インストールがある場合。 そうでない場合は、コピーします 関数/その他/実行ヘルプ
適切なディレクトリに。
再コンパイル中 機能
zsh 関数を頻繁に編集する場合、または zsh インストールを定期的に更新する場合
最新の開発を追跡すると、関数ダイジェストが
zコンパイル 関数のソース ファイルに関しては、ビルトインが古くなっていることがよくあります。
zsh はファイルをロードするときに常に最新のファイルを探すため、これは通常は問題になりません。
ただし、シェルの起動と関数の読み込みが遅くなる可能性があります。 また、ダイジェストの場合
file は、の要素として明示的に使用されます fpath、zshはそのソースのいずれかをチェックしません
ファイルが変更されました。
当学校区の z再コンパイル にあるオートローダブル関数 機能・その他、維持するために使用することができます
関数は最新の状態にダイジェストします。
z再コンパイル [ -qt ] [ 名 ...]
z再コンパイル [ -qt ] -p argは ...[ -- argは ...]
これは見つけようとします *.zwc ファイルの少なくとも XNUMX つが
元のファイルは、コンパイルされたファイルよりも新しいです。 これは、名前が
コンパイルされたファイルに格納されているパスは、完全なパスであるか、またはコンパイルされたディレクトリからの相対パスです。
含まれています .zwc ファイルにソフトウェアを指定する必要があります。
最初のフォームでは、それぞれ 名 コンパイルされたファイルまたはディレクトリの名前です
含む *.zwc チェックする必要があるファイル。 引数が指定されていない場合、
ディレクトリと *.zwc ファイル内の fpath 使用されています。
日時 -t が与えられた場合、コンパイルは実行されませんが、戻りステータスはゼロ (true) です。
再コンパイルが必要なファイルがあり、ゼロ以外の場合 (false) に設定されます。
さもないと。 ザ・ -q オプションは、何を説明するおしゃべりな出力を静めます z再コンパイル
やっている。
なし -t オプション、すべてのファイルが必要な場合、戻りステータスはゼロです
少なくとも XNUMX つのコンパイルの場合、再コンパイルはコンパイルされ、ゼロ以外になる可能性があります。
ファイルは失敗しました。
Status -p オプションが与えられ、 argはs は、XNUMX つ以上のセットとして解釈されます。
の引数 zコンパイル、 ` で区切られた--'。 例えば:
z再コンパイル -p \
-R 〜/ .zshrc -- \
-M ~/.zcompdump -- \
~/zsh/comp.zwc ~/zsh/完了/*/_*
これはコンパイルされます 〜/ .zshrc に ~/.zshrc.zwc それが存在しない場合、またはそれが古い場合
より 〜/ .zshrc. コンパイルされたファイルは、マッピングではなく読み取り用にマークされます。 の
同じことが行われます ~/.zcompdump ~/.zcompdump.zwc、しかし、このコンパイルされたファイルは
マッピング用にマークされています。 最後の行はファイルを再作成します ~/zsh/comp.zwc のいずれかがあれば
指定されたパターンに一致するファイルは、それより新しいものです。
なし -p オプション、 z再コンパイル ない関数ダイジェストを作成しません
既に存在しており、ダイジェストに新しい機能を追加することもありません。
次のシェル ループは、すべての関数ダイジェストを作成する方法の例です。
あなたの機能 fpathディレクトリへの書き込み権限があると仮定します。
の ((i=1; i <= $#fpath; ++i)); do
dir=$fpath[i]
zwc=${ディレクトリ:t}.zwc
if [[ $ディレクトリ == (.|..) || $ディレクトリ == (.|..)/* ]]; その後
続ける
fi
ファイル=($dir/*(N-.))
if [[ -w $ディレクトリ:h && -n $files ]]; その後
files=(${${(M)files%/*/*}#/})
if ( cd $ディレクトリ:h &&
z再コンパイル -p -U -z $zwc $files ); その後
fpath[i]=$fpath[i].zwc
fi
fi
行われ
当学校区の -U -z オプションは、デフォルトの zsh インストールの機能に適しています fpath;
個人用関数ディレクトリには別のオプションを使用する必要がある場合があります。
ダイジェストが作成されたら、 fpath それらを参照するように変更されたので、そのままにしておくことができます
実行して最新にします z再コンパイル 引数なし。
キーボード
キーボード、ワークステーション、ターミナル、
エミュレーター、およびウィンドウ システムにより、zsh に組み込みのキー バインディングを持たせることができなくなります。
あらゆる状況に。 の zkbd にあるユーティリティ 機能・その他、すぐにあなたを助けることができます
構成のキー バインドを作成します。
ラン zkbd 自動ロードされた関数として、またはシェルスクリプトとして:
zsh -f ~/zsh-5.1.1/関数/その他/zkbd
あなたが走るとき zkbd、最初に端末タイプを入力するように求められます。 それが提供するデフォルトの場合
正解です。リターンを押してください。 次に、いくつかの異なるキーを押すように求められます
キーボードと端末の特性を決定します。 zkbd 見つかった場合は警告します
どちらも送信しない Delete キーなど、異常なもの ^H また ^?.
によって読み取られるキーストローク zkbd という名前の連想配列の定義として記録されます。
キー、サブディレクトリ内のファイルに書き込まれます .zkbd あなたの ホーム or ズドットディル
ディレクトリ。 ファイルの名前は、 TERM, VENDOR OSタイプ パラメーター、
ハイフンで結合されます。
このファイルをあなたの .zshrc または別の起動ファイルに `source'または `.'
コマンド、次に参照 キー 次のような bindkey コマンドのパラメータ:
source ${ZDOTDIR:-$HOME}/.zkbd/$TERM-$VENDOR-$OSTYPE
[[ -n ${キー[左]} ]] && バインドキー 「${キー[左]}」 後方文字
[[ -n ${キー[右]} ]] && バインドキー 「${キー[右]}」 転送文字
# 等々
`の順序であることに注意してくださいオートロード zkbd働くために、 zkdb ファイルは次のいずれかにある必要があります
で名前が付けられたディレクトリ fpath 配列 (参照 zshparam(1))。 これはすでにそうなっているはずです
標準の zsh インストールがある場合。 そうでない場合は、コピーします 関数/その他/zkbd 〜に
適切なディレクトリ。
投棄 シェル(Shell) 都道府県
時折、シェルのバグと思われるものに遭遇することがあります。
zsh のベータ版または開発リリースを使用しています。 通常、それで十分です
問題の説明を zsh メーリング リストの XNUMX つに送信してください ( zsh(1))、しかし
場合によっては、zsh 開発者の XNUMX 人が環境を再作成する必要があります。
問題を追跡します。
という名前のスクリプト レポーターで見つかった 使用率 ディストリビューションのディレクトリが提供されます
この目的のために。 (することも可能です オートロード レポーター、 だけど レポーター ではありません
インストールされた fpath このスクリプトは、シェルの状態の詳細なダンプを出力します。
`で読み取ることができる別のスクリプトの形式でzsh -f' その状態を再現します。
使用するには レポーター、 `でスクリプトをシェルに読み込みます.' コマンドとリダイレクト
ファイルへの出力:
. ~/zsh-5.1.1/ユーティリティ/レポーター > zsh.レポート
あなたはチェックする必要があります zsh.レポート パスワードなどの機密情報のファイル
スクリプトを開発者に送信する前に、それらを手動で削除してください。 また、出力できるように
開発者がこの情報を事前に尋ねるのを待つのが最善です
それを送っています。
使用することもできます レポーター シェル状態のサブセットのみをダンプします。 これは時々
初めてスタートアップ ファイルを作成する場合に便利です。 レポーターからの出力のほとんどは
通常よりもはるかに詳細な情報が起動ファイルに必要ですが、 エイリアス, オプション,
zstyles 状態はデフォルトからの変更のみを含むため、役立つ場合があります。 の
バインディング state は、独自のキーマップを作成した場合に役立つ場合があります。 レポーター
キーマップ作成コマンドとすべてのキーマップのバインディングをダンプするように手配します。
自動化ツールでよくあることですが、スタートアップ ファイルを次のように作成すると、 レポーター、 あなたがすべき
結果を編集して不要なコマンドを削除します。 新しいものを使用している場合は注意してください
完了システム、あなたはすべきです ダンプ 機能 でスタートアップファイルに状態を
レポーター; 使用 コンプダンプ 代わりに機能します (参照 zshcompsys(1))。
レポーター [ 状態 ...]
現在のシェル状態の指定されたサブセットを標準出力に出力します。 の
状態 引数は、次の XNUMX つまたは複数の場合があります。
を 以下にリストされているすべてを出力します。
エイリアス
エイリアス定義を出力します。
バインディング
ZLE キー マップとバインドを出力します。
完成
古いスタイルで出力する コンパクト コマンド。 新規完成は 機能
zstyles.
機能
自動ロードと関数定義を出力します。
制限 出力 制限 コマンド。
オプション
出力 セトプト コマンド。
スタイル と同じ zstyles.
variables
出力シェル パラメータの割り当て、および export あらゆる環境向けのコマンド
変数。
zstyles
出力 ズスタイル コマンド。
Status 状態 省略、 を 想定されます。
`を除いてを'、 毎日 状態 任意の接頭辞で省略できます。XNUMX つでも構いません。
手紙; したがって a と同じです。 エイリアス, z と同じです。 zstyles, etc.
操作する フック 機能
追加 zsh フック [ -dD ] [ -ウズク語 ] フック function
セクション SPECIAL で説明されているように、いくつかの関数はシェルにとって特別です。
機能、参照 ズシュミスク(1) 特定の時点で自動的に呼び出されるという点で
シェル実行中。 それぞれに、次の名前で構成される関連配列があります。
同じポイントで呼び出される関数。 これらはいわゆる「フック関数」です。
シェル機能 追加 zsh フック 追加または削除する簡単な方法を提供します
配列からの関数。
フック の一つである chpwd, periodic, 事前コマンド, 実行前, 歴史, ゼヘシットまたは
zsh_ディレクトリ名、問題の特殊関数。 ご了承ください
zsh_ディレクトリ名 他の関数とは異なる方法で呼び出されますが、
まだフックとして操作できます。
function 通常のシェル関数の名前です。 オプションが指定されていない場合、これは
指定されたコンテキストで実行される関数の配列に追加されます。
オプションの場合 -d 与えられた、 function 関数の配列から削除されます
実行されます。
オプションの場合 -D 与えられた、 function はパターンとして扱われ、一致するものはすべて
関数の名前は、実行される関数の配列から削除されます。
オプション -U, -z -k に引数として渡されます オートロード の function。 のために
zsh で提供された関数、オプション -ウズ 適切です。
覚えている 最近 ディレクトリ
関数 cdr 作業ディレクトリを以前の作業ディレクトリに変更できます
自動的に維持されるリストからのディレクトリ。 概念はディレクトリに似ています
によって制御されるスタック pushdは, popdを Dirs ビルトインですが、より設定可能であり、
すべてのエントリをファイルに保存し、セッション間および (デフォルトでは) セッション間で維持されます。
現在のセッションの端末エミュレーター。 重複は自動的に削除されるため、
リストには、各ディレクトリの最新の使用が反映されています。
なお、 pushdは ディレクトリ スタックは、実際には変更も使用もされません。 cdr あなたが
以下の構成セクションで説明されているように、そのように構成します。
インストール
システムは、ディレクトリが呼び出されるたびに呼び出されるフック関数によって機能します。
変化します。 システムをインストールするには、必要な機能を自動ロードし、 追加 zsh フック
上記の機能:
オートロード -ウズ chpwd_recent_dirs cdr 追加 zsh フック
追加 zsh フック chpwd chpwd_recent_dirs
これで、対話的に直接変更するたびに、使用するコマンドに関係なく、
変更先のディレクトリは、最新のものから順に記憶されます。
すべての直接的なユーザー操作は、 cdr 機能。
cdr の引数は数値です N 対応する N最近変更された th
ディレクトリ。 1 は直前のディレクトリです。 現在のディレクトリが記憶されている
しかし、目的地として提供されていません。 複数のウィンドウを開いている場合、1 つの可能性があることに注意してください。
別のウィンドウで変更されたディレクトリを参照します。 あなたはこれを避けることができます
で説明されているように、ディレクトリを格納するための端末ごとのファイル 最近のディレクトリファイル
を参照してください。
あなたが設定した場合 最近のディレクトリのデフォルト 以下に説明するスタイル cdr と同じように動作します cd if
数値以外の引数、または複数の引数が指定されました。 最近のディレクトリリストは
ディレクトリを変更しても同じように更新されます。
引数を省略した場合は 1 とみなされます。 これは似ています pushdはの行動
スタック上の最新の XNUMX つのディレクトリを交換します。
への引数の完了 cdr compinit が実行されている場合に使用できます。 メニュー選択
以下を使用することをお勧めします。
ズスタイル ':完了:*:*:cdr:*:*' メニュー 選択
最近のディレクトリを循環できるようにします。 順序が保持されるため、最初の
選択は、現在のディレクトリの前の最新のディレクトリです。 詳細なスタイルも
ディレクトリが表示されるようにすることをお勧めします。 このスタイルはデフォルトでオンになっているため、アクションはありません
変更しない限り必須です。
オプション
の行動 cdr 以下のオプションで変更できます。
-l 番号と対応するディレクトリを省略形でリストします (つまり、
~ 置換が再適用されます)、XNUMX 行に XNUMX つ。 ここのディレクトリは引用されていません (これは
ディレクトリ名に改行が含まれている場合にのみ問題になります)。 これは
完成系。
-r 変数を設定します 返信 ディレクトリの現在のセットに。 何も印刷されず、
ディレクトリは変更されません。
-e ディレクトリのリストを XNUMX 行に XNUMX つずつ編集できます。 リストは編集可能です
好きなだけ; 健全性チェックは実行されません。 コンプリートが可能です。
引用は必要ありません(改行を除いて、いずれにしてもありません
シンパシー); ディレクトリは省略されておらず、絶対パスを含んでいます。
彼らはで始まります /. 通常、最初のエントリは現在のエントリのままにしておく必要があります。
ディレクトリにあります。
構成は、完全に慣れ親しんでいるスタイルメカニズムを使用して行われます。
そうでない場合は、の説明を参照してください ズスタイル コマンドを見る zshモジュール(1)。 のコンテキスト
設定スタイルは ':chpwd:*' 文脈の意味が拡張された場合
将来、例えば:
ズスタイル ':chpwd:*' 最近の最大ディレクトリ数 0
の値を設定します 最近の最大ディレクトリ数 style を 0 に設定します。実際には、スタイル名は固有のものです
「*」のコンテキストで十分です。
例外は 最近のディレクトリ挿入、補完システムによって排他的に使用され、
通常の補完システム コンテキストもあります (':完了:*' これ以上具体的なことがなければ
必要)、繰り返しますが 「*」 実際には問題ないはずです。
最近のディレクトリのデフォルト
true の場合、コマンドは最近のディレクトリ インデックスを予期しており、
複数の引数または引数が整数でない場合、フォールスルー
"CD"。 これにより、怠け者はディレクトリの変更に XNUMX つのコマンドのみを使用できます。
完了もこれを認識します。 制御方法については、recent-dirs-insert を参照してください
このオプションが使用されている場合の完了。
最近のディレクトリファイル
ディレクトリのリストが保存されるファイル。 デフォルトは
${ZDOTDIR:-$HOME}/.chpwd-recent-dirs、つまり、これはホームディレクトリにあります
変数を設定しました ズドットディル 別の場所を指します。 ディレクトリ名は
に保存されました $'...' 引用された形式であるため、ファイルの各行を直接提供できます
引数としてシェル。
このスタイルの値は配列の場合があります。 この場合、リストの最初のファイル
ディレクトリを保存するために常に使用されますが、他のファイルは残されます
手付かず。 最近使用したディレクトリ リストを読み取るときに、
最初のファイルのエントリの最大数、後のファイルの内容
表示されているリストから削除された重複が配列に追加されます。 内容
XNUMX つのファイルのうちの XNUMX つが一緒にソートされていない、つまり、最初のファイルのすべてのエントリ
が最初に表示されます。 特別な価値 + を示すためにリストに表示できます。
その時点で default ファイルを読み込む必要があります。 これにより、次のような効果が得られます。
ズスタイル ':chpwd:*' 最近のディレクトリファイル \
~/.chpwd-recent-dirs-${TTY##*/} +
最近のディレクトリは、ターミナルに従って番号が付けられたファイルから読み取られます。 もしも
リストがデフォルト ファイルから補足される不十分なエントリがあります。
使用することが可能です ズスタイル -e 実行時にディレクトリを構成可能にするには:
ズスタイル -e ':chpwd:*' 最近のディレクトリファイル pick-recent-dirs-ファイル
最近のディレクトリファイルを選択() {
if [[ $障害者 = 〜/テキスト/書き込み(|/*) ]]; その後
返信=(~/.chpwd-recent-dirs-writing)
ほかに
返信=(+)
fi
}
この例では、現在のディレクトリが 〜/テキスト/書き込み またはその下のディレクトリ
そうでない場合は、最近のディレクトリを保存するための特別なファイルを使用し、それ以外の場合はデフォルトを使用します。
最近のディレクトリ挿入
完成まで使用。 もしも 最近のディレクトリのデフォルト が true の場合、これを true
インデックスではなく、実際のディレクトリがコマンドに挿入されます。
ライン; これは、対応するインデックスを使用するのと同じ効果がありますが、
履歴が明確になり、行が編集しやすくなります。 この設定では、
引数は既に入力されています。最近ではなく通常のディレクトリ補完
ディレクトリの補完が行われます。 これは、最近のディレクトリの完了が
エントリーメニューのファッションを循環することで行われると予想されます。
スタイルの値が 常に、その後、最近のディレクトリのみが
完了; その場合は、 cd その他を完了させたいときのコマンド
ディレクトリ。
値が フォールバック、最近のディレクトリが最初に試行され、次に通常のディレクトリが試行されます
ディレクトリ補完は、最近のディレクトリ補完が失敗した場合に実行されます
一致しています。
最後に、値が 両言語で 次に、両方の補完セットが表示されます。 の
通常のタグメカニズムを使用して、結果を区別できます。最近のディレクトリで
としてタグ付け 最近のディレクトリ. 最近挿入されたディレクトリは省略されていることに注意してください
必要に応じてディレクトリ名を付けます。
最近の最大ディレクトリ数
ファイルに保存するディレクトリの最大数。 これがゼロまたは負の場合
最大値はありません。 デフォルトは 20 です。これには現在のディレクトリが含まれていることに注意してください。
これは提供されていないため、提供されるディレクトリの最大数は
最大値より XNUMX 少ない。
最近のディレクトリプルーン
このスタイルは、どのディレクトリを追加するか (または追加しないか) を決定する配列です。
最近のリストへ。 配列の要素には、次のものを含めることができます。
親 最近のリストから親 (より正確には祖先) を削除します。 もしも
存在する場合、任意の数のディレクトリを直接下に移動すると、
上書きされる現在のディレクトリ。 たとえば、~pws から
~pws/some/other/dir により、~pws が最近のディレクトリに残されません
スタック。 これは、子孫ディレクトリへの直接の変更にのみ適用されます。
リストの以前のディレクトリは削除されません。 たとえば、
~pws/yet/another を ~pws/some/other/dir に指定しても、~pws がプルーニングされることはありません。
パターン:パターン
最近のディレクトリに追加してはならないディレクトリのzshパターンを提供します
リスト (まだ存在しない場合)。 この要素を繰り返して別の要素を追加できます
パターン。 例えば、 'パターン:/ tmpに(|/*)' 停止する / tmpに またはその子孫
追加されることから。 の EXTENDED_GLOB これらのオプションは常にオンになっています
パターン。
最近-dirs-pushd
trueに設定すると、 cdr 使用する pushdは cd ディレクトリを変更するため、
ディレクトリはディレクトリ スタックに保存されます。 ディレクトリスタックが完全に
このファイルで使用されるメカニズムによって保存されたファイルのリストとは別に、
これを行う明確な理由はありません。
ダイナミック ディレクトリにジョブを開始します。 命名
動的ディレクトリ名構文を使用して、最近のディレクトリを参照することができます。
提供された関数を使用して zsh_ディレクトリ名_cdr フック:
オートロード -ウズ 追加 zsh フック
追加 zsh フック -ウズ zsh_ディレクトリ名 zsh_ディレクトリ名_cdr
これが行われると、 〜[1] $PWD 以外の最新のディレクトリを参照するため、
の上。 完成後 ~[... も動作します。
Details of ディレクトリにジョブを開始します。 取り扱い
このセクションは、好奇心旺盛または混乱している人向けです。 ほとんどのユーザーはこれを知る必要はありません
情報を表示します。
最近使用したディレクトリはすぐにファイルに保存されるため、
セッション。 現在、ファイルのロックは適用されていないことに注意してください。リストはすぐに更新されます
インタラクティブなコマンドであり、(履歴とは異なり) 他にはありません。
一度にXNUMXつのウィンドウでディレクトリを変更しようとしています。 これは共有アカウントでは安全ではありませんが、
いずれにせよ、他の誰かが別のシステムに変更している場合、システムの有用性は限られています
あなたの背後にある一連のディレクトリ。
これをもう少し安全にするために、コマンドラインから開始されるディレクトリの変更のみ、
シェル関数呼び出しを介して直接的または間接的に (ただし、サブシェルを介してではなく、
evals、トラップ、補完関数など) が保存されます。 シェル関数は使用する必要があります cd
-q or pushdは -q ディレクトリへの変更を非表示にする場合の副作用を避けるため
コマンドライン。 関数の内容を見る chpwd_recent_dirs のガイドをご参照ください。
収集 情報 FROM VERSION CONTROL SYSTEMS
多くの場合、バージョン管理から情報を自動的に取得できると便利です
Subversion、CVS、git などのシステム (VCS) をユーザーに提供できるようにする。
おそらくユーザーのプロンプトで。 どこの支店かすぐわかるように
たとえば、現在オンになっています。
そのためには、 vcs_info 機能。
次の VCS がサポートされており、それらが参照される略称を示しています
システム内へ:
バザー(bzr)
http://bazaar.canonical.com/
コードヴィル (cdv)
http://freecode.com/projects/codeville/
同時バージョン管理システム (CVS)
http://www.nongnu.org/cvs/
ダルクス (ダークス)
http://darcs.net/
化石 (化石)
http://fossil-scm.org/
ギット (git)
http://git-scm.com/
GNU アーチ (tla)
http://www.gnu.org/software/gnu-arch/
マーキュリアル (hg)
http://mercurial.selenic.com/
モノトーン (mtn)
http://monotone.ca/
パーフォース (p4)
http://www.perforce.com/
転覆 (SVN)
http://subversion.apache.org/
SVK (svk)
http://svk.bestpractical.com/
パッチ管理システムもサポート キルト
(http://savannah.nongnu.org/projects/quilt)。 見る キルト サポート 詳細は以下をご覧ください。
ロードするには vcs_info:
オートロード -ウズ vcs_info
特定のプロンプトを必要としないため、既存のプロンプトで使用できます。 $psvar
エントリが利用可能になります。
クイックスタート
この機能をすばやく (色を含めて) 動作させるには、次のようにします。
(あなたがロードしたと仮定します vcs_info 適切に - 上記を参照):
ズスタイル ':vcs_info:*' アクションフォーマット \
'%F{5}(%f%s%F{5})%F{3}-%F{5}[%F{2}%b%F{3}|%F{1}%a%F{5}]%f '
ズスタイル ':vcs_info:*' フォーマット \
'%F{5}(%f%s%F{5})%F{3}-%F{5}[%F{2}%b%F{5}]%f '
ズスタイル ':vcs_info:(sv[nk]|bzr):*' ブランチ形式 '%b%F{1}:%F{3}%r'
事前コマンド () { vcs_info }
PS1='%F{5}[%F{2}%n%F{5}] %F{3}%3~ ${vcs_info_msg_0_}%f%# '
明らかに、最後の XNUMX 行はデモンストレーション用です。 電話する必要があります vcs_info from
事前コマンド 関数。 それが完了したら、 引用された 「${vcs_info_msg_0_}」 in
あなたのプロンプト。
使えるように 「${vcs_info_msg_0_}」 このようにプロンプトで直接、する必要があります
持っています PROMPT_SUBST オプションが有効になっています。
今すぐ電話してください vcs_info_printsys コマンドラインからのユーティリティ:
% vcs_info_printsys
## リスト of 。 バージョン コントロール バックエンド:
## 無効 システム 接頭辞付き by a ハッシュ 符号 (#)
bzr
cdv
CVS
ダークス
化石
git
hg
mtn
p4
svk
SVN
tla
## フレーバー (できません be 中古 in enable or disable スタイル; 彼ら
## 使用可能 無効 アプリ環境に合わせて マスター [git-svn] -> ギット])
## 彼ら *できる* be 中古 in コンテキスト: ':vcs_info:git-svn:*'.
git-p4
git-svn
hg-git
hg-hgsubversion
hg-hgsvn
コードを実行して検出する意味がないため、これらすべてを必要としない場合があります。
使用しないシステム。 そのため、一部のバックエンドを完全に無効にする方法があります:
ズスタイル ':vcs_info:*' disable bzr cdv ダークス mtn svk tla
そのリストからいくつかを選択して、それらのみを有効にすることもできます。
ズスタイル ':vcs_info:*' enable git CVS SVN
再放送したら vcs_info_printsys これらのコマンドのいずれかの後に、バックエンドが表示されます
に記載されている disable スタイル(またはスタイルにないバックエンド enable スタイル - それを使用した場合)
ハッシュ記号で無効としてマークされています。 つまり、これらのシステムの検出はスキップされます
完全に. そこに無駄な時間はありません。
当学校区の vcs_info 機能は次の方法で構成できます ズスタイル.
まず、私たちが取り組んでいる状況:
:vcs_info:vcs-string:ユーザーコンテキスト:リポジトリルート名
vcs-string
の一つであります: git, git-svn, git-p4, hg, hg-git, hg-hgsubversion, hg-hgsvn, ダークス, bzr,
cdv, mtn, SVN, CVS, svk, tla, p4 or 化石. フックがアクティブな場合、フック名は
`+' の後に追加されます。 (見る フック in vcs_info 以下。)
ユーザーコンテキスト
自由に設定可能な文字列で、ユーザーが最初の引数として割り当て可能です
vcs_info (以下の説明を参照してください)。
リポジトリルート名
スタイルを一致させたいリポジトリの名前です。 したがって、必要な場合は
固有の設定 /usr/src/zsh、それがCVSチェックアウトであるため、設定できます
リポジトリルート名 〜へ zsh そうするために。
には XNUMX つの特別な値があります。 vcs-string: 最初の名前は -初期化-、それは
どの VCS バックエンドを使用するかが決定されていない限り、影響はありません。 XNUMXつ目は -プレニット-;
それは使用されます vcs_info 変数をエクスポートするデータを初期化するときに実行されます。 の
XNUMX番目の特別な値は フォーマット によって使用されます。 vcs_info_lastmsg それを調べるために
スタイル
の初期値 リポジトリルート名 is -全て- そして、それは実際の名前に置き換えられます。
知られ次第。 コンテキストのこの部分のみを使用して、 フォーマット,
アクションフォーマット or ブランチ形式 スタイル、それが保証されているので リポジトリルート名 設定されています
これらの場合のみ正しく。 他のすべてのスタイルについては、単に使用してください 「*」 を代わりにお使いください。
には XNUMX つの定義済みの値があります。 ユーザーコンテキスト:
デフォルト
何も指定されていない場合に使用されるもの
command
スタイルを検索するために vcs_info_lastmsg によって使用されます
もちろん使えます ':vcs_info:*' すべてのユーザー コンテキストのすべての VCS を一度に照合します。
これは、検索されるすべてのスタイルの説明です。
フォーマット
actionformats が使用されていない場合 (ほとんどの場合) に使用される形式のリスト。
アクションフォーマット
現在の環境で特別なアクションが行われている場合に使用されるフォーマットのリスト
リポジトリ; インタラクティブなリベースやマージの競合など。
ブランチ形式
一部のバックエンドは置き換えられます %b だけでなく、上記の format および actionformats スタイルで
ブランチ名だけでなく、リビジョン番号でも。 このスタイルでは、その方法を変更できます
文字列が見えるはずです。
nvcsフォーマット
これらの「フォーマット」は、バージョン管理システムが検出されなかったときに設定されます。
現在のディレクトリまたは vcs_info 無効にされました。 これは、必要な場合に便利です vcs_info 〜へ
プロンプトの生成を完全に引き継ぎます。 あなたは次のようなことをします
PS1='${vcs_info_msg_0_}' それを達成するために。
hgrevフォーマット
hg ハッシュとリビジョン番号の両方を使用して、特定の変更セットを参照します
リポジトリ。 このスタイルを使用すると、リビジョン文字列をフォーマットできます (を参照してください)。 ブランチ形式)
どちらかまたは両方を含めます。 次の場合にのみ役立ちます。 取得リビジョン 本当です。 注、
完全な 40 文字のリビジョン ID は使用できません ( 使いやすい
オプション) プロンプトごとに hg を複数回実行すると遅すぎるためです。 してもいいです
フックを使用してこの動作をカスタマイズします。
最大輸出
の最大数を定義します vcs_info_msg_*_ variables vcs_info 設定します。
enable 使用したいバックエンドのリスト。 チェックイン -初期化- 環境。 このリストなら
と呼ばれるアイテムが含まれています。 NONEを バックエンドはまったく使用されず、 vcs_info しましょう
なし。 このリストに含まれる場合 全て, vcs_info すべての既知のバックエンドを使用します。 のみ
全て in enable なります disable スタイルは効果があります。 全て NONEを ケースです
鈍感。
disable
不要な VCS のリスト vcs_info リポジトリをテストします (
-初期化- コンテキストも)。 場合にのみ使用 enable 含まれています 全て.
無効化パターン
チェックされるパターンのリスト $障害者. パターンが一致した場合、 vcs_info
無効になります。 このスタイルは :vcs_info:-init-:*:-all- コンテキスト。
言って、 ~/.zsh バージョン管理下のディレクトリであり、そこには入れたくない vcs_info
アクティブにするには、次のことを行います。
ズスタイル ':vcs_info:*' 無効化パターン 「$HOME/.zsh(|/*)」
使用キルト
有効にすると、 キルト サポート コードは「アドオン」モードで有効です。 見る キルト サポート
より詳細をご確認いただけます。
キルトスタンドアローン
有効にすると、特定のネットワークでアクティブな VCS がない場合に「スタンドアロン」モードの検出が試行されます。
ディレクトリ。 見る キルト サポート より詳細をご確認いただけます。
キルトパッチディレクトリ
の値を上書きします。 $QUILT_PATCHES 環境変数。 見る キルト サポート
より詳細をご確認いただけます。
キルトコマンド
日時 キルト それ自体がキルト サポートで呼び出されます。このスタイルの値は、
コマンド名。
変更の確認
このスタイルを有効にすると、 %c %u 作業時に表示するフォーマットエスケープ
ディレクトリにはコミットされていない変更があります。 これらのエスケープによって表示される文字列は、
経由で制御されます 段階的な unstagedstr スタイル。 唯一のバックエンド
現在このオプションをサポートしているのは git, hg, bzr (後者の XNUMX つはサポートのみ
ステージなし)。
このスタイルを評価するには、 hg バックエンド、 取得リビジョン スタイルに必要なもの
設定され、 使いやすい スタイルを設定解除する必要があります。 後者がデフォルトです。 の
前者ではありません。
bzr バックエンド、 軽量 チェックアウト 次の場合にのみ、このスタイルを尊重します。 使用サーバー
スタイルが設定されます。
このスタイルが有効になっている場合に実行されるアクションは、コストがかかる可能性があることに注意してください (以下を参照してください:
現在のリポジトリの大きさによっては、遅くなる場合があります)。 したがって、
デフォルトでは無効になっています。
段階的変更のチェック
このスタイルはまるで 変更の確認、ただし、ワークツリー ファイルはチェックしません。
のメタデータ .${VC} dir。 したがって、このスタイルは %c
エスケープ( 段階的な) しかし、 %u エスケープ。 このスタイルはより高速です
変更の確認.
git バックエンドでは、このスタイルはインデックスの変更をチェックします。 他のバックエンドは
現在、このスタイルを実装していません。
このスタイルはデフォルトで無効になっています。
段階的な
この文字列は、 %c ステージングされた変更がある場合はエスケープします
リポジトリ。
unstagedstr
この文字列は、 %u ステージングされていない変更がある場合はエスケープします
リポジトリ。
command
このスタイルが原因 vcs_info 指定された文字列をコマンドとして使用して、
VCS のバイナリ。 これを ' に設定することに注意してください:vcs_info:*」は良い考えではありません。
このスタイルの値が空の場合 (デフォルト)、使用されるバイナリ名は
使用中のバックエンドの名前 (例: SVN で使用されます SVN リポジトリ)。
当学校区の リポジトリルート名 コンテキスト内の部分は常にデフォルトです -全て- このスタイルのとき
見上げられます。
たとえば、このスタイルを使用して、デフォルト以外のインストールのバイナリを使用できます
ディレクトリ。 推定、 git にインストールされています / usr / bin しかし、あなたのシステム管理者は
/usr/local/bin の新しいバージョン。 あなたの順序を変更する代わりに $ PATH
パラメータを使用すると、次のようにすることができます。
ズスタイル ':vcs_info:git:*:-all-' command /usr/local/bin/git
使用サーバー
これは Perforce バックエンド (p4) に連絡する必要があるかどうかを決定します。
ディレクトリがPerforceによって管理されているかどうかを確認するには、Perforceサーバーを使用します。 これは
これを行う唯一の信頼できる方法ですが、サーバー名が
見つからない。 サーバー (より具体的には、 ホスト:ポート ペアの説明
サーバー) に接続できません。その名前は連想配列に入れられます
vcs_info_p4_dead_servers セッション中は、
手で取り除いた。 このスタイルを設定しない場合、 p4 バックエンドは次の場合にのみ使用できます
環境変数を設定しました P4CONFIG ファイル名に
各 Perforce クライアントのルート ディレクトリにある対応するファイル。 コメントを見る
関数内 VCS_INFO_detect_p4 をご参照下さい。
Bazaar バックエンド (bzr) はこれを使用して、サーバーへの接続を許可します
軽量チェックアウトについては、 変更の確認 スタイル。
使いやすい
情報を収集する方法が XNUMX つある場合は、
このスタイルを true に設定すると、よりシンプルになります。 デフォルトでは、
それほど単純ではないコード。これは潜在的にはるかに遅くなる可能性がありますが、より正確になる可能性があります
考えられるすべての場合。 このスタイルは、 bzr hg バックエンド。 その場合
of hg 外部の hexdump プログラムを呼び出して、バイナリの dirstate を解析します
キャッシュファイル; このメソッドはローカル リビジョン番号を返しません。
取得リビジョン
true に設定されている場合、vcs_info はさらに一歩進んで、
リポジトリの作業ツリー (現在は git hg この種のバックエンド
情報は必ずしも重要ではありません)。 為に git、現在チェックされているのハッシュ値
out commit は、 %i 拡張。 と hg、ローカル リビジョン番号
対応するグローバル ハッシュは、 %i.
取得 mq true に設定すると、 hg バックエンドは Mercurial Queue (mq) パッチ
ディレクトリ。 情報は `%m' 置換。
ブックマークを取得
true に設定すると、 hg バックエンドは現在のブックマークのリストを取得しようとします。 彼ら
`経由で利用可能になります%m' 置換。
デフォルトでは、参照するすべてのブックマーク名のコンマ区切りリストを生成します。
現在チェックアウトされているリビジョンに。 ブックマークがアクティブな場合、その名前は
接尾辞としてアスタリスクを付け、リストの最初に配置しました。
プロンプトエスケープを使用
から組み立てられた文字列を想定するかどうかを決定します vcs_info プロンプトを含む
逃げる。 (によって使われた vcs_info_lastmsg.)
debug デバッグ出力を有効にして、考えられる問題を追跡します。 現在、このスタイルは
によって使用される vcs_infoのフックシステム。
フック フック関数名を定義するリスト スタイル。 見る フック in vcs_info 以下で
詳細。
パッチフォーマット
nopatch形式
このスタイルのペアは、 %m フォーマットで展開
およびアクションフォーマット git hg バックエンド。 値は特定の対象となります
%-以下に説明する拡張。
適用されない
このブーリアン スタイルは、バックエンドが次のリストを収集しようとするかどうかを制御します。
適用されていないパッチ (Mercurial Queue パッチなど)。
によって使用されます キルト hg バックエンド。
すべてのコンテキストでのこれらのスタイルのデフォルト値は次のとおりです。
フォーマット
" (%s)-[%b]%u%c-"
アクションフォーマット
" (%s)-[%b|%a]%u%c-"
ブランチ形式
"%b:%r" (bzr、svn、svk、および hg 用)
nvcsフォーマット
""
hgrevフォーマット
"%r:%h"
最大輸出
2
enable 全て
disable
(空のリスト)
無効化パターン
(空のリスト)
変更の確認
false
段階的変更のチェック
false
段階的な
(文字列: "S")
unstagedstr
(文字列: "U")
command
(空の文字列)
使用サーバー
false
使いやすい
false
取得リビジョン
false
取得 mq true
ブックマークを取得
false
プロンプトエスケープを使用
true
debug false
フック (空のリスト)
使用キルト
false
キルトスタンドアローン
false
キルトパッチディレクトリ
空 - 使用 $QUILT_PATCHES
キルトコマンド
キルト
パッチフォーマット
バックエンド 依存
nopatch形式
バックエンド 依存
適用されない
false
通常では フォーマット アクションフォーマット 次の置換が行われます。
%s 使用中の VCS (git、hg、svn など)。
%b 現在のブランチに関する情報。
%a アクションを説明する識別子。 でのみ意味があります アクションフォーマット.
%i 現在のリビジョン番号または識別子。 為に hg hgrevフォーマット スタイルを使用することができます
出力をカスタマイズします。
%c からの文字列 段階的な リポジトリに段階的な変更がある場合のスタイル。
%u からの文字列 unstagedstr ステージングされていない変更がある場合のスタイル
リポジトリ。
%R リポジトリのベース ディレクトリ。
%r リポジトリ名。 もしも %R is /foo/バー/レポXY, %r is レポXY.
%S リポジトリ内のサブディレクトリ。 もしも $障害者 is /foo/bar/repoXY/beer/おいしい, %S is
ビール/おいしい.
%m 「その他」の交換。 これが何であるかを決定するのは、バックエンドの裁量です。
置換は次のように展開されます。
当学校区の hg git バックエンドは、この expando を使用してパッチ情報を表示します。 hg ソース
からのパッチ情報 mq 拡張子; git リベース コマンドから
stgit 拡大。 の パッチフォーマット nopatch形式 スタイルは
生成された文字列。 前者は、パッチ キューからのパッチが少なくとも XNUMX つある場合に使用されます。
が適用され、それ以外の場合は後者が適用されます。
当学校区の hg バックエンドは、この expando にブックマーク情報を表示します (さらに mq
情報)。 を参照してください 取得 mq ブックマークを取得 スタイル。 これらのスタイルは両方とも
同時に有効にできます。 両方が有効になっている場合、結果の文字列は両方とも
セミコロンで区切って表示されます (現在はカスタマイズできません)。
In ブランチ形式 これらの置換が行われます:
%b 支店名です。
%r 現在のリビジョン番号または hgrevフォーマット のスタイル hg.
In hgrevフォーマット これらの置換が行われます:
%r 現在のローカル リビジョン番号。
%h 現在のグローバル リビジョン識別子。
In パッチフォーマット nopatch形式 これらの置換が行われます:
%p 一番上に適用されたパッチの名前 (適用文字列).
%u 未適用のパッチの数 (適用されていない文字列).
%n 適用されたパッチの数。
%c 未適用のパッチの数。
%a すべてのパッチの数。
%g アクティブの名前 mq ガード (hg バックエンド)。
%G アクティブの数 mq ガード (hg バックエンド)。
すべての VCS バックエンドがすべての置換をサポートする必要があるわけではありません。 為に nvcsフォーマット 代替品はありません
実行されたとしても、それは単なる文字列です。
不思議
使用したい場合 %b (ボールド オフ) での迅速な展開 フォーマット、展開します %b 自体、
つかいます %%b。 それは、 vcs_info 交換する拡張 %%b %b、そのため、zshの
迅速な拡張メカニズムがそれを処理できます。 同様に、伝承する %b from ブランチ形式,
つかいます %%%%b. ご不便をおかけしますが、簡単に回避することはできません。 幸いなことに、私たちはそうしています
多くの迅速な展開と衝突することはなく、これはそれらに対してのみ行う必要があります。
キルト サポート
キルト はバージョン管理システムではないため、バックエンドとして実装されていません。 これ
一連のパッチを追跡するのに役立ちます。 人々はそれを使用して一連の変更を保持します
ソフトウェアパッケージ(パッケージに緊密に統合されている)の上で使用したい
ビルド プロセス - Debian プロジェクトは多数のパッケージに対してこれを行います)。 キルト缶
また、個々の開発者が実際のバージョンに加えて独自のパッチを追跡するのにも役立ちます
制御システム。
当学校区の vcs_info 統合は、キルトを使用する両方の方法をサポートしようとします。
操作の異なるモード: 「アドオン」モードと「スタンドアロン」モード)。
「アドオン」モードをアクティブにするため vcs_info すでに実際のバージョンを検出している必要があります
ディレクトリを制御する制御システム。 その場合、保持しているディレクトリ
キルトのパッチを見つける必要があります。 そのディレクトリは `キルトパッチ'
環境変数。 その変数が存在する場合はその値が使用され、そうでない場合はその値が使用されます
`パッチ」と仮定します。 からの値 $QUILT_PATCHES を使用して上書きできます。
「キルトパッチ」 スタイル。 (注:使用できます vcs_info の値を保持する $QUILT_PATCHES
を介して常に修正します。 ポストキルト 針)。
問題のディレクトリが見つかると、quilt がアクティブであると見なされます。 もっと集めるには
情報、 vcs_info `.pc' というディレクトリを探します。 Quilt はそのディレクトリを使用して
現在の状態を追跡します。 このディレクトリが存在しない場合、キルトが完了していないことがわかります
作業ディレクトリに何かをコピーします (読み取り: パッチはまだ適用されていません)。
パッチが適用されている場合、 vcs_info どれかを見つけようとします。 どちらか知りたい方は
シリーズのパッチはまだ適用されていないため、アクティブ化する必要があります 適用されない スタイルで
適切なコンテキスト。
vcs_info 収集した情報の表示方法を非常に詳細に制御できます
(以下のセクションを参照してください。 スタイル フック in vcs_info)、これらはすべて以下に文書化されています。
特定のパッチの上で機能するパッチ追跡システムが他にも多数あることに注意してください。
バージョン管理システム(のような stgit の gitまたは mq の hg); システムの構成
そのようなものは、通常、 キルト サポート。
Status キルト サポートは「アドオン」モードで動作しており、生成された文字列は
単純なフォーマット置換 (%Q 正確には)、で使用できます フォーマット
アクションフォーマット; 詳しくは下記参照)。
一方、サポート コードが「スタンドアロン」モードで動作している場合は、 vcs_info 意志
ふりをする キルト は実際のバージョン管理システムでした。 つまり、バージョン
制御システムの識別子 (そうでなければ `svn' や `cvs' のようなもの) は
`に設定-キルト-'。 これは、この識別子が使用されているスタイル コンテキストに影響を与えます。
XNUMX 番目の要素。 vcs_info 「リポジトリ」の適切な値が入力されます
ルート ディレクトリとキルトの状態に関する情報を含む文字列は、
`misc' 置換として利用可能 (および %Q 「アドオン」モードとの互換性のため。
議論が残っているのは、「スタンドアロン」モードがどのように検出されるかです。 検出自体は、
ディレクトリの一連の検索。 この検出を常に有効にすることができます
バージョン管理されていないすべてのディレクトリ。 あなたが知っているなら
ご希望の限定ツリーセット vcs_info キルトインを探してみます
を呼び出すたびに検索の量を最小限に抑えるための「スタンドアロン」モード vcs_infoがある
それを行うためのいくつかの方法:
基本的に、「スタンドアロン」モードの検出は、と呼ばれるスタイルによって制御されます。
`キルトスタンドアローン'。 これは文字列スタイルであり、その値にはさまざまな効果があります。 の
最も単純な値は次のとおりです。常に' 毎回検出を実行するには vcs_info が実行され、`決して'から
検出を完全にオフにします。
の値が キルトスタンドアローン は別のものであり、解釈が異なります。 もし
value はスカラー変数の名前です その変数の値がチェックされ、
value は、上記と同じように「常に」/「決して」使用されません。
の値が キルトスタンドアローン が配列の場合、その配列の要素は次のように使用されます。
検出をアクティブにするディレクトリ名。
If キルトスタンドアローン は連想配列で、キーは以下のディレクトリ名として取得されます
検出をアクティブにしたいが、対応する値が
文字列 `true'.
最後になりましたが、次の値の場合 キルトスタンドアローン は関数の名前で、
関数は引数なしで呼び出され、戻り値によって検出が必要かどうかが決定されます。
活動する。 `0' の戻り値は真です。 ゼロ以外の戻り値は false として解釈されます。
という名前の関数と変数の両方がある場合、注意してください。 キルトスタンドアローン
機能が優先されます。
演算 説明 (公衆 API)
vcs_info [ユーザーコンテキスト]
すべてのバックエンドを実行し、すべてのデータを
${vcs_info_msg_*_}. これはあなたが呼び出したい関数です 事前コマンド したい場合は
プロンプトに最新情報を含めます (を参照してください)。 変数 説明 下)。
引数が与えられた場合、その文字列が代わりに使用されます デフォルト 会場は
ユーザーコンテキスト スタイル コンテキストのフィールド。
vcs_info_hookadd
多数の関数を特定のフックに静的に登録します。 フックはする必要があります
最初の引数として与えられます。 以下は、フック関数名のリストです
フックに登録します。 `+vi-' プレフィックスはここでは省略する必要があります。 見る フック in
vcs_info 詳細は以下をご覧ください。
vcs_info_hookdel
特定のフックからフック関数を削除します。 フックは最初に指定する必要があります
非オプション引数; 以下は、登録解除するフック関数名のリストです
フックから。 もし `-a' が最初の引数として使用され、 を の発生
関数は登録されていません。 それ以外の場合は、最後のオカレンスのみが削除されます (
関数がフックに複数回登録されました)。 `+vi-' プレフィックスが必要です
ここで取り残されました。 見る フック in vcs_info 詳細は以下をご覧ください。
vcs_info_lastmsg
最後の出力 ${vcs_info_msg_*_} 価値。 の値を考慮します。
プロンプトエスケープを使用 スタイルで ':vcs_info:formats:command:-all-'. こちらも印刷のみ
最大輸出 値。
vcs_info_printsys [ユーザーコンテキスト]
サポートされているすべてのバージョン管理システムのリストを出力します。 可能性を見つけるのに便利
コンテキスト (および有効になっているもの) または値 disable スタイル。
vcs_info_setsys
初期化 vcs_infoの使用可能なバックエンドの内部リスト。 この機能を使用すると、
シェルを再起動せずに新しい VCS のサポートを追加できます。
名前付きのすべての関数 VCS_INFO_* 内部使用専用です。
変数 詳細説明
${vcs_info_msg_N_} (末尾のアンダースコアに注意してください)
場所 N は整数です。たとえば、 vcs_info_msg_0_. これらの変数は、
最後の情報メッセージ vcs_info コールが集まりました。 これらは強く
に接続されている フォーマット, アクションフォーマット nvcsフォーマット 上記のスタイル。
これらのスタイルはリストです。 そのリストの最初のメンバーが展開されます
${vcs_info_msg_0_}、XNUMX番目に ${vcs_info_msg_1_} そしてN番目に
${vcs_info_msg_N-1_}。 (を参照してください 最大輸出 上記のスタイル)
名前が付けられたすべての変数 VCS_INFO_* 内部使用専用です。
フック in vcs_info
フックは vcs_info 独自のコードを実行できる場所。 そのコードは通信できます
それを呼び出したコードを使用して、システムの動作を変更します。
構成のために、フックはスタイル コンテキストを変更します。
:vcs_info:vcs-string+フック名:ユーザーコンテキスト:リポジトリルート名
関数をフックに登録するには、それらを フック のスタイル
適切なコンテキスト。
例:
ズスタイル ':vcs_info:*+foo:*' フック バー バズ
これにより、すべてのバックエンドのフック `foo' に関数が登録されます。 名前空間を避けるために
問題、登録されたすべての関数名の前に `+vi-'、実際の関数
`foo' フックで呼び出されるのは `+バイバー'と `+ヴィバズ'.
現在のコンテキストに関係なく関数をフックに登録したい場合は、
使用する可能性があります vcs_info_hookadd 関数。 そのように追加された関数を削除するには、
vcs_info_hookdel 機能を使用することができます。
何かがおかしいと思われる場合は、適切なコンテキストで「debug」ブール型スタイルを有効にすることができます
フック呼び出しコードは、実行しようとしたものと、関数が
質問が存在しました。
複数の関数をフックに登録すると、すべての関数が XNUMX つずつ実行されます。
XNUMX つの関数がゼロ以外を返すまで、またはすべての関数が呼び出されるまで、別の関数が呼び出されます。
状況依存のフック関数が実行される 静的に登録されたもの (もの
によって追加 vcs_info_hookadd).
連想配列を介して関数間でデータを渡すことができます。 ユーザーデータ 例えば:
+vi-git-myfirsthook(){
user_data[myval]=$myval
}
+vi-git-mysecondhook(){
# do 何か ${user_data[myval]}
}
フックコンテキストで特別な変数がいくつかあります:
RET フック システムが呼び出し元に返す戻り値。 デフォルトは
整数「ゼロ」。 変更された場合とその方法 RET 値は呼び出し元の実行を変更します
特定のフックに依存します。 詳細については、以下のフック ドキュメントを参照してください。
フックコム
呼び出し元からの双方向通信に使用される関連配列
関数をフックします。 使用されるキーは、特定のフックによって異なります。
コンテキスト
フックのアクティブなコンテキスト。 この変数を変更したい関数は
最初にローカルスコープにします。
vcs 検出後の現在の VCS。 enable/disable と同じ値
スタイルが使用されます。 を除くすべてのフックで利用可能 起動.
最後に、現在利用可能なフックの完全なリスト:
起動
開始後に呼び出される vcs_info ただし、このディレクトリの VCS が決定される前に。
非アクティブ化に使用できます vcs_info 必要に応じて一時的に。 いつ RET に設定されています
1, vcs_info アボートして何もしません。 に設定すると 2, vcs_info すべてを次のように設定します
バージョン管理が有効になっていない場合は終了します。
事前取得データ
と同じ 起動 ただし、VCS が検出された後。
gen-hg-ブックマーク文字列
ブックマーク文字列が生成されたときに Mercurial バックエンドで呼び出されます。 の
取得リビジョン ブックマークを取得 スタイルは true でなければなりません。
このフックは、Mercurial ブックマークの名前を取得します。 vcs_info から収集
「hg」。
ブックマークがアクティブな場合、キー ${hook_com[hg-active-bookmark]} に設定されています
名前。 それ以外の場合、キーは設定されていません。
設定時 RET ゼロ以外の文字列 ${hook_com[hg-ブックマーク文字列]} なります
で使用される %m 逃げる フォーマット アクションフォーマット で利用可能になります
全体的な バックエンドその他 配列として ${backend_misc[ブックマーク]}.
gen-apply-string
で呼び出された git (with stgit またはリベースまたはマージ中)、および hg (with mq) バックエンド
または キルト ときのサポート 適用文字列 生成されます。 の 使用キルト ズスタイル
について真でなければならない キルト ( mq stgit バックエンドはデフォルトでアクティブです)。
このフックは、適用されたすべてのパッチの名前を取得します。 vcs_info これまでに集めた
これは、最初の引数が最上位のパッチであり、
など。
設定時 RET ゼロ以外の文字列 ${hook_com[適用文字列]} なります
で使用される %m 逃げる フォーマット アクションフォーマット; で利用可能になります
全体的な バックエンドその他 配列として $backend_misc[パッチ]}; そしてそれはとして利用可能になります
%p 会場は パッチフォーマット nopatch形式 スタイル
gen-未適用文字列
で呼び出された git (with stgit またはリベース中)、および hg (with mq) バックエンドとイン
キルト ときのサポート 適用されていない文字列 生成されます。 の 適用されない スタイルが必要
本当だ。
このフックは、適用されていないすべてのパッチの名前を取得します。 vcs_info ここまで集めた
これは、最初の引数が行内の次のパッチであることを意味します
適用されるなど。
設定時 RET ゼロ以外の文字列 ${hook_com[未適用文字列]} なります
として利用可能 %u 会場は パッチフォーマット nopatch形式 スタイル
gen-mqguards-string
で呼び出された hg バックエンドの場合 ガードストリング 生成されます。 の 取得 mq スタイルは
true (デフォルト)。
このフックは、アクティブな名前を取得します mq 警備員。
設定時 RET ゼロ以外の文字列 ${hook_com[ガード文字列]} 使用されます
会場は %g で逃げる パッチフォーマット nopatch形式 スタイル
VCなし このフックは、バージョン管理システムが検出されなかったときに呼び出されます。
`フックコム' パラメータは使用されません。
ポストバックエンド
バックエンドが情報の収集を完了するとすぐに呼び出されます。
`フックコム' 利用可能なキーは セットメッセージ フック。
ポストキルト
の後に呼び出されます キルト サポートが行われます。 次の情報は次のように渡されます。
フックへの引数: 1. quilt-support モード (`addon' または `standalone'); 2.
パッチシリーズを含むディレクトリ。 3. キルトを保持するディレクトリ
ステータス情報 (`.pc' ディレクトリ) または文字列 「-nopc-」 そのディレクトリの場合
見つかりませんでした。
`hook_com' パラメータは使用されません。
セットブランチフォーマット
` の前に呼び出されるブランチ形式'が設定されています。 フックへの唯一の引数はフォーマットです
この時点で構成されています。
`フックコム' 考慮されるキーは `ブランチ'と `リビジョン'。 それらはに設定されています
によってこれまでに計算された値 vcs_info 変更は、次の場合に直接使用されます。
実際の交換が行われます。
If RET ゼロ以外に設定されている場合、文字列は ${hook_com[ブランチ-置換]} 使用されます
`として変更されていません%b' によって設定された変数の置換 vcs_info.
セット hgrev 形式
` の前に呼び出されるhgrevフォーマット'が設定されています。 フックへの唯一の引数はフォーマットです
この時点で構成されています。
`フックコム' 考慮されるキーは `ハッシュ'と `ローカルレブ'。 それらはに設定されています
によってこれまでに計算された値 vcs_info 変更は、次の場合に直接使用されます。
実際の交換が行われます。
If RET ゼロ以外に設定されている場合、文字列は ${hook_com[rev-replace]} 使用されます
`として変更されていません%i' によって設定された変数の置換 vcs_info.
プレアドオンキルト
このフックは次の場合に使用されます。 vcs_infoのキルト機能は「アドオン」モードでアクティブです
(実際のバージョン管理システムの上で使用されるキルト)。 直前に発動
キルト固有のアクションが実行されます。
` の設定RET' このフックの変数をゼロ以外の値にすると、キルトが回避されます
特定のアクションがまったく実行されないようにします。
セットパッチフォーマット
このフックは、可能な展開の一部を制御するために使用されます パッチフォーマット
nopatch形式 quilt、mqueue などのパッチ キュー システムを使用したスタイル。
このフックは、 git, hg キルト バックエンド。
フックにより、 %p (${hook_com[適用済み]})と %u
(${hook_com[未適用]}) フックを使用するすべてのバックエンドでの拡張。 とともに
水銀バックエンド、 %g (${hook_com[警備員]}) 拡張は制御可能
それに加えて。
If RET ゼロ以外に設定されている場合、文字列は ${hook_com[パッチ-置換]} 使用されます
からの拡張形式の代わりに変更されない パッチフォーマット or nopatch形式.
セットメッセージ
` の前に毎回呼び出されますvcs_info_msg_N_」というメッセージが設定されています。 XNUMX つかかります
引数。 最初は `N' メッセージ変数名に含まれている場合、XNUMX 番目は
現在設定されている フォーマット or アクションフォーマット.
`がいくつかありますフックコム' ここで使用されるキー: `アクション'、 `ブランチ',
`ベース'、 `ベース名'、 `サブディレクトリ'、 `ステージされた'、 `ステージングされていない'、 `リビジョン'、 `miscの'、 `vcs'と
XNUMXつの`その他' 各バックエンド固有のデータ フィールドのエントリ (N ゼロから始まります)。 彼らは
これまでに計算された値に設定されます。 vcs_info 変更はすべて使用されます
実際の交換が完了したときに直接。
このフックは複数回トリガーされるため (構成ごとに XNUMX 回) フォーマット or
アクションフォーマット)、それぞれの `フックコム' 上記のキー (除く) その他
エントリ) には ` が含まれています_orig' 対応するものなので、好みに応じて値を変更したとしても
次回の実行でも元の値を取得できます。 ` を変更する_orig' 値
おそらく良い考えではありません。
If RET ゼロ以外に設定されている場合、文字列は ${hook_com[メッセージ]} 使用されます
によるメッセージとしては変更されません vcs_info.
これらすべてがかなり混乱していると思われる場合は、次のセクションを参照してください。 例 以下のセクションおよび
会場は その他/vcs_info の例 Zsh ソース内のファイル。 これらには、いくつかの説明コードが含まれています。
例
使用しない vcs_info まったく(プロンプトにあるとしても):
ズスタイル ':vcs_info:*' enable NONEを
バックエンドを無効にする bzr svk:
ズスタイル ':vcs_info:*' disable bzr svk
すべてを無効にする 焙煎が極度に未発達や過発達のコーヒーにて、クロロゲン酸の味わいへの影響は強くなり、金属を思わせる味わいと乾いたマウスフィールを感じさせます。 bzr svk:
ズスタイル ':vcs_info:*' enable bzr svk
特別な形式を提供します git:
ズスタイル ':vcs_info:git:*' フォーマット ' ギット、 赤ちゃん! [%b]'
ズスタイル ':vcs_info:git:*' アクションフォーマット ' GIT アクション! [%b|%a]'
All %x あらゆる種類のフォーマットでの展開 (フォーマット, アクションフォーマット, ブランチ形式、 あなたの名前
それ) は ` を使用して行われますzフォーマット' からの組み込みzsh / zutil'モジュール。 つまり、できるのです
これらを使ってすべてを行う %x zformat がサポートする項目。 特に、ご希望の場合は、
Mercurial のハッシュのような、固定幅を持つには非常に長いもの
ブランチフォーマットでは、次のようにすることができます。 %12.12i。 これにより、40 文字のハッシュが 12 文字に縮小されます。
主要な登場人物たち。 形式は実際には `%分.マックスx'。 さらに多くのことが可能です。 セクションを参照してください
「zsh/zutil モジュール」 zshモジュール詳細は(1)。
早い方を使う bzr バックエンド
ズスタイル ':vcs_info:bzr:*' 使いやすい true
使用する場合 使いやすい、それが「正しいこと[tm]」をしている場合は報告してください。
リビジョン番号を黄色で表示します。 bzr SVN:
ズスタイル ':vcs_info:(svn|bzr):*' \
ブランチ形式 '%b%{'${fg[黄色]}'%}:%r'
色が必要な場合は、必ずカラーコードを囲んでください。 %{...%} 使用したい場合
によって提供される文字列 vcs_info プロンプトで。
VCS 情報をコマンドとして (プロンプトではなく) 出力する方法は次のとおりです。
alias vcsi='vcs_info 指図; vcs_info_lastmsg'
このようにして、次のように出力用に異なる形式を定義することもできます。 vcs_info_lastmsg 会場は
':vcs_info:*:コマンド:*'名前名。
さて、約束どおり、フックを使用するコードをいくつか紹介します。たとえば、文字列 `svn' を次のように置き換えたいとします。
「転覆」 vcs_info's %s フォーマット 交換。
まず最初にお伝えします vcs_info メッセージ変数に値を設定するときに関数を呼び出すには
収集された情報:
ズスタイル ':vcs_info:*+set-message:*' フック svn2subversion
何も起こりません。 実際の関数をまだ定義していないので、これは当然のことです。 に
フック サブシステムが何をしようとしているのかを確認し、` を有効にします。debug' スタイル:
ズスタイル ':vcs_info:*+*:*' debug true
これにより、何が起こっているのかがわかるはずです。 具体的に言うと、私たちが行っている機能は、
探しているのは `+vi-svn2subversion'。 ` に注意してください。+vi-' プレフィックス。 それで、すべてが順調に進んでいます、
文書どおりです。 デバッグ出力のチェックアウトが完了したら、再度無効にします。
ズスタイル ':vcs_info:*+*:*' debug false
次に、関数を定義しましょう。
function +vi-svn2subversion() {
[[ ${hook_com[vcs_orig]} == SVN ]] && フック_com[vcs]=サブバージョン
}
十分シンプルです。 関数を登録しておけば、さらに簡単になったかもしれません。
あまり一般的ではない文脈で。 `内だけでやるとSVN' バックエンドのコンテキストは必要ありません
アクティブなバックエンドがどれであるかをテストするには、次のようにします。
ズスタイル ':vcs_info:svn+set-message:*' フック svn2subversion
function +vi-svn2subversion() {
フック_com[vcs]=サブバージョン
}
最後に、フックを使用してカスタマイズされた
のブックマーク文字列 hg バックエンド。
繰り返しますが、関数を登録することから始めます。
ズスタイル ':vcs_info:hg+gen-hg-ブックマーク文字列:*' フック hgブックマーク
そして ` を定義します+vi-hgブックマーク 関数:
function +vi-hgbookmarks() {
# 当学校区の デフォルト is 〜へ 接続する を ブックマーク 名 by
# カンマ。 この ミックス 物事 up a 少し。
# 想像してみてください あります XNUMXつ type of ブックマーク それ is
# 特別 〜へ あなた。 言って、 なぜなら それはだ *あなたの* 作業。
# それらの ブックマーク 見ます 常に ような この: 「し/*」
# (なぜなら イニシャル NS、 の 例)。
# この MAKES ブックマーク string つかいます の それらの
# ブックマーク。 If あります よ より 1、 it
# 連結する それら カンマ。
# 当学校区の ブックマーク すべての本を返却しているか確認してください。 by 「ふーん」 利用できます in
# 関数 ポジショナル パラメーター。
ローカル s="${(Mj:,:)@:#sh/*}"
# 今、 コミュニケーション コード それ 呼び出し
# フック 機能 is 行われ 、 フック_コム[]
# ハッシュ。 当学校区の キー at which `gen-hg-ブックマーク文字列'
# フック ルックス is `hg-ブックマーク文字列'。 そう:
フック_com[hg-ブックマーク文字列]=$s
# 〜へ 信号 それ we 欲しいです 〜へ つかいます string we
# ただ 生成され、 セッションに 特別 変数 「レット」 〜へ
# 何か その他 より デフォルト ゼロ:
ret=1
return 0
}
役立つ可能性のあるいくつかの長い例とコード スニペットが例に含まれています。
ファイルは、Zsh ソース ディレクトリの Misc/vcs_info-examples にあります。
これで、zsh のガイド付きツアーは終了です vcs_info.
PROMPT THEMES
インストール
からのすべての機能を確認する必要があります。 機能/プロンプト ソースのディレクトリ
配布が可能です。 それらはすべて文字列 ` で始まりますプロンプト_'を除いて
特別な機能`プロンプト初期化'。 `も必要です色' からの関数 機能・その他.
これらの機能はすべて、システムにすでにインストールされている可能性があります。 そうでない場合は、そうします
それらを見つけてコピーする必要があります。 ディレクトリは、次の要素の XNUMX つとして表示されます。
fpath 配列 (インストールされている場合はすでにそうなっているはずです)、および少なくとも
function プロンプト初期化 自動ロードされる必要があります。 残りは自動ロードされます。 最後に、
システムの使用を初期化するには、 プロンプト初期化 関数。 次の
あなたのコード .zshrc これを手配します。 関数が
ディレクトリにジョブを開始します。 ~/myfns:
fpath=(~/myfns $fpath)
オートロード -U プロンプト初期化
プロンプト初期化
テーマ 選択
プロンプト コマンドを使用して、好みのテーマを選択します。 このコマンドは、
.zshrc への電話の後 プロンプト初期化 すでにテーマを指定して zsh を起動するには
選択された。
プロンプト [ -c | -l ]
プロンプト [ -p | -h ] [ テーマ ...]
プロンプト [ -s ] テーマ [ argは ...]
プロンプトのテーマを設定または検討します。 オプションなしで、 テーマ 議論、テーマ
その名前のものが現在のテーマとして設定されます。 利用可能なテーマは次の場所で決定されます。
実行時間。 使用 -l リストを表示するオプション。 特別な テーマ `ランダム' で選択します
利用可能なテーマの XNUMX つをランダムに選択し、プロンプトをそれに設定します。
場合によっては テーマ XNUMX つ以上の引数で変更できます。
テーマ名の後に付けられます。 これらの説明については、各テーマのヘルプを参照してください。
引数
オプションは次のとおりです。
-c 現在選択されているテーマとそのパラメータ (存在する場合) を表示します。
-l 使用可能なすべてのプロンプト テーマをリストします。
-p という名前のテーマをプレビューします テーマ、ない場合はすべてのテーマ テーマ 与えられます。
-h という名前のテーマのヘルプを表示します テーマ、または プロンプト いいえの場合は機能します
テーマ 与えられます。
-s 作成セッションプロセスで テーマ 現在のテーマとして選択し、状態を保存します。
プロンプト_テーマ_設定
それぞれ利用可能 テーマ によって呼び出されるセットアップ関数があります。 プロンプト 機能する
そのテーマをインストールします。 この関数は、必要に応じて他の関数を定義する場合があります。
プロンプトをプレビューしたりヘルプを提供したりするために使用される機能を含む、プロンプトを維持する
その使用のために。 通常、テーマのセットアップ関数を直接呼び出すべきではありません。
ひどく 関数
ウィジェット
これらの関数はすべて、ユーザー定義の ZLE ウィジェットを実装します (「 ズシュル(1))バインド可能
インタラクティブ シェルのキーストロークに適用されます。 それらを使用するには、 .zshrc の行が含まれている必要があります
フォーム
オートロード function
ズレ -N function
続いて適切な バインドキー 機能をキー シーケンスに関連付けるコマンド。
推奨されるバインディングについては以下で説明します。
bash スタイルの Word 関数
単語の移動や編集を実装する機能をお探しの場合は、
bash の方法では、英数字のみが単語文字とみなされます。
次のセクションで説明する機能を使用できます。 以下は
十分な:
オートロード -U ワードスタイルの選択
ワードスタイルの選択 bash
前方単語一致, 後方単語一致
キルワードマッチ, 逆方向キルワードマッチ
単語の転置一致, 大文字化-単語一致
大文字と単語の一致, 大文字小文字の単語一致
ワードスタイルの選択, 単語のコンテキストの一致, スタイルごとに単語を一致させる
XNUMX `-一致' 関数は組み込みウィジェットのドロップイン置換です
接尾語なしで。 デフォルトでは、これらは同様に動作します。 ただし、用途によっては
スタイルと機能の ワードスタイルの選択、単語を一致させる方法は次のとおりです。
変更されました。
関数を設定する最も簡単な方法は、次のとおりです。 ワードスタイルの選択、その
適切な引数を指定して通常の関数として呼び出すことも、呼び出すこともできます。
単語スタイルの最初の文字の入力を求めるユーザー定義ウィジェットとして
使用されること。 初めて呼び出されるとき、XNUMX -一致 関数は
組み込みバージョンを自動的に置き換えるので、ロードする必要はありません
明示的に
利用できるワードスタイルは以下の通りです。 最初の文字のみが検査されます。
bash Word の文字は英数字のみです。
通常の 通常のシェル操作と同様: 単語文字は英数字です。
パラメータで指定された文字列に存在する任意の文字を加えたもの $WORDCHARS.
shell 単語は完全なシェル コマンド引数であり、完全なものも含まれる可能性があります。
引用符で囲まれた文字列、またはシェルに特別なトークン。
空白
単語とは、空白で区切られた任意の文字のセットです。
デフォルト
デフォルト設定を復元します。 これは通常 ` と同じです通常の'.
「」以外のすべてデフォルト' は大文字として入力できます。
効果はありますが、サブワード マッチングがオンになっています。 この場合、大文字を含む単語は、
文字は特別に扱われます。大文字の連続、または
大文字の後に他の任意の数の文字が続くと、
言葉。 スタイル サブワード範囲 代替の文字範囲を指定できます。
デフォルトの `[:アッパー:]'; スタイルの値は ` の内容として扱われます。[...]'
パターン (外側の括弧は指定しないでください。
周囲の名前付き範囲)。
を使用すると、より詳細な制御が可能になります。 ズスタイル で説明されているコマンド
zshモジュール(1)。 各スタイルはコンテキスト内で検索されます :zle:ウィジェット コラボレー ウィジェット is
ユーザー定義のウィジェットの名前。それを実装する関数の名前ではありません。
したがって、によって提供される定義の場合、 ワードスタイルの選択 適切な
コンテキストは :zle:前方ワード、 等々。 関数 ワードスタイルの選択 自体
常にコンテキストのスタイルを定義します `:zle:*' これはさらに上書きできます
特定の(長い)パターンと明示的なコンテキスト。
スタイル ワードスタイル 使用するルールを指定します。 これには次のようなものがある可能性があります
値。
通常の 標準のシェル規則、つまり英数字と $WORDCHARSを除いて、
スタイルによってオーバーライドされる 単語文字 or 単語クラス.
指定の
そして 通常の、 だけど の 指定された文字だけでなく、
英数字は単語文字とみなされます。
不特定
指定されたものの否定。 指定された文字は、 be
単語の一部とみなされます。
shell 単語は、シェルコマンドを生成するための構文規則を使用して取得されます。
引数。 さらに、コマンド引数ではない特別なトークン
など()」も単語として扱われます。
空白
単語は空白で区切られた文字列です。
これらのルールの最初の XNUMX つは通常、 $WORDCHARS、ただし、
パラメータはスタイルによってオーバーライドできます 単語文字、正確に動作します
と同じように $WORDCHARS。 さらに、スタイルは、 単語クラス 文字クラスを使用します
文字をグループ化するための構文が優先されます。 単語文字 両方が設定されている場合。
当学校区の 単語クラス スタイルには文字の周囲の大括弧は含まれません
クラス; たとえば、「-:[:アルバム:]' は有効です 単語クラス すべてを含める
英数字と文字 `-'と `:'。 `を含むので注意してください]'、 `^'と
`-' これらは特殊な内部文字クラスであるためです。
ワードスタイル ` も含まれる場合があります-サブワード' を値に追加してサブワードをオンにします
上で説明したように、一致します。
スタイル スキップ文字 主に次の用途に役立ちます 転置-単語 および同様の機能。
設定すると、カーソル位置から始まる文字数が表示されます。
単語の一部とみなされず、何に関係なくスペースとして扱われます。
実際にそうです。 たとえば、次の場合
ズスタイル ':zle:transpose-words' スキップ文字 1
が設定されており、 単語の転置一致 カーソルを置いて呼び出されます X of
fooXバーここで、 X 任意の文字を指定できる場合、結果の式は次のようになります。 バーXfoo.
スタイルを設定することで、より細かい制御が可能になります 単語のコンテキスト 配列に
エントリのペア。 エントリの各ペアは、 パターン フォルダーとその下に サブコンテキスト.
カーソルが置かれているシェル引数は、それぞれに対して照合されます。 パターン 順番に
XNUMX つは一致します。 存在する場合、コンテキストはコロンと対応する文字列によって拡張されます。
サブコンテキスト。 テストは行上の元の単語に対して行われることに注意してください。
引用符の削除はありません。 単語間で特別な処理が行われます: 現在の
コンテキストが調べられ、文字列が含まれているかどうかが確認されます。 バック、カーソルの前の単語
が考慮され、そうでない場合はカーソルの後の単語が考慮されます。 いくつかの例が示されています
を参照してください。
スタイル スキップ-空白-最初 でのみ使用されます 前向きな言葉 ウィジェット。 それであれば
が true に設定されている場合、 前向きな言葉 単語以外の文字をスキップし、その後に続く文字をスキップします。
非単語文字: これは他の単語指向の動作と似ています。
ウィジェット、および他のエディタで使用されるウィジェットも含まれますが、標準とは異なります。
zsh の動作。 使用するとき ワードスタイルの選択 ウィジェットはコンテキスト内に設定されます
:zle:* 〜へ true ワードスタイルが次の場合 bash false さもないと。 上書きされる可能性があります
より具体的なコンテキストで設定することで :zle:前方ワード*.
実際に簡略化されたスタイルから引用したスタイルの使用例をいくつか示します。
インターフェース ワードスタイルの選択:
ズスタイル 「:zle:*」 ワードスタイル 標準
ズスタイル 「:zle:*」 単語文字 ''
すべてのウィジェットに対して bash スタイルの単語処理を実装します。つまり、英数字のみが使用可能です。
単語の文字。 パラメータの設定と同等 ワードチャーズ 与えられたものに対して空である
コンテキスト。
':zle:*kill*' ワードスタイル スペース
名前に「kill」という単語が含まれるウィジェットには、スペースで区切られた単語を使用します。 ない
スタイルの 単語文字 また 単語クラス この場合に使用されます。
以下にいくつかの使用例を示します。 単語のコンテキスト コンテキストを拡張するスタイル。
ズスタイル 「:zle:*」 単語のコンテキスト \
「*/*」 file "[[:空間:]]" 空白
ズスタイル ':zle:transpose-words:whitespace' ワードスタイル shell
ズスタイル ':zle:transpose-words:ファイル名' ワードスタイル 通常の
ズスタイル ':zle:transpose-words:ファイル名' 単語文字 ''
これにより、XNUMX つの異なる使用方法が提供されます 転置-単語 かどうかに応じて、
カーソルは単語間の空白、またはファイル名上にあります。ここでは、
/。 空白では、標準シェル規則で定義されている完全な引数は次のようになります。
転置された。 ファイル名では、英数字のみが置き換えられます。 他の場所では、
単語はデフォルトのスタイルを使用して転置されます。 :zle:単語の転置.
単語のマッチングとすべての処理 ズスタイル 設定が実際に実装される
関数によって スタイルごとに単語を一致させる。 これを使用して、新しいユーザー定義を作成できます。
ウィジェット。 呼び出し関数はローカルパラメータを設定する必要があります 現在のコンテキスト 〜へ
:zle:ウィジェット、ローカルパラメータを作成します 一致した単語 呼び出し スタイルごとに単語を一致させる
引数なしで。 帰りには、 一致した単語 で配列に設定されます
要素: (1) 行の先頭 (2) カーソルの前の単語 (3) 単語以外
その単語とカーソルの間の文字 (4) 単語以外の文字
カーソル位置と次の単語の前の残りの非単語文字、
で指定されたすべての文字を含む スキップ文字 スタイル、(5) またはでの単語
カーソルに続く (6) その単語に続く非単語文字 (7)
行の残りの部分。 どの要素も空の文字列にすることができます。 呼びだし
関数はこれをテストして、その機能を実行できるかどうかを判断する必要があります。
引数付きのオプションを渡すことができます スタイルごとに単語を一致させる オーバーライドする
スタイルの使用。 オプションは次のとおりです。
-w ワードスタイル
-s スキップ文字
-c 単語クラス
-C 単語文字
-r サブワード範囲
たとえば、 スタイルごとに単語を一致させる -w shell -c 0 コマンドを抽出するために使用される可能性があります
カーソルの周りの引数。
当学校区の 単語のコンテキスト スタイルは関数によって実装されます 単語のコンテキストの一致。 この
通常は直接呼び出す必要はありません。
前の単語をコピーする
このウィジェットは次の組み合わせのように機能します。 挿入-最後の単語 コピー前シェルワード.
ウィジェットを繰り返し呼び出すと、関連する履歴の以前の単語が取得されます。
ライン。 数値引数を使用する場合 N、挿入します N履歴行の 番目の単語。 N かもしれません
行の終わりから数えると負の値になります。
If 挿入-最後の単語 以前の履歴の最後の単語を取得するために使用されました
行を繰り返すと、その単語が同じ前の単語に置き換えられます。
ライン。
それ以外の場合、ウィジェットは現在編集中の行上の単語に適用されます。 の
ウィジェット style には、呼び出す必要がある別のウィジェットの名前を設定できます。
単語を検索します。 このウィジェットは、次と同じ XNUMX つの引数を受け入れる必要があります。
挿入-最後の単語.
サイクル完了位置
コマンドラインに明確な文字列を挿入すると、新しい関数ベースの
補完システムは、この文字列内の文字が配置されている複数の場所を認識している可能性があります。
が欠落しているか、一致する可能性のある項目の少なくとも XNUMX つと異なります。 そうすれば、
最も興味深いと思われる位置にカーソルを置きます。つまり、
可能な限り多くの一致の間で曖昧さを解消できるもの
できるだけタイピングを少なくします。
このウィジェットを使用すると、カーソルを他の興味深いスポットに簡単に移動できます。
繰り返し呼び出して、
完了システム。
単語全体の一致を削除
これは次のように機能する別の関数です。 -一致 機能の説明
直前に、つまりスタイルを使用して単語の境界を決定します。 ただし、それは
既存の機能を置き換えるものではありません。
基本的な動作は、カーソルの周囲の単語を削除することです。 数値はありません
引数の処理; カーソルの周囲の XNUMX つの単語のみが考慮されます。 もし
ウィジェットには文字列が含まれています kill、削除されたテキストはカットバッファに配置されます
将来の引っ張りのために。 これは次のように定義することで取得できます。 単語全体の一致を削除する as
以下:
ズレ -N 単語全体の一致を削除する 単語全体の一致を削除
そしてウィジェットをバインドします 単語全体の一致を削除する.
上行または先頭検索, 下位検索または先頭検索
これらのウィジェットは組み込み関数に似ています アップラインまたは検索
ダウンラインまたは検索: 複数行のバッファ内の場合、バッファ内で上下に移動します。
それ以外の場合は、現在の行の先頭に一致する履歴行を検索します。
ライン。 ただし、この場合は、現在の行と一致する行を検索します。
現在のカーソル位置まで、次の方法で
履歴の先頭から検索の後方へ -前方の最初の単語ではなく、
ライン。
編集コマンドライン
次のように、ビジュアル エディタを使用してコマンド ラインを編集します。 kshの.
バインドキー -M vicmd v 編集コマンドライン
展開絶対パス
カーソル下のファイル名を絶対パスに展開し、記号を解決します。
リンク。 可能な場合、最初のパス セグメントは名前付きディレクトリに変換されます。
またはユーザーのホームディレクトリへの参照。
履歴検索終了
この関数はウィジェットを実装します 履歴開始検索後方終了
履歴の開始-検索-前方-終了。 これらのコマンドは、最初に
対応する組み込みウィジェット (「履歴コントロール」を参照) ズシュル(1)) そして移動
カーソルを行末に移動します。 元のカーソル位置は記憶されており、
組み込みウィジェットを再度呼び出す前に復元されるため、同じ検索が行われます。
歴史をさらに詳しく見るために繰り返されます。
あなたが オートロード 機能は XNUMX つだけですが、それを使用するためのコマンドは少し複雑です
XNUMX つのウィジェットを実装しているため異なります。
ズレ -N 履歴開始検索後方終了 \
履歴検索終了
ズレ -N 履歴の開始-検索-前方-終了 \
履歴検索終了
バインドキー '\e^P' 履歴開始検索後方終了
バインドキー '\e^N' 履歴の開始-検索-前方-終了
歴史の始まり検索メニュー
この関数は、さらに別の形式の履歴検索を実装します。 前のテキスト
カーソルは履歴から行を選択するために使用されます。
履歴の先頭から検索の後方へ ただし、すべての一致は番号付きで表示されます。
メニュー。 適切な数字を入力すると、完全な履歴行が挿入されます。 ご了承ください
先頭のゼロを入力する必要があります (削除するために必要な場合にのみ表示されます)
曖昧さ)。 履歴全体が検索されます。 の間に区別はありません
前方と後方。
数値引数を使用すると、検索は行の先頭に固定されません。 の
ユーザーが入力した文字列は、履歴の行のどこにでも現れる可能性があります。
ウィジェット名に`が含まれる場合-終了' カーソルが行末に移動します
挿入されました。 ウィジェット名に`が含まれる場合-スペース' 入力されたテキスト内のスペースは
ワイルドカードとして扱われ、何でも一致します (したがって、先頭のスペースは同等です)
数値引数を与えることまで)。 両方の形式を組み合わせることができます。たとえば、次のようになります。
ズレ -N 歴史の始まり-検索メニュー-スペース-終わり \
歴史の始まり検索メニュー
履歴パターン検索
関数 履歴パターン検索 パターンの入力を求めるウィジェットを実装します
履歴を前後に検索します。 パターンは
通常の zsh 形式ですが、最初の文字は ^ 検索をアンカーする
行の先頭、最後の文字は $ 検索を最後まで固定するには
ラインの。 検索が行末にアンカーされていない場合、カーソルは
パターンが見つかった直後に配置されます。
バインド可能なウィジェットを作成するコマンドは、例のコマンドと似ています。
すぐ上:
オートロード -U 履歴パターン検索
ズレ -N 履歴パターン検索逆方向 履歴パターン検索
ズレ -N 履歴パターン検索前方 履歴パターン検索
インカルグ カーソルをウィジェットの上または左に置いて、このウィジェットのキーストロークを入力します。
整数を指定すると、その整数が XNUMX ずつ増加します。 数値引数を使用すると、
数値は引数の量だけ増分されます (数値の場合は減分されます)。
引数が否定的です)。 シェルパラメータ インカルグ デフォルトを変更するように設定される場合があります
XNUMX 以外の値に増加します。
バインドキー '^X+' インカルグ
インクリメンタルコンプリートワード
これにより、単語を段階的に補完できます。 このコマンドを開始すると、リストが表示されます。
文字を入力するたびに補完の選択肢が表示されます。
で削除 ^H or THE。 return を押すと、これまでの完了を受け入れて戻ります。
通常の編集を行うことができます (つまり、コマンドラインは すぐに実行されます)。 あなた
ヒットすることができます TAB 通常の完了を行うには、 ^G 中止して状態に戻すには、
開始し、 ^D 一致するものをリストします。
これは、新しい関数ベースの完了システムでのみ機能します。
バインドキー '^Xi' インクリメンタルコンプリートワード
挿入構成文字
この機能を使用すると、キーボードに表示されない文字を作成できます。
コマンドラインに挿入されます。 コマンドの後には XNUMX つのキーが続きます
ASCII 文字に対応します (プロンプトは表示されません)。 アクセント付き文字の場合は、
XNUMX つのキーは基本文字の後にアクセントのコードが続きます。
その他の特殊文字 XNUMX つの文字が一緒になって、
挿入する文字。 XNUMX 文字のコードは、次のコードのサブセットです。
RFC 1345 (例を参照) http://www.faqs.org/rfcs/rfc1345.html).
関数の後には、オプションで XNUMX 文字を置き換える最大 XNUMX 文字を続けることができます。
またはキーボードから読み取られた両方の文字。 両方の文字が指定されている場合、
入力は読み取られません。 例えば、 挿入構成文字 a: ウィジェット内で使用できます
コマンドラインにウムラウト付きの a を挿入します。 これには使用よりも利点があります
文字通り、より移植性が高いという意味です。
最良の結果を得るには、zsh はマルチバイト文字をサポートするように構築されている必要があります
(で構成 --enable-マルチバイト); ただし、この機能は限られた範囲で動作します。
ISO-8859-1 などのシングルバイト文字セットで使用できる文字の範囲。
文字はローカル表現に変換され、
カーソル位置のコマンドライン。 (変換はシェル内で行われます。
C ライブラリが提供するあらゆる機能を使用します。) 数値引数を使用すると、
文字とそのコードがステータス ラインにプレビューされます
この関数は zle の外部で実行される可能性があり、その場合は文字が表示されます (一緒に
改行付き) を標準出力に出力します。 入力は引き続きキーストロークから読み取られます。
詳細はこちら: 挿入-Unicode-char Unicode 文字を挿入する別の方法については、
XNUMX 進数の文字番号を使用します。
アクセント付き文字のセットは Unicode 文字まで十分に揃っています
U+0180、特殊文字のセットはそれほどではありません。 ただし、非常に散発的です。
その点。 ただし、新しいキャラクターを追加するのは簡単です。 関数を参照してください
構成文字の定義。 追加事項があればお送りください [メール保護].
最初の文字にアクセントを付けるために使用される XNUMX 番目の文字のコードは次のとおりです。
すべての文字がすべてのアクセントを使用できるわけではないことに注意してください。
! 墓。
' 急性。
> サーカムフレックス。
? チルダ。 (これではありません ~ RFC 1345 は文字が存在することを前提としていないため
キーボード上で。)
- マクロンさん。 (ベース文字の上の水平バー。)
( ブルベ。 (ベースキャラクターの上に浅い皿の形をしています。)
. 基本文字の上のドット、または次の場合 i ドットなし、または
L l 中央の点。
: ディエレシス(ウムラウト)。
c セディラ。
_ 下線。ただし、現在、下線付きの文字はありません。
/ 基本文字をストロークします。
" 二重鋭形 (いくつかの文字でのみサポートされます)。
; オゴネク。 (右下の少し前向きのフック)
キャラクター。)
< カロン。 (文字の上に少し V をつけます。)
0 ベースキャラクターの上に丸を付けます。
2 ベースキャラクターをフックします。
9 基本キャラクターにホーンをかけます。
アラビア語、キリル文字、ギリシャ語、ヘブライ語のアルファベットの最も一般的な文字
ご利用いただけます; 適切なシーケンスについては、RFC 1345 を参照してください。 さらに、セット
全角文字には、RFC 1345 にない XNUMX 文字コードが使用可能です
の ASCII 文字に対応 ! 〜へ ~ (0x21 ~ 0x7e) の前に
性格 ^例えば、 ^A 倍幅の場合 A.
次の他の XNUMX 文字シーケンスが理解されます。
ASCII文字
これらはほとんどのキーボードにすでに存在しています。
<( 左角括弧
// バックスラッシュ (斜線)
)> 右角括弧
(! 左中括弧 (中括弧)
!! 縦棒(パイプ記号)
!) 右中括弧 (中括弧)
'? チルダ
特別な手紙
ラテン文字のさまざまなバリエーションに含まれる文字:
ss エスツェット(シャーフェスS)
D-, d- ETH
TH, th ソーン
kk クラ
'n 'n
NG, ng Ng
OI, oi Oi
yr yr
ED えー
通貨記号
Ct セント
Pd 英ポンド(リラなども)
Cu 取引通貨
Ye 円
Eu ユーロ (NB は RFC 1345 に含まれていません)
句読点文字
「右」引用符への参照は、形状 (9 ではなく 6 など) を示します。
文法的な用法ではなく。 (たとえば、「右」の下部二重引用符
はドイツ語で引用符を開くために使用されます。)
!I 逆さまの感嘆符
BB 壊れた縦棒
SE セクション
Co 著作権
-a スペイン語の女性序数記号
<< 左ギルメット
-- ソフトハイフン
Rg 登録商標
PI 枕草 (段落)
-o スペイン語の男性序数記号
>> 右ギルメット
?I 逆疑問符
-1 ハイフン
-N エンダッシュ
-M エムダッシュ
-3 水平バー
:3 垂直省略記号
.3 水平正中線の省略記号
!2 二重縦線
=2 ダブルローライン
'6 左の一重引用符
'9 右一重引用符
.9 「正しい」低めの見積もり
9' 逆向きの「右」引用符
"6 左二重引用符
"9 右二重引用符
:9 「右」の低い二重引用符
9" 逆向きの「右」二重引用符
/- 短剣
/= ダブルダガー
数学記号
DG 度
-2, +-, -+
- 記号、+/- 記号、-/+ 記号
2S 上付き文字 2
3S 上付き文字 3
1S 上付き文字 1
My マイクロ
.M 中点
14 四半期
12 半分
34 XNUMX分のXNUMX
*X 乗算
-: ディビジョン
%0 パーミル
FA, TE, /0
すべての場合、空集合が存在します
dP, DE, NB
偏導関数、デルタ(インクリメント)、デル(ナブラ)
(-, -) の要素が含まれます
*P, +Z 積・和
*-, Ob, Sb
アスタリスク、リング、箇条書き
RT, 0(, 00
ルート記号、比例、無限大
その他の記号
cS, cH, cD, cC
カードのスーツ: スペード、ハート、ダイヤ、クラブ
Md, M8, M2, Mb, Mx, MX
楽譜:クロッチェット(XNUMX分音符)、XNUMX分音符(XNUMX分音符)、半四分音符
(XNUMX分音符)、フラッグサイン、ナチュラルサイン、シャープサイン
Fm, Ml 女性、男性
独自のアクセント
'> サーカムフレックス (キャレットと同じ、 ^)
'! Grave (バッククォートと同じ、 `)
', セディーユ
': 分音記号(ウムラウト)
'm マカロン
'' 急性
挿入ファイル
この機能を使用すると、ファイル パターンを入力し、展開の結果を確認できます。
各ステップで。 Return キーを押すと、すべての展開がコマンドに挿入されます。
ライン。
バインドキー '^Xf' 挿入ファイル
挿入-Unicode-char
最初に実行するとき、ユーザーは XNUMX 進数のセットを入力します。 これは
への別の通話で終了しました 挿入-Unicode-char。 その後、数字が回転します
対応する Unicode 文字に変換します。 たとえば、ウィジェットが次のようにバインドされている場合、
^XU、文字シーケンス `^XU 4 c ^XU' を挿入します L (ユニコード U+004c)。
詳細はこちら: 挿入構成文字 XNUMX文字を使用して文字を挿入する方法については、
ニモニック。
狭い地域 [ -p プレ ] [ -P 役職 ]
[ -S 州首相 | -R 州首相 | [ -l lbufvar ] [ -r ルブフヴァル ]]
[ -n ] [ start end ]
狭い領域から不可視
バッファーの編集可能な部分をカーソルとカーソルの間の領域に絞り込みます。
マークはどちらの順序でも構いません。 領域が空でない可能性があります。
狭い地域 ウィジェットとして使用することも、関数から呼び出すこともできます。
ユーザー定義のウィジェット。 デフォルトでは、編集可能領域外のテキストはそのまま残ります。
見える。 あ 再帰的編集 が実行され、元の拡幅ステータスになります。
復元されました。 として呼び出すと、さまざまなオプションと引数が利用可能になります。
機能。
オプション -p 口実 -P 追記 の前のテキストを置き換えるために使用できます。
機能の持続時間の表示後。 どちらかまたは両方が空の場合があります
文字列。
オプションの場合 -n も与えられますが、 口実 or 追記 存在する場合にのみ挿入されます
それぞれ領域の前または後のテキストで、非表示になります。
カーソルの代わりに使用される XNUMX つの数値引数を指定できます。
位置をマークします。
オプション -S 州首相 保存中に他のオプションに従って絞り込むために使用されます
名前付きパラメータの元の状態 州首相、オプション -R 州首相
パラメータから状態を復元するために使用されます。 どちらの場合も注意してください 名
パラメータは必須です。 XNUMX 番目のケースでは、他のオプションと引数は次のとおりです。
関係ない。 この方法を使用すると、 再帰的編集 は発表された; 呼びだし
ウィジェットはオプションを指定してこの関数を呼び出す必要があります -Sで独自の編集を実行します。
コマンドライン、または ` を介してユーザーに制御を渡しますズレ 再帰的編集'、それからこれを呼び出します
オプション付きの機能 -R。 議論 州首相 に適切な名前でなければなりません
通常のパラメータ(プレフィックスで始まるパラメータを除く) _ntr_
内で使用するために予約されています 狭い地域。 通常、パラメータはローカルになります。
呼び出し関数。
オプション -l lbufvar -r ルブフヴァル パラメータを指定するために使用できます。
ウィジェットは操作から得られたテキストを保存します。 パラメータ lbufvar
含まれます Lバッファ ルブフヴァル 含まれます Rバッファ。 この二つのどちらでもない
オプションは一緒に使用できます -S or -R.
狭い領域から不可視 を呼び出す単純なウィジェットです 狭い地域
領域外のテキストを ` に置き換える引数...'。 かかりません
任意の引数。
zle コマンドを実行すると、表示が復元されます (そしてウィジェットが戻ります)。
通常、ラインが受け入れられるか中止されます。 したがって、追加のそのようなコマンド
現在の行を受け入れるか中止するには、 が必要です。
両方のウィジェットの戻りステータスは、行が受け入れられた場合はゼロ、それ以外の場合はゼロ以外です。
この機能を使用したウィジェットの簡単な例を次に示します。
ローカル 状態
狭い地域 -p $'編集中 制限されました 地域\n' \
-P '' -S 状態
ズレ 再帰的編集
狭い地域 -R 状態
予測オン
この一連の関数は、履歴検索を使用した予測型入力を実装します。 後
予測オン、文字を入力すると、エディターは履歴を遡って検索します。
最初の行は、これまでに入力した内容で始まります。 後 予測オフ,
見つかった行の編集は通常に戻ります。 実際には、必要ないこともよくあります。
使用する 予測オフなぜなら、その行が履歴内の何かと一致しない場合、
キーを追加すると標準の補完が実行され、キーがない場合はそれ自体が挿入されます。
完成品が見つかりました。 ただし、行の途中で編集すると、
予測を混乱させる。 を見てください トグル 以下のスタイル。
関数ベースの補完システム (これには必要です) を使用すると、次のようになります。
タイピングができる TAB カーソルを次の位置に進めるほぼすべての時点で
「興味深い」文字の位置 (通常は現在の単語の終わりですが、
場合によっては単語の途中にある場合もあります)。 そしてもちろん、
行全体が必要なものです。移動する必要がなく、リターンで受け入れることができます
まずカーソルを最後まで移動します。
初めて 予測オン を使用すると、いくつかの追加のウィジェット関数が作成されます。
削除して遡って予測する
を置き換える 後方削除文字 ウィジェット。 これをバインドする必要はありません
あなた自身。
挿入と予測
を置き換えることで予測型入力を実装します。 自己挿入 ウィジェット。 あなたがやる
これを自分でバインドする必要はありません。
予測オフ
予測入力をオフにします。
あなたが オートロード のみ 予測オン 関数を作成する必要があります。
キーバインド 予測オフ 同様に。
ズレ -N 予測オン
ズレ -N 予測オフ
バインドキー '^X^Z' 予測オン
バインドキー '^Z' 予測オフ
ミニバッファからの読み取り
これは、ウィジェット内から関数として呼び出される場合に最も便利ですが、実際には機能します。
それ自体がウィジェットとして正しく機能します。 現在よりも低い値を入力するよう求められます
コマンドライン; 値は、すべての標準 zle 操作を使用して入力できます (および
たとえば、実行時に使用できる制限されたセットだけではありません。
名前付きコマンドの実行)。 その後、値は呼び出し元の関数に返されます。
パラメーター $ REPLY 編集バッファは以前の状態に戻りました。 もし
キーボードブレークによって読み取りが中止されました (通常、 ^G)、関数はステータス 1 を返します。
$ REPLY 設定されていません。
関数に XNUMX つの引数が指定された場合、それはプロンプトとして扱われ、それ以外の場合は `? '
使用されている。 XNUMX つの引数が指定された場合、それらはプロンプトと初期値になります。
of $LBUFFER、そして XNUMX 番目の引数が与えられた場合、それは の初期値になります。 $RBUFFER.
これにより、デフォルト値と開始カーソル位置が提供されます。 戻ってきたら、
バッファ全体は次の値です $ REPLY.
XNUMX つのオプションが利用可能です: `-k NUM' はそれを指定します NUM 文字は読まれるものです
行全体ではなく。 この場合、行エディタは再帰的に呼び出されません。
そのため、端末の設定によっては入力が表示されず、
入力キーは次の場所に配置されます $ REPLYバッファ全体ではありません。 とは異なることに注意してください。 read
ビルトイン NUM 与えなければなりません。 デフォルトはありません。
実際にはシェル独自のミニバッファは使用されないため、この名前は若干の誤りです。
したがって、まだ呼び出すことができます 実行された名前のcmd および同様の機能
値を読み取っています。
置換引数, 置換-引数-編集
関数 置換引数 コマンドライン引数を置き換えるために使用できます。
現在のコマンド ライン、または現在のコマンド ラインが空の場合は最後のコマンド
行が実行されました (新しいコマンド ラインは実行されません)。 引数は区切られています
標準のシェル構文によると、
数値引数が指定された場合は、置換される引数を指定します。 0
履歴展開と同様にコマンド名を意味します。 負の数値引数
最後の単語から逆算します。
数値引数が指定されていない場合は、現在の引数が置き換えられます。 これが最後です
前の履歴行が使用されている場合は引数。
この関数は、置換引数の入力を求めます。
ウィジェットに文字列が含まれている場合 edit、たとえば、次のように定義されます
ズレ -N 置換-引数-編集 置換引数
その場合、関数は編集のために引数の現在の値を提示します。それ以外の場合、関数は編集のために引数の現在の値を提示します。
置換用の編集バッファは最初は空です。
置換文字列, 置換パターン
文字列を再度置換する, パターンを再度置き換える
関数 置換文字列 XNUMX つのウィジェットを実装します。 同じ下で定義されている場合
name を関数として指定すると、XNUMX つの文字列の入力を求められます。 最初の(ソース)文字列は次のようになります
行編集バッファ内で出現するすべての箇所で XNUMX 番目の文字に置き換えられます。
ウィジェット名に ` という単語が含まれる場合パターン'、たとえばウィジェットを定義することによって
コマンド ` を使用するズレ -N 置換パターン 置換文字列' の場合、一致は次のようになります。
zsh パターンを使用して実行されます。 すべての zsh 拡張グロビング パターンは、
ソース文字列。 ファイル名の生成とは異なり、パターンは必要ないことに注意してください。
また、glob 修飾子も何の効果もありません。 加えて
置換文字列にはパラメータまたはコマンド置換を含めることができます。 さらに、
`&置換文字列内の ' は、一致したソース文字列に置き換えられます。
逆引用符で囲まれた数字 `\N' は、 N括弧で囲まれた式
一致しました。 形式 `\{N}' は、後続の数字からその数字を保護するために使用できます。
代わりにウィジェットに「`」という単語が含まれている場合正規表現' (または '正規表現') の場合、一致は次のようになります。
オプションの設定を尊重し、正規表現を使用して実行されます
RE_MATCH_PCRE (関数の説明を参照してください) 正規表現置換 未満)。 NS
パターン マッチングに関して上記で説明した特別な置換機能が利用可能です。
デフォルトでは、以前のソース文字列または置換文字列は提供されません。
編集。 ただし、この機能はスタイルを設定することで有効にすることができます。 編集-前
文脈で :zle:ウィジェット (例えば、 :zle:文字列の置換)へ true。 に
さらに、正の数値引数を指定すると、前の値が強制的に提供されます。
負の引数またはゼロの引数は、それらを強制的に無効にします。
関数 文字列を再度置換する 以前の置換を繰り返すために使用できます。
プロンプトは行われません。 同様に 置換文字列、ウィジェットの名前に次のものが含まれる場合
「」という言葉パターン'または `正規表現'、パターンまたは正規表現の一致が実行されます。
それ以外の場合はリテラル文字列置換。 以前のソースと置き換えに注意してください
パターン、正規表現、または文字列一致が使用されるかどうかに関係なく、テキストは同じです。
加えて、 置換文字列 プロンプトの上に以前の置換が表示されるため、
現在のセッション中に存在する限り。 ソース文字列が空の場合、
ウィジェットが置換を促すことなく置換が繰り返されること
文字列。
たとえば、次の行から始めます。
印刷 この ライン 含まれています ファン 好んで
そして呼び出す 置換パターン ソース文字列 ` を使用f(?)n'とその代わり
文字列 `c\1r' あまり役に立たない行が生成されます。
印刷 この ライン 含まれています 自動車 コード
置換文字列の範囲は、
狭い領域から不可視 ウィジェット。 現在のバージョンの制限の XNUMX つは、
取り消す 置換文字列とソース文字列への変更を循環して実行します。
置換自体を元に戻します。
非表示の送信
これは、ミニバッファからの関数として呼び出すことができるという点で、ミニバッファからの読み取りに似ています。
ウィジェットまたは独自のウィジェットとして、対話的に入力を読み取ります。
キーボード。 ただし、入力中の入力は隠蔽され、アスタリスクの文字列が表示されます。
(`*') が代わりに表示されます。 値はパラメータに保存されます $INVISIBLE それに
参照は編集バッファの復元されたカーソル位置に挿入されます。 もしも
キーボードのブレークによって読み取りが中止されました (通常、 ^G)または別の脱出
などの編集 プッシュライン, $INVISIBLE は空に設定され、元のバッファは
変わらず復元されました。
関数に XNUMX つの引数が指定されている場合、それはプロンプトとして解釈されます。それ以外の場合は、
`エコーなし テキスト: ' が使用されます (emacs と同様)。 XNUMX 番目と XNUMX 番目の引数が
それらが参照の開始と終了に使用されると仮定すると、 $INVISIBLE つまり
バッファに挿入されます。 デフォルトでは次のように開きます。 ${をタップし、その後、 不可解,
で閉じる }, しかし他にも多くの効果が考えられます。
スマート挿入最後の単語
この関数は、 挿入-最後の単語 ウィジェット、次のように:
ズレ -N 挿入-最後の単語 スマート挿入最後の単語
数値引数を使用する場合、またはからの呼び出しでコマンド ライン引数が渡された場合
別のウィジェットは次のように動作します 挿入-最後の単語ただし、コメント内の単語は
無視される場合 INTERACTIVE_COMMENTS 設定されています。
それ以外の場合は、前のコマンドの右端の「興味深い」単語が検索されます。
そして挿入されました。 「興味深い」のデフォルトの定義は、その単語に次のものが含まれていることです。
少なくとも XNUMX つのアルファベット文字、スラッシュ、またはバックスラッシュ。 この定義は次のようになります。
を使用してオーバーライドされます match スタイル。 スタイルの検索に使用されるコンテキストは、
ウィジェット名なので、通常はコンテキストは次のようになります。 :最後の単語を挿入。 ただし、バインドすることはできます
この関数をさまざまなウィジェットに適用して、さまざまなパターンを使用します。
ズレ -N 最後の代入を挿入 スマート挿入最後の単語
ズスタイル :insert-最後の割り当て match '[[:alpha:]][][[:alnum:]]#=*'
バインドキー '\e=' 最後の代入を挿入
興味深い単語が見つからず、 自動前へ style が true 値に設定されている場合、
検索は履歴を上向きに続けます。 いつ 自動前へ 設定されていない、または
false (デフォルト)、検索するにはウィジェットを繰り返し呼び出す必要があります。
以前の歴史の行。
転置線
複数行の編集バッファでのみ有効です。 ここの行は、
履歴行ではなく、現在の画面上のバッファー。 効果は機能と同様です
Emacs では同じ名前です。
現在の行を前の行と入れ替えて、カーソルを先頭に移動します
次の行の。 これを繰り返します (これは、肯定的なメッセージを提供することで実行できます)
数値引数) は、カーソルの上の行を下に移動する効果があります。
行数。
負の数値引数を指定する場合は、カーソルの上に XNUMX 行が必要です。 この二つ
行が置き換えられ、カーソルが前の行の先頭に移動します。 使用する
-1 より小さい数値引数は、行をカーソルの上に移動する効果があります。
その行数を引いた分だけ増加します。
which-コマンド
この機能は、組み込みウィジェットのドロップイン代替品です。 which-コマンド。 それ
コマンドが実行されたかどうかを正しく検出するという点で、動作が強化されました。
word はエイリアスとして展開する必要があります。 そうであれば、コマンドワードのトレースを続けます
展開されたエイリアスから、実行されるコマンドに到達するまで。
スタイル どこから コンテキスト内で利用可能です :zle:$ウィジェット; これは次のように設定される場合があります
コマンドの調査に使用されるコマンドとオプションを与える配列
という言葉が見つかりました。 デフォルトは どこから -c.
zcalc-自動挿入
この機能は、 zcalc セクションで説明されている関数
数学関数。 二項演算子を表すキーにバインドする必要があります
など+'、 `-'、 `*'または `/'。 zcalc で実行しているときにキーが発生した場合、
行の先頭、または開き括弧の直後のテキスト 「そうです " is
キー自体の表現の前に挿入されます。 これにより、
現在の行の前の計算からの答え。 挿入するテキスト
変数を設定して入力したシンボルを変更する前に
ZCALC_AUTO_INSERT_PREFIX.
したがって、たとえば「`」と入力すると、+12' に続けて return を実行すると、前の結果に 12 が加算されます。
zcalc にない場合、キーは単にシンボル自体を挿入します。
ユーティリティ 機能
これらの関数は、ウィジェットの構築に役立ちます。 ` でロードする必要があります。オートロード
-U function' と指定され、ユーザー定義のウィジェットから呼び出されます。
分割シェル引数
この関数は、現在編集中の行をシェル引数に分割し、
空白。 結果は配列に格納されます 返信。 配列にはすべてが含まれます
最初の引数の前の空白から始まる行の一部を順番に、
最後の引数の後に空白を入れて終了します。 したがって(ある限り、
オプション KSH_ARRAYS は設定されていません)空白は配列内の奇数のインデックスによって与えられ、
偶数インデックスによる引数。 引用符の削除は行われないことに注意してください。 接合
すべての要素を合わせて 返信 オリジナルを作成することが保証されているため、
ライン。
パラメータ 応答 の単語のインデックスに設定されます 返信 を含む
カーソルの後の文字。最初の要素のインデックスは 1 です。パラメータ
返信2 は、その単語のカーソルの下にある文字のインデックスに設定されます。
最初の文字のインデックスは 1 です。
したがって 返信, 応答 返信2 すべてを囲んでいる関数に対してローカルにする必要があります。
機能を見る 現在の引数を変更する方法の例については、以下で説明します。
この関数を呼び出します。
現在の引数を変更する [ expr-使用中-$ARG | ファンク ]
この関数は、ユーザー定義のウィジェットを変更できるようにする簡単な方法を提供します。
カーソルの下 (またはカーソルのすぐ左) にあるコマンド ライン引数
カーソルが引数の間にある場合はカーソル)。
引数には、評価時にシェルで動作する式を指定できます。
パラメーター ARG、これはコマンドライン引数に設定されています。
カーソル。 式が評価されないようにするために、式は適切に引用符で囲む必要があります
早いです。
あるいは、引数に文字列が含まれていない場合は、 ARG、であると想定されます
現在のコマンドライン引数が唯一の引数として渡されるシェル関数
口論。 関数は変数を設定する必要があります 応答 の新しい値に
コマンドライン引数。 関数がゼロ以外のステータスを返す場合、
呼び出し関数。
たとえば、次のコードを含むユーザー定義のウィジェットは、
カーソルの下にある引数の文字をすべて大文字に変換します。
現在の引数を変更する '${(U)ARG}'
次の例では、現在の単語から引用符 (バックスラッシュまたは XNUMX つ) が削除されます。
引用符のスタイルの)、全体を一重引用符に置き換えます。
現在の引数を変更する '${(qq)${(Q)ARG}}'
以下はコマンドライン引数でディレクトリ展開を実行し、
絶対パスに置き換えます。
展開ディレクトリ() {
返信=${~1}
返信=${返信:a}
}
現在の引数を変更する 展開ディレクトリ
実際の機能では 展開ディレクトリ おそらくウィジェット内で定義されていないでしょう
コラボレー 現在の引数を変更する が呼び出されます。
スタイル
上記のウィジェットのいくつかの動作は、 ズスタイル
機構。 特に、補完システムと対話するウィジェットは、
呼び出した補完へのコンテキスト。
ブレークキー
このスタイルは、 インクリメンタルコンプリートワード ウィジェット。 その値は次のようになります。
このパターンに一致するすべてのキーによりウィジェットが停止します
キーがそれ以上の影響を及ぼさない増分完了。 すべてのスタイルと同様
によって直接使用される インクリメンタルコンプリートワード、このスタイルは、
コンテキスト `:増分'.
完了
当学校区の インクリメンタルコンプリートワード 挿入と予測 ウィジェットはトップレベルを設定します
補完を呼び出す前のコンテキスト名。 これにより、異なるセットを定義できるようになります
通常の補完とこれらのウィジェットのコンプリーター関数。 例えば、
通常の完了、完了に対して完了、近似、および補正を使用する
増分完了の修正と予測 XNUMX のみの完了
使用できます:
ズスタイル ':完了:*' 完了 \
_完了 _正しい _近似
ズスタイル ':完了:増分:*' 完了 \
_完了 _正しい
ズスタイル ':完了:予測:*' 完了 \
_完了
予測に使用されるコンプリーターを制限することをお勧めします。
入力すると自動的に呼び出されます。 の _リスト _メニュー 完了者は決してすべきではありません
予測とともに使用されます。 の _近似, _正しい, _拡大する, _マッチ
コンプリータを使用することもできますが、文字を変更する可能性があることに注意してください。
カーソルの後ろにある単語なので、結果がどのようになるかを注意深く観察する必要があります。
あなたが意図した。
カーソル 当学校区の 挿入と予測 ウィジェットはコンテキスト ` でこのスタイルを使用します。:予測する'、 決定する
完了が試行された後にカーソルを置く場所。 値は次のとおりです。
コンプリート
カーソルは完了時にあった場所に残りますが、それは完了したときのみです。
ユーザーが挿入した文字と同じ文字の後に。 もしそれが
別の文字の後にある場合、この値は ` と同じになります。キー'.
キー カーソルはその後に残ります n挿入されたばかりの文字の 番目の出現、
コラボレー n その文字が前の単語に出現した回数です
完成が試みられました。 つまり、これは、
完了コードが見つかった場合でも、入力した文字の後にカーソルが表示される
その位置に他の文字を挿入する必要はありません。
このスタイルに他の値を指定すると、カーソルは無条件にその位置に残ります。
完了コードが残った場所。
リスト 使用している場合 インクリメンタルコンプリートワード ウィジェット、このスタイルは一致するかどうかを示します
キーを押すたびにリストが表示されます (画面に収まる場合)。 コンテキストを使用する
接頭辞 `:完了:増分'.
当学校区の 挿入と予測 ウィジェットはこのスタイルを使用して、補完を行うかどうかを決定します。
可能な完了が XNUMX つしかない場合でも表示されます。 これは、次の値が指定された場合に実行されます。
このスタイルは文字列です 常に。 この場合、コンテキストは `:予測する'(
`:完了:予測')。
match このスタイルを使用しているのは、 スマート挿入最後の単語 パターンを提供します (完全な
EXTENDED_GLOB 構文) が興味深い単語と一致します。 コンテキストの名前は、
ウィジェットの宛先 スマート挿入最後の単語 バインドされています (上記を参照)。 デフォルト
の行動 スマート挿入最後の単語 以下と同等です。
ズスタイル :最後の単語を挿入 match '*[[:アルファ:]/\\]*'
ただし、スペースを含む単語を含めることもできます。
ズスタイル :最後の単語を挿入 match '*[[:alpha:][:space:]/\\]*'
または、単語の長さが XNUMX 文字以上である限り、数字を含めます。
ズスタイル :最後の単語を挿入 match '*([[:digit:]]?|[[:alpha:]/\\])*'
上記の例では、「2>」のようなリダイレクトが含まれます。
プロンプト 当学校区の インクリメンタルコンプリートワード ウィジェットはステータスにこのスタイルの値を表示します
インクリメンタル完了時の行。 文字列値には、次のいずれかを含めることができます。
次のような部分文字列 PS1 およびその他のプロンプトパラメータ:
%c 一致を生成したコンプリーター関数の名前に置き換えられます。
(先頭のアンダースコアなし)。
%l 時 リスト スタイルが設定され、` に置き換えられます...' 一致リストが多すぎる場合
画面に収まるには長く、それ以外の場合は空の文字列を使用します。 もし リスト
スタイルが `false' であるか、設定されていません。 `%l' は常に削除されます。
%n 生成された一致の数に置き換えられます。
%s ` に置き換えます-番号 マッチ-'、 `-番号 接頭辞-'、または存在しない場合は空の文字列
行上の単語と一致する補完 (一致に共通点がない場合)
行上の単語と異なる接頭辞、またはそのような共通の接頭辞があるかどうか
それぞれプレフィックス。
%u すべての一致の明確な部分がある場合は、その部分に置き換えられます。
ライン上の言葉とは異なります。
`のようにブレークキー'、これは ` を使用します:増分' コンテクスト。
ストップキー
このスタイルは、 インクリメンタルコンプリートワード ウィジェット。 その値が扱われます
のものと同様に、 ブレークキー スタイル (同じコンテキストを使用します:
`:増分')。 ただし、この場合、すべてのキーがそのパターンとして指定されたパターンに一致します。
value は増分補完を停止し、通常の機能を実行します。
トグル このブール スタイルは次によって使用されます。 予測オン およびコンテキスト内の関連ウィジェット
`:予測する'。 標準の「true」値のいずれかに設定すると、予測型付けは次のようになります。
役に立たない可能性が高い状況では自動的にオフになります。
複数行のバッファを編集するとき、または行の途中に移動した後、
キャラクターの削除。 デフォルトでは、予測がオンになるまで、予測がオンのままになります。
への明示的な呼び出し 予測オフ.
詳細
このブール スタイルは次によって使用されます。 予測オン およびコンテキスト内の関連ウィジェット
`:予測する'。 標準の「true」値のいずれかに設定すると、これらのウィジェットには
予測状態が切り替わると、プロンプトの下にメッセージが表示されます。 これが一番便利です
と組み合わせて トグル スタイル。 デフォルトでは、これらのメッセージは表示されません。
ウィジェット このスタイルは、 command style: を使用するウィジェット関数の場合 ズレ 〜へ
他のウィジェットを呼び出す場合、このスタイルを使用してウィジェットをオーバーライドすることができる場合があります。
と呼ばれます。 このスタイルのコンテキストは、呼び出し元のウィジェットの名前です (
XNUMX つの関数が複数のウィジェットにバインドされる可能性があるため、呼び出し関数の名前
名前)。
ズスタイル :前の単語をコピー ウィジェット スマート挿入最後の単語
呼び出し元のウィジェットまたは関数のドキュメントを確認して、
ウィジェット スタイルが使用されます。
例外 取り扱い
zsh が次の形式で例外処理を提供できるようにするために、XNUMX つの関数が提供されています。
他の言語でもよく知られているはずです。
投げる 例外
関数 投げる 名前付きをスローします 例外。 名前は任意の文字列であり、
によってのみ使用されます。 投げる キャッチ 機能。 例外はほとんどの場合です
シェルエラーと同じように扱われます。つまり、ハンドルされない例外によりシェルが
関数またはスクリプト内のすべての処理を中止し、トップレベルに戻ります。
インタラクティブなシェル。
キャッチ 例外パターン
関数 キャッチ 例外がスローされた場合はステータス XNUMX を返し、パターンは
例外パターン その名前と一致します。 それ以外の場合はステータス 1 を返します。
例外パターン は標準のシェル パターンであり、現在の設定を尊重します。
EXTENDED_GLOB オプション。 別名 キャッチ 引数を防ぐためにも定義されています
一致するファイル名から関数に変換するため、パターンは引用符なしで使用できます。 注記
例外は他のシェル エラーと基本的には変わりません。
空の文字列を例外名として使用することでシェル エラーをキャッチできます。 の
シェル変数 UG によって設定されます キャッチ キャッチされた例外の名前に。 それは
を呼び出すことで例外を再スローすることが可能 投げる もう一度機能します
例外がキャッチされました。
これらの機能は、 常に で説明されている構造
ズシュミスク(1)。 この構造のみが必要なサポートを提供するため、これは重要です。
例外。 典型的な例は次のとおりです。
{
# "試す" コロナ新型ウィルス(COVID-XNUMX)やメンタルヘルスの崩壊を避ける為の
# ... 入れ子になりました コード こちら 呼び出し "投げる 私の例外」
} 常に {
# "いつも" コロナ新型ウィルス(COVID-XNUMX)やメンタルヘルスの崩壊を避ける為の
if キャッチ MyExcept; その後
印刷 "つかまった 例外 私の例外」
elif キャッチ ''; その後
印刷 "つかまった a shell エラー。 宣伝中…」
投げる ''
fi
# その他 例外 取り扱い 焙煎が極度に未発達や過発達のコーヒーにて、クロロゲン酸の味わいへの影響は強くなり、金属を思わせる味わいと乾いたマウスフィールを感じさせます。 かもしれません be キャッチ さらに
# up コール スタック。
}
すべての例外をキャッチする必要がある場合は、次のイディオムが推奨される可能性があります。
{
# ... 入れ子になりました コード こちら スロー an 例外
} 常に {
if キャッチ *; その後
場合 $キャッチ in
(私の例外)
印刷 "つかまった my 自分の 例外"
;;
(*)
印刷 "つかまった 一部 その他 例外"
;;
ESAC
fi
}
他の言語の例外処理と同様に、コードによって例外がスローされる場合があります。
「try」ブロック内に深くネストされています。 ただし、内側に投げる必要があることに注意してください。
現在のシェル、パイプライン用にフォークされたサブシェル内ではない、括弧で囲まれた現在のシェル
構造、または何らかの形式のコマンドまたはプロセスの置換。
システムは内部でシェル変数を使用します 例外 の名前を記録する
投げるときと捕るときの例外。 このスキームの欠点の XNUMX つは、
例外は変数を処理しません 例外 設定されたままなので、正しくない可能性があります
その後シェルエラーが発生した場合、例外の名前として認識されます。 追加 unset
例外 例外処理を使用するコードの最外層の先頭
この問題を解決します。
MIME 関数
拡張子によって認識されるファイルの処理には、次の XNUMX つの関数が使用できます。
ファイルをディスパッチする例 text.ps 適切なビューアに対するコマンドとして実行されたとき。
zsh-mime-setup [ -F V ] [ -l [ サフィックス ...]]]
zsh-mime-ハンドラー [ -l ] command 引数 ...
これら XNUMX つの関数はファイルを使用します 〜/ .mime.types /etc/mime.types、その
タイプと拡張子を関連付けるだけでなく、 〜/ .mailcap / etc / mailcap ファイル、
タイプとそれを処理するプログラムを関連付けます。 これらは多くのデバイスで提供されています
マルチメディア インターネット メール拡張機能を備えたシステム。
システムを有効にするには、機能 zsh-mime-setup 自動ロードして実行する必要があります。
これにより、拡張子付きのファイルを実行可能ファイルとして扱うことができます。 そのようなファイルは
機能完了システムによって完了します。 関数 zsh-mime-ハンドラー すべき
ユーザーが呼び出す必要はありません。
システムは、` を使用してサフィックス エイリアスを設定することで機能します。alias -s'。 サフィックスエイリアス
ユーザーによってすでにインストールされているものは上書きされません。
小文字で定義されたサフィックスの場合、大文字のバリアントも自動的に定義されます。
処理されます (例: PDF サフィックスを処理する場合は自動的に処理されます PDFファイル is
定義されています)が、その逆はありません。
繰り返し電話をかける zsh-mime-setup 間の既存のマッピングをオーバーライドしないでください。
オプションを除くサフィックスと実行可能ファイル -f が与えられる。 ただし、次のことに注意してください。
これは、ハンドラー以外のハンドラーに割り当てられた既存のサフィックス エイリアスをオーバーライドしません。
zsh-mime-ハンドラー.
呼び出し zsh-mime-setup オプション付き -l 既存のマッピングをリストします。
それらを変更します。 リストするサフィックス (これには、必要なパターン文字が含まれる場合があります)
コマンドラインでの即時解釈から引用されます) は次のように指定できます。
追加の引数、それ以外の場合はすべてのサフィックスがリストされます。
呼び出し zsh-mime-setup オプション付き -v 実行中に詳細な出力が表示されます。
セットアップ操作。
システムは以下を尊重します メールキャップ フラグ needterminal 大量の出力を参照してください
メールキャップとします。
関数は次のスタイルを使用します。これらのスタイルは、 ズスタイル ビルトイン
コマンド(を参照) zshモジュール(1))。 事前に定義する必要があります zsh-mime-setup 実行されます。
使用されるコンテキストはすべて次で始まります :マイム:、場合によっては追加のコンポーネントが含まれます。
末尾に * (適切に引用) スタイル パターンに追加される
将来的にシステムが拡張された場合に備えて。 いくつかの例を以下に示します。
複数のサフィックスを持つファイルの場合、例: .pdf.gz、ここでコンテキストには
suffix 一致するまで、可能な限り長いサフィックスから検索されます。
スタイルが見つかったからです。 たとえば、次の場合 .pdf.gz ハンドラーと一致するものを生成します。
それは使用されます。 それ以外の場合は、ハンドラー .gz 使用されます。 以下の理由により、
サフィックスエイリアスの動作方法では、常にそのハンドラーが必要です。
可能な限り短いサフィックスなので、この例では .pdf.gz 以下の場合にのみ処理できます .gz is
も処理されます (ただし、必ずしも同じ方法ではありません)。 そうでない場合は、
取り扱い .gz 単独で必要な場合は、コマンドを追加するだけです
alias -s gz=zsh-mime-ハンドラー
初期化コードだけで十分です。 .gz 単独では処理されませんが、
他の接尾辞と組み合わせて使用することもできます。
現在のシェル
このブール型スタイルが true の場合、コンテキストの mailcap ハンドラーは
質問はを使用して実行されます 評価する 新しいものを開始する代わりに組み込み sh
プロセス。 これはより効率的ですが、場合によっては機能しない場合があります
ここで、mailcap ハンドラーは厳密な POSIX 構文を使用します。
勘当します このブール型が true の場合、メールキャップ ハンドラーはバックグラウンドで開始されます。
否認されます。つまり、親シェル内のジョブ制御の対象になりません。
このようなハンドラーはほぼ常に独自のウィンドウを生成するため、可能性の高いのは
スタイルを設定することによる有害な副作用は、殺すのが難しくなることです
シェル内からのジョブ。
そのまま実行
このスタイルは、渡されたファイルと照合するパターンのリストを提供します。
ハンドラープログラムを使って実行します。 ファイルがパターンと一致する場合、
コマンド ライン全体がハンドラーなしで現在の形式で実行されます。 これ
接尾辞が付いている可能性があるが実行可能であるファイルに便利です
自分の権利で。 スタイルが設定されていない場合、パターンは *(*) *(/) 使用されている;
したがって、実行可能ファイルはハンドラーには渡されず、直接実行されます。
そしてオプション AUTO_CD たまたまディレクトリに変更するために使用される可能性があります
MIME サフィックスが付いています。
決して実行しない
このスタイルは以下と組み合わせると便利です。 そのまま実行。 に設定されています
決して使用すべきではないファイルへのフルパスに対応するパターンの配列
MIME ハンドラーに渡されたファイルが一致する場合でも、実行可能ファイルとして扱われます。
そのまま実行。 これは、実行を処理しないファイル システムに役立ちます。
許可が必要な場合、または別のオペレーティング システムからの実行可能ファイルが含まれる場合。 のために
例、 /mnt/ウィンドウズ が Windows マウントである場合、
ズスタイル ':マイム:*' 決して実行しない '/mnt/windows/*'
その領域で見つかったすべてのファイルが MIME タイプとして実行されるようにします。
たとえ実行可能であっても。 この例が示すように、完全なファイル名は
ファイルがどのように渡されたかに関係なく、パターンと照合されます。
ハンドラ。 ファイルは、次のコマンドを使用してフルパスに解決されます。 :A 修飾子
のサブセクション修飾子で説明されています。 zshexpn(1); この意味は
シンボリック リンクは可能な場合には解決されるため、他のファイルへのリンクは行われません。
システムは正しい方法で動作します。
ファイルパス
スタイルの場合に使用されます パス内のファイルの検索 同じコンテキストに当てはまります。 に設定します
処理対象のファイルの検索に使用されるディレクトリの配列。
デフォルトは、特別なパラメータで指定されたコマンド パスです。 pathを選択します。
シェルオプション PATH_DIRS 尊重されます。 それが設定されている場合は、適切なパス
扱うファイル名がそのままの場合でも検索されます。
コマンドラインに ` が含まれている/'。 完全なコンテキストは次のとおりです :マイム:。サフィックス:、など
スタイルについて説明した ハンドラ.
パス内のファイルの検索
設定すると、名前に絶対パスが含まれていないファイルを許可します。
コマンド パスまたはコマンド パスで指定されたパスで検索されます。 ファイルパス
スタイル。 ファイルがパス内に見つからない場合は、ローカルで検索されます
(現在のディレクトリがパス内にあるかどうか); 見つからない場合
ローカルでは、ハンドラーは、 ハンドルが存在しません スタイルが設定されます。
パス内で見つかったファイルは、スタイルの説明に従ってテストされます。 そのまま実行.
完全なコンテキストは次のとおりです :マイム:。サフィックス:、スタイルについて説明したように ハンドラ.
フラグ ハンドラーに使用するフラグを定義します。 コンテキストは次のとおりです ハンドラ スタイル、
形式は次のフラグと同じです メールキャップ.
ハンドルが存在しません
デフォルトでは、ファイルに対応しない引数は渡されません。
MIME ハンドラーは、
たまたまサフィックスが付いているパス。 このスタイルは、次の配列に設定できます。
ハンドラーに渡される引数の拡張 glob パターン
それらが存在しない場合。 明示的に設定されていない場合は、デフォルトで次のようになります。
[[:アルファ:]]#:/* これにより、URL を MIME ハンドラーに渡すことができます。
ただし、ファイル システムにはその形式では存在しません。 完全なコンテキスト
is :マイム:。サフィックス:、スタイルについて説明したように ハンドラ.
ハンドラ
サフィックスのハンドラーを指定します。 接尾辞はコンテキストによって次のように与えられます。
:マイム:。サフィックス:、ハンドラーの形式はまさに次のとおりです。 メールキャップ.
特に ` に注意してください.' と末尾のコロンを使用して、この使用法を区別します。
コンテクスト。 これは、 メールキャップ ファイル。 もし
ハンドラーには端末が必要です。 フラグ スタイルは、
単語 needterminal、または出力がポケットベルを介して表示される場合(ただし、
ハンドラー自体がページャーの場合はそうではありません)、次の内容を含める必要があります。 大量の出力.
メールキャップ
次の形式のファイルのリスト 〜/ .mailcap / etc / mailcap 読むべき
セットアップ中に、これら XNUMX つのファイルで構成されるデフォルトのリストを置き換えます。
文脈は :マイム:に直接影響を与えます。健全とされるのは + リスト内のはデフォルトに置き換えられます
ファイル。
メールキャップの優先順位
このスタイルは、同じ MIME の複数のメールキャップ エントリを解決するために使用されます。
タイプ。 これは、次の要素の配列 (降順) で構成されます。
優先順位。 前のエントリが使用できない場合は、後のエントリが使用されます
比較されているエントリを解決します。 どのテストでも問題が解決されない場合は、
エントリの場合、最初に見つかったエントリが保持されます。
ファイル ファイルの順序 ( メールキャップ スタイル)読みます。 以前
ファイルが優先されます。 (これは同じエントリを解決するわけではないことに注意してください
ファイル。)
優先順位
mailcap エントリの優先度フラグ。 優先度は整数です
0 ~ 9 で、デフォルト値は 5 です。
フラグ によって与えられたテストは、 メールキャッププリオフラグ オプションは解決するために使用されます
エントリー。
場所 後のエントリが優先されます。 エントリは厳密に順序付けされているため、
このテストは常に成功します。
このスタイルは初期化中に処理されるため、コンテキストは次のようになります。
常に :マイム:、接尾辞による区別はありません。
メールキャッププリオフラグ
このスタイルは、キーワードが次の場合に使用されます。 フラグ のリストで見つかりました
によって指定されたテスト メールキャップの優先順位 スタイル。 リストに設定する必要があります
パターンのそれぞれが、で指定されたフラグに対してテストされます。
mailcap エントリ (つまり、いくつかのメールキャップで見つかった一連の割り当て)
mailcap ファイル内のエントリ)。 リスト内の以前のパターンが優先されます。
一致するパターンが一致しないパターンよりも優先されます。
MIME タイプ
次の形式のファイルのリスト 〜/ .mime.types /etc/mime.types ようにするには
セットアップ中に読み込まれ、これら XNUMX つで構成されるデフォルトのリストを置き換えます。
ファイル。 文脈は :マイム:に直接影響を与えます。健全とされるのは + リスト内の は、
デフォルトのファイル。
決して背景がない
このブール型スタイルが設定されている場合、指定されたコンテキストのハンドラーは常に
mailcap エントリでフラグが指定されている場合でも、フォアグラウンドで実行されます。
その必要がないことを示唆します (たとえば、端末は必要ありません)。
ページャ 設定されている場合、代わりに使用されます $ PAGER or よ サフィックスを処理するには、
大量の出力 フラグが設定されます。 文脈は次のとおりです ハンドラすなわち、
:マイム:。サフィックス: 指定されたファイルを処理するための サフィックス.
例:
ズスタイル ':マイム:*' メールキャップ 〜/ .mailcap / usr / local / etc / mailcap
ズスタイル ':mime:.txt:' ハンドラ less %s
ズスタイル ':mime:.txt:' フラグ needterminal
日時 zsh-mime-setup その後実行されると、 メールキャップ のエントリ
XNUMXつのファイルが与えられました。 サフィックスのファイル 。TXT `を実行することで処理されますless ファイル.txt'.
旗 needterminal このプログラムは、に接続して実行する必要があることを示すように設定されています。
ターミナル。
コマンドをディスパッチするにはいくつかの手順があるため、次のようにする必要があります。
拡張子でファイルを実行しようとする場合にチェックされます .EXT を持っていません
期待される効果。
コマンド `alias -s EXT' は ' を表示する必要がありますps=zsh-mime-handler'。 それが表示される場合
別のサフィックス エイリアスがすでにインストールされており、上書きされませんでした。
何も表示されない場合は、ハンドラーがインストールされていないことが考えられます。
ハンドラーが次の場所で見つかりました .mime.types メールキャップ の組み合わせ 拡張子 ファイル。 で
その場合、適切な処理を追加する必要があります 〜/ .mime.types メールキャップ.
拡張機能が次のように処理される場合 zsh-mime-ハンドラー しかし、ファイルは開かれていません
正しくは、その型に定義されたハンドラーが間違っているか、フラグが間違っているかのいずれかです。
それに関連するものは適切です。 ランニング zsh-mime-setup -l が表示されます
ハンドラーと、存在する場合はフラグ。 あ %s ハンドラー内は次のものに置き換えられます
ファイル(必要に応じて適切に引用)。 ハンドラー プログラムのリストがリストされていることを確認します。
示されている方法で実行できます。 フラグも確認してください needterminal or
大量の出力 ハンドラーを端末で実行する必要がある場合に設定されます。 二番目
flag は、出力をポケットベルに送信する必要がある場合に使用されます。 適切な例
メールキャップ このようなプログラムのエントリは次のとおりです。
テキスト/html; /usr/bin/lynx '%s'; needterminal
実行中 `zsh-mime-ハンドラー -l command ライン' 次のようなコマンドラインを出力します。
実行され、フラグの効果を削除するために簡略化され、引用符で囲まれます。
出力は完全な zsh コマンド ラインとして実行できます。 これは完了によって使用されます
ファイルが処理された後にどのように完了するかをシステムが決定する zsh-mime-setup.
ウェブブラウザを選択
この関数は、上で説明した XNUMX つの MIME 関数とは別のものであり、次のことが可能です。
サフィックスに直接割り当てられます。
オートロード -U ウェブブラウザを選択
alias -s html=ウェブブラウザを選択
これは、Web ブラウザをディスパッチするためのインテリジェントなフロント エンドとして提供されます。 そうかも知れない
関数またはシェルスクリプトとして実行します。 そうでない場合はステータス 255 が返されます。
ブラウザが起動できました。
ブラウザーの選択をカスタマイズするために、さまざまなスタイルが利用できます。
ブラウザスタイル
スタイルの値は、降順で優先順位を与える配列です。
使用するブラウザの種類。 要素の値は次のとおりです。
ランニング
X Window 表示時にすでに実行されている GUI ブラウザを使用します。
利用可能。 にリストされているブラウザは、 Xブラウザ スタイルが試されています
見つかるまで注文します。 存在する場合、ファイルは次のように表示されます。
そのブラウザに表示されるため、ユーザーはそれが表示されたかどうかを確認する必要がある場合があります。
実行中のブラウザが見つからない場合、ブラウザは起動されません。 ブラウザその他
Firefox、Opera、Konqueror は、
URL をリモートで開くための Mozilla 構文。
x X Window 表示が使用可能な場合は、新しい GUI ブラウザを起動します。
にリストされているブラウザのいずれかが利用可能かどうかを検索します。
Xブラウザ スタイルを設定し、最初に見つかったものを開始します。 チェックはありません
すでに実行されているブラウザ用に作成されています。
TTY ターミナルベースのブラウザを起動します。 空き状況を検索する
にリストされているブラウザのうち、 tty ブラウザ スタイルを決めて最初から始める
見つかったもの。
スタイルが設定されていない場合はデフォルト ランニング x TTY 使用されている。
Xブラウザ
実行時に使用するブラウザの優先順位の降順の配列
X ウィンドウ システムの下で。 配列は以下のコマンド名で構成されます。
ブラウザを起動するもの。 コンテキスト内で検索されます :マイム: (これは
将来拡張される可能性があるため、`を追加します*' がおすすめ)。 例えば、
ズスタイル ':マイム:*' Xブラウザ オペラ Konqueror Firefoxの
を指定します ウェブブラウザを選択 まず実行中のインスタンスを探す必要があります
Opera、Konqueror、または Firefox をこの順序で、見つからない場合は、
Opera を起動してみる必要があります。 デフォルトは Firefoxの モジラ ネットスケープ
オペラ Konqueror.
tty ブラウザ
次のような配列 Xブラウザただし、そうでない場合にブラウザに使用できるようにする点が異なります。
X Window 表示が可能です。 デフォルトは エリンクス リンク オオヤマネコ.
command
設定されている場合、このスタイルは、ページを開くために使用されるコマンドを選択するために使用されます。
ブラウザ。 文脈は :mime:ブラウザ:新しい:$ブラウザ: 新しいことを始める
ブラウザまたは :mime:ブラウザ:実行中:$ブラウザ: ブラウザで URL を開くには
現在の X ディスプレイ上ですでに実行されています。 $ブラウザ 値です
で一致しました Xブラウザ or tty ブラウザ スタイル。 エスケープシーケンス %b in
スタイルの値はブラウザによって置き換えられますが、 %u 交換されます
URLで。 スタイルが設定されていない場合、すべての新しいインスタンスのデフォルトは次のとおりです。
に相当 %b %u 実行中のブラウザを使用する場合のデフォルトは次のとおりです。
値と同等 kfmクライアント オープンURL %u コンカラーにとって、 Firefoxの
-新しいタブ %u Firefoxの場合 オペラ -新しいページ %u オペラ用、そして %b -リモート
「openUrl(%u)」 他のすべての人のために。
数学的 関数
zcalc [ -もしも ] [ 表現 ...]
zsh の算術評価機能に基づいた、かなり強力な計算機。
構文は、ほとんどのプログラミング言語の数式と似ています。 を見てください
セクション「算術評価」 ズシュミスク詳細は(1)。
非プログラマーは、他の多くのプログラミング言語と同様に、
整数のみを含む式 (` のない定数も含む).'、変数
文字列などの定数、または整数として宣言された変数を含む)は、
デフォルトは整数演算を使用して評価されますが、これは通常のデスクの方法ではありません。
電卓が動作します。 浮動小数点演算を強制するには、オプションを渡します -f; 湖
以下のさらなるメモ。
数学ライブラリ zsh / mathfunc 利用可能な場合はロードされます。 を見てください
セクション「zsh/mathfunc モジュール」 zshモジュール(1)。 数学関数
生のシステム ライブラリに対応するため、三角関数が評価されます
ラジアンなどを使用します。
入力された各行は式として評価されます。 プロンプトには数字が表示されます。
位置パラメータに対応し、その計算の結果は次のようになります。
保管されています。 たとえば、` で始まる行の計算結果は4> '
として利用可能です $4。 最後に計算された値は次のように入手できます。 ANS。 完全なコマンド
以前の計算の履歴を含む行編集が可能です。 の
履歴はファイルに保存されます ~/.zcalc_history。 終了するには、空白行を入力するか、次のように入力します。
`:q' それ自体で (`q' は歴史的な互換性のために許可されています)。
単一のバックスラッシュで終わる行は、その行と同じように扱われます。
コマンドライン編集: バックスラッシュが削除され、関数は追加のプロンプトを表示します。
input (プロンプトの前に ` が付きます)...' これを示す)、行は次のとおりです。
XNUMX つに結合して最終結果が得られます。 また、ここまでの入力であれば、
右括弧よりも開き括弧が多く含まれています zcalc さらに入力を求めるプロンプトが表示されます。
引数が与えられた場合 zcalc 起動時に、最初のいくつかを準備するために使用されます
位置パラメータ。 これは、計算機を使用すると視覚的に表示されます。
開始する。
定数 PI (3.14159...) および E (2.71828...) が提供されます。 パラメータ
代入は可能ですが、すべてのパラメータがグローバルに配置されることに注意してください。
名前空間
出力ベースはオプション ` を渡すことで初期化できます。-#ベース'、 例えば
`zcalc -#16' ('#グロビング オプションによっては、' を引用符で囲む必要がある場合があります
セットする)。
オプション `-e' が設定されている場合、関数は非対話的に実行されます。引数は次のとおりです。
対話的に XNUMX 行ずつ入力したかのように評価される式として扱われます。
オプション `-f' が設定されている場合、すべての数値は浮動小数点として扱われるため、
式「`」の例3/4' は 0.75 ではなく 0 と評価されます。オプションが表示される必要があります
別々の言葉で。
プロンプトはパラメータを介して構成可能です ZCALCPROMPT、標準化を受けています
早速の展開。 現在のエントリのインデックスは、最初のエントリにローカルに保存されます。
配列の要素 psvarで参照できます。 ZCALCPROMPT `として%1v'。 の
デフォルトのプロンプトは `%1v> '.
いくつかの特別なコマンドが利用可能です。 これらはコロンによって導入されます。 のために
下位互換性のため、特定のコマンドではコロンが省略される場合があります。 完了
場合は利用可能です コンパイル が実行されました。
出力精度は、おなじみの特別なコマンドによって zcalc 内で指定できます。
多くの電卓から。
:標準 デフォルトの出力形式。 printfに対応します %g 仕様。
通常、これは XNUMX 桁の XNUMX 進数を示します。
:科学 数字
printf に対応する科学的表記法 %g 出力形式
によって与えられる精度 数字。 これにより、固定小数点または指数関数のいずれかが生成されます
出力される値に応じて表記が異なります。
:修理 数字
printf に対応する固定小数点表記 %f 出力形式
によって与えられる精度 数字.
:英語 数字
printf に対応する指数表記 %E 出力形式
によって与えられる精度 数字.
:生 生の出力: これは、数学的評価からの出力のデフォルト形式です。
これにより、実際の数値よりも高い精度が示される場合があります。
その他の特別なコマンド:
:!ライン...
実行する ライン... 通常のシェルコマンドラインとして。 で実行されることに注意してください。
関数のコンテキスト、つまりローカル変数の場合。 スペースはオプションです
After :!.
:地元 argは ...
関数に対してローカルな変数を宣言します。 特定の変数は次のとおりであることに注意してください。
関数によって独自の目的で使用されます。 他の変数も使用できます。
ただし、それらはグローバル スコープから取得されるか、グローバル スコープに追加されます。
:関数 名 [ ボディ ]
数学関数を定義するか、(なしで) ボディ) 消して。 :関数 かもしれません
と略される :関数 または単に :fを選択します。 名 同じものが含まれる場合があります
文字をシェル関数名として使用します。 関数は次を使用して定義されます
zmathfuncdef、 下記参照。
注意してください zcalc すべての引用を処理します。 したがって、たとえば次のようになります。
:f キューブ $1 * $1 * $1
唯一の引数を XNUMX 乗する関数を定義します。
[#ベース]
これは特別なコマンドではなく、通常の算術構文の一部です。
ただし、この形式が単独で行に表示される場合は、デフォルトの出力基数が使用されます。
に設定されています ベース。 たとえば、「」を使用します。[#16]' XNUMX 進数の出力を表示します
先頭に塩基の指示、または `[##16]' 生のデータを表示するだけです
指定された基数の数値。 基数自体は常に XNUMX 進数で指定されます。
`[#]' 通常の出力形式を復元します。 出力ベースの設定に注意してください
浮動小数点出力を抑制します。 `を使用してください[#]' 通常の動作に戻ります。
追加のヒントについては、関数内のコメントを参照してください。
zmathfuncdef [ 数学関数 [ ボディ ]]
便利なフロントエンド 機能 -M.
XNUMX つの引数を使用して、という名前の数学関数を定義します。 数学関数 使用できる
あらゆる形式の算術評価。 ボディ は次の数式です
機能を実装します。 位置パラメータへの参照が含まれる場合があります $1, $2,
... 必須パラメータを参照し、 ${1:-デフォルト値} ...オプションを参照します
パラメーター。 関数を機能させるには、形式を厳密に遵守する必要があることに注意してください。
引数の正しい数を計算します。 実装はシェル内に保持されます
名前付き関数 zsh_math_func_数学関数; 通常、ユーザーは参照する必要はありません。
シェル関数を直接使用します。 同じ名前の既存の関数はすべてサイレントに実行されます。
置き換えます。
引数を XNUMX つ指定すると、数学関数が削除されます。 数学関数 シェルも同様に
関数の実装。
引数なしですべてをリストします 数学関数 を復元するのに適した形式で機能します。
意味。 関数は必ずしも次のように定義されているわけではありません。 zmathfuncdef.
USER CONFIGURATION 関数
当学校区の zsh / newuser モジュールには、新しいシェルオプションの設定を支援する機能が付属しています。
ユーザー。 モジュールがインストールされている場合、この機能は手動で実行することもできます。 それは
モジュールのデフォルトの動作、つまり新しいモジュールの関数を実行している場合でも利用できます。
起動ファイルなしでのユーザーのログインは禁止されます。
zsh-newuser-install [ -f ]
この機能は、ユーザーにカスタマイズのためのさまざまなオプションを提供します。
初期化スクリプト。 現在のみ 〜/ .zshrc 扱われます。 $ZDOTDIR/.zshrc is
パラメータの場合に代わりに使用されます ズドットディル 設定されています。 これにより、ユーザーは次のことを行うことができます。
既存のファイルを変更せずにファイルを設定する .zshrc.
デフォルトでは、ファイルが見つかった場合、関数はただちに終了します。 .zshenv,
.zプロファイル, .zshrcまたは .zlogin 適切なディレクトリにあります。 オプション -f is
機能を強制的に継続するために必要です。 これは次の場合でも発生する可能性があることに注意してください
.zshrc 自体は存在しません。
現在設定されているように、ユーザーが root を持っている場合、関数はすぐに終了します。
特権; この動作はオーバーライドできません。
一度アクティブにすると、関数の動作は一目瞭然です。 メニュー
が存在すると、ユーザーはオプションとパラメータの値を変更できます。
改善のための提案はいつでも大歓迎です。
スクリプトが終了すると、ユーザーには新しいファイルを保存するか、または
ない; この時点まで、変更は元に戻せません。 ただし脚本は慎重です
ファイルへの変更を ` 行でマークされたグループのみに制限するには# ラインズ
設定された by zsh-newuser-install'と `# 終わり of ライン 設定された by
zsh-newuser-install'。 さらに、古いバージョンの .zshrc ファイルに保存されます
接尾辞付き .zni 添付。
関数が既存のファイルを編集する場合、 .zshrcを確認するのはユーザーの責任です。
加えられた変更が有効になります。 たとえば、コントロールが通常、
既存の .zshrc 行は実行されません。 またはそれ以降の初期化ファイル
オプションやパラメータなどをオーバーライドする可能性があります。 関数自体はそうではありません
そのような競合を検出しようとします。
その他 関数
便利な機能がたくさんあります 機能・その他 zshのディレクトリ
分布。 ほとんどは非常に単純であり、ここで説明する必要はありませんが、いくつかは必要です。
特筆に値する。
説明
色 この関数は、色名をマップするためにいくつかの連想配列を初期化します (そして
ANSI 標準の XNUMX 色の端末コードから。 これらはプロンプトによって使用されます
テーマ システム (上記を参照)。 実行する必要はほとんどありません 色 一回以上。
基本色は以下の XNUMX 色です。 黒, 赤, (緑字), 黄, 青, マゼンタ, シアン,
白。 これらにはそれぞれ前景と背景のコードがあります。 さらにそこに
XNUMX つの強度属性は次のとおりです。 大胆な, かすかな, 傑出した, 下線, 点滅, 逆,
隠す。 最後に、属性を無効にするために使用される XNUMX つのコードがあります。 なし (リセット
すべての属性をデフォルトに戻します)、 通常の (太字でも薄字でもない)、 目立たない,
下線なし, まばたきしない, 逆転なし, 隠さない.
一部の端末では、色と強度のすべての組み合わせがサポートされていません。
連想配列は次のとおりです。
カラー
カラー すべての色の名前をその整数コードにマッピングし、整数コードを
色の名前。 XNUMX つのベース名は、前景色のカラー コードにマップされます。
` の接頭辞が付いた名前fg-'、' などfg-レッド'。 接頭辞「`」が付いた名前バック-',
などバックグラウンドブルー' については、背景コードを参照してください。 からの逆マッピング
コードをカラーに変換すると、前景コードのベース名が生成され、 バック- のフォーム
背景。
これらを「色」と呼ぶのは誤りですが、これらの配列はまた、
名前からコード、コードから名前までの他の XNUMX の属性。
fg
fg_bold
fg_no_bold
XNUMX つの基本色の名前を、設定する ANSI 端末エスケープ シーケンスにマップします。
対応する前景テキストのプロパティ。 の fg シーケンスが変更する
XNUMX つの強度属性を変更せずに色を調整します。
bg
bg_bold
bg_no_bold
XNUMX つの基本色の名前を、設定する ANSI 端末エスケープ シーケンスにマップします。
対応する背景プロパティ。 の bg シーケンスで色が変わる
XNUMX つの強度属性を変更せずに。
さらに、スカラーパラメータ リセットカラー ボールドカラー ANSIに設定されています
すべての属性をオフにして太字の強度をオンにするターミナル エスケープ、
。
フネ [ -x NUM ] 名
と同じ アルファベットのゼット -f。 この関数は zsh ディストリビューションには含まれていませんが、使用できる可能性があります。
リンクして作成したもの アルファベットのゼット 名前に フネ あなたのディレクトリのどこかに fpath.
少なくとも 必要とされる [ 現在 ]
次の形式を持つ XNUMX つの文字列の以上比較を実行します。
zsh のバージョン番号。 つまり、セグメントが区切られた数字とテキストの文字列です。
点またはダッシュで区切ります。 もし 現在 文字列が提供されていない場合、 $ ZSH_VERSION 使用されている。
セグメントは、先頭に数字以外の部分が付いた XNUMX つの文字列内で左から右にペアになっています。
無視されました。 一方の文字列のセグメントが他方の文字列より少ない場合、欠落しているセグメントは次のようになります。
ゼロとみなされます。
これは、起動ファイルでオプションやその他の状態を設定するのに役立ちます。
zsh のすべてのバージョンで利用可能です。
少なくとも 3.1.6-15 && セトプト NO_GLOBAL_RCS
少なくとも 3.1.0 && セトプト HIST_REDUCE_BLANKS
少なくとも 2.6-17 || 印刷 "あなた することはできません つかいます 少なくとも ここ。"
nslookup [ argは ...]
このラッパー関数は、 nslookup コマンドには次のものが必要です zsh / zpty モジュール (参照
zshモジュール(1))。 標準とまったく同じように動作します nslookup それを除いて
カスタマイズ可能なプロンプト (右側のプロンプトを含む) と完了を提供します。
nslookup コマンド、ホスト名など (関数ベースの補完を使用する場合)
システム)。 補完スタイルはコンテキスト接頭辞を使用して設定できます。
`:完了:nslookup'.
参照してください ページャ, プロンプト プロンプト 以下のスタイル。
正規表現置換 VAR 正規表現 replace
正規表現を使用して、グローバルな検索と置換操作を実行します。
変数。 オプションの場合 RE_MATCH_PCRE 設定されていません。POSIX 拡張通常
式が使用され、それ以外の場合は Perl 互換の正規表現が使用されます (これには
に対してリンクされるシェル PCRE 図書館)。
VAR 照合する文字列を含む変数の名前です。 変数
関数によって直接変更されます。 変数 MATCH, ムベギン, 繕う,
match , 始まります, 修復 これらは正規表現で使用されるため避けてください。
コード。
正規表現 文字列と照合する正規表現です。
replace は置換テキストです。 これにはパラメータ、コマンド、および
置換される算術式: 特に、への参照
$ MATCH パターンに一致するテキストに置き換えられます。
戻りステータスは、少なくとも 0 つの一致が実行された場合は 1、それ以外の場合は XNUMX です。
実行ヘルプ CMD
この関数は、 実行ヘルプ ZLE ウィジェットの代わりに
デフォルトのエイリアス。 セットアップ手順については、上記の「オンライン ヘルプへのアクセス」を参照してください。
以下の議論で、もし CMD はファイル システム パスです。最初に縮小されます。
その右端のコンポーネント (ファイル名) に。
まずヘルプを求めるには、次の名前のファイルを探します。 CMD によって指定されたディレクトリ内
ヘルプディレクトリ パラメータ。 ファイルが見つからない場合は、アシスタント関数、エイリアス、またはコマンド
命名 走って~助けて~CMD is 求めた。 If 見つかった、 アシスタント is 実行された 残り of
現在 command ライン (すべて After command 名 cmd) as その 引数
日時 どちらもありません file また アシスタント is 見つかった、 外部 command `man cmd' is 実行されます。
「ssh」コマンドのアシスタントの例:
実行ヘルプ-ssh() {
エミュレートする -LR zsh
ローカル -a 引数
# 削除 "-l ユーザー名」 オプション
zparseopts -D -E -a 引数 l:
# 削除 その他 オプションは、 出発: host command
args=(${@:#-*})
if [[ ${#args} -lt 2 ]]; その後
man ssh
ほかに
実行ヘルプ $args[2]
fi
}
これらのアシスタントのいくつかは、 機能・その他 ディレクトリ。 これら
順序どおりに自動ロードするか、実行可能スクリプトとして検索パスに配置する必要があります。
によって見つけられ、使用される 実行ヘルプ.
実行-ヘルプ-git
実行-ヘルプ-svk
実行-ヘルプ-svn
のアシスタント機能 git, svk, SVN コマンド。
テトリス Zsh はかつて、テトリスが欠けていたため、Emacs ほど完全ではないと非難されました。
ゲーム。 この関数は、この悪質な中傷に反論するために作成されました。
この関数は ZLE ウィジェットとして使用する必要があります。
オートロード -U テトリス
ズレ -N テトリス
バインドキー キー テトリス
ゲームを開始するには、次のように入力してウィジェットを実行します。 キー。 どのようなコマンドラインを使用しても
編集していた内容は一時的に消え、キーマップも一時的に置き換えられます
テトリスのコントロールキーで。 終了すると、以前のエディターの状態が復元されます。
ゲーム (` を押すことにより)q')または負けたとき。
ゲームの途中で終了した場合、次の呼び出しは テトリス ウィジェットは
中断したところから続行します。 負けた場合は新しいゲームが始まります。
テトリスクルス
これは上記のものを zcurses に移植したものです。 入力処理が少し改善されましたので、
ブロックを横に移動しても自動的にタイムステップは進みません。
グラフィックスは Unicode ブロック グラフィックスを使用します。
このバージョンでは、呼び出し間のゲーム状態が保存されず、呼び出されません。
ウィジェットとしてではなく、次のようになります。
オートロード -U テトリスクルス
テトリスクルス
ザグス [ オプション ... -- ] [ ...] [ -- command [ argは ...]]]
この関数は、GNU xargs と同様の目的を持っています。 の行を読む代わりに、
標準入力から引数を取得する場合は、コマンドラインから引数を取得します。 これは
zsh は、特に再帰的 glob 演算子を使用すると、多くの場合、
シェル関数のコマンドラインが受け入れられる長さを超えています。
外部コマンド。
当学校区の オプション リストはオプションを表します ザグス コマンド自体は同じです
のそれらとして xargsを選択します。 list は文字列 (多くの場合はファイル名) のコレクションです。
の引数になります command、の標準入力に似ています。 xargs.
最後に、 argは list は渡される引数 (通常はオプション) で構成されます。
から command 実行するたびに。 の argは list は、からの要素の前に置かれます。
各実行のリスト。 いいえの場合 command が提供されている場合は、いいえ argは リストはかもしれない
提供されており、その場合のデフォルトのコマンドは `印刷' 引数あり '-r --'.
たとえば、長くするには ls 現在のディレクトリ内のすべてのプレーン ファイルのリスト
またはそのサブディレクトリ:
オートロード -U ザグス
ザグス -- **/*(.) -- ls -l
`に注意してください--' は、終了をマークするために使用されます。 オプション リストを作成して終わりをマークする
リストにあるため、常に XNUMX 回出現する必要があります。 リストは空である可能性があります。
少なくとも XNUMX つあることが保証されている場合 そして最初の 始まらない
`で-'、次に最初の `--'は省略可能です。
文字列 `--' であるか、またはその可能性があります -e オプションを使用することもできます
入力終了マーカーを変更します。 これは次のことを行うことに注意してください 変更
オプションの終了マーカー。 たとえば、`を使用するには..' をマーカーとして使用します。
ザグス -e.. -- **/*(.) .. ls -l
プレーン ファイルには ` という名前を付けることができないため、この例ではこれが適切な選択です。..'、 しかし
最適なエンドマーカーは状況によって異なります。
オプション -i, -I, -l, -L, -n での使用法とは若干異なります xargs.
の入力行はありません ザグス 数えるから -l -L 数えてみる
リスト、および -n の各実行に渡される引数の数をカウントします。 command,
配合工業用化学製品の どれか argは リスト。 また、いつでも -i or -I それぞれが使用されます 処理されます
` のように個別に-L 1'.
その他の詳細については ザグス オプションについては、を参照してください xargs(1) (ただし、次の違いに注意してください)
間の関数 ザグス xargs)または実行します ザグス - 助けて オプションを選択します。
アルファベットのゼット [ -f [ -x NUM ]] 名
アルファベットのゼット -b この関数は、ZLE エディタを使用してファイルまたは関数を編集します。
唯一 名 引数は許可されます。 もし -f オプションが与えられると、名前が取られます
関数のものであること。 関数が自動ロード用にマークされている場合、 アルファベットのゼット を検索
それで fpath そしてそれをロードします。 この方法で編集した機能がインストールされることに注意してください
現在のシェルに入りますが、 オートロード ファイルに書き戻されます。 この場合
-x オプションは、先頭のタブが次に従って関数をインデントすることを指定します。
構文は指定された数のスペースに変換される必要があります。 `-x 2'は一貫しています
シェルとともに配布される関数のレイアウトを使用します。
無し -f, 名 編集するファイルのパス名です。存在する必要はありません。 それはです
必要に応じて、書き込み時に作成されます。
編集中に、この関数はメイン キーマップを次のように設定します。 アルファベットのゼット および vi コマンドのキーマップ
〜へ ゼドヴィcmd。 これらは既存のものからコピーされます メイン vicmd キーマップの場合
最初からそれらは存在しません アルファベットのゼット が実行されます。 特別なサービスを提供するために使用できます。
zed でのみ使用されるキー バインディング。
キーマップを作成すると、 アルファベットのゼット return キーを再バインドして改行を挿入し、
`^X^W' で編集を受け入れるには アルファベットのゼット キーマップとバインド `ZZ' 編集を受け入れるには
ゼドヴィcmd キーマップ。
バインディングのみを実行することでインストールできます。アルファベットのゼット -b'。 これは、次のような場合に適しています。
スタートアップファイルに入れます。 再実行すると、既存のファイルが上書きされることに注意してください。
アルファベットのゼット ゼドヴィcmd キーマップ。
補完が利用可能で、コンテキスト接頭辞を使用してスタイルを設定できます。
`:完了:zed'.
zle ウィジェット zed セットファイル名 利用可能です。 これは、から名前で呼び出すことができます
zed 内で ` を使用\元 zed セットファイル名' (ただし、zed のせいであることに注意してください)
再バインディングを入力する必要があります ^j return キーの代わりに最後に入力することもできます)。
いずれかのキーにバインドされます。 アルファベットのゼット or ゼドヴィcmd ` の後のキーマップアルファベットのゼット -b'となった
走る。 ウィジェットが呼び出されると、ファイルの新しい名前の入力を求めるプロンプトが表示されます。
編集されました。 zed が終了すると、ファイルはその名前と元の名前で書き込まれます。
ファイルはそのまま残されます。 ウィジェットは ` には効果がありません。アルファベットのゼット -f'.
一方、 zed セットファイル名 実行中、zed はキーマップを使用します zed-normal-keymapボタンの隣にある
zed がバインディングを初期化した時点で有効なメイン キーマップからリンクされています。
(リターンキーを正常に動作させるためです。) その結果、メイン
キーマップが変更されているため、ウィジェットは認識しません。 これはほとんどの人にとっては心配ありません
ユーザー。
zcp [ -finqQvwW ] srcpat dest
ズルン [ -finqQsvwW ] srcpat dest
と同じ zmv -C zmv -L、 それぞれ。 これらの関数は zsh には表示されません。
配布されていますが、リンクすることで作成できます zmv 名前に zcp ズルン 一部で
あなたのディレクトリ fpath.
zkbd 上記の「キーボードの定義」を参照してください。
zmv [ -finqQsvwW ] [ -C | -L | -M | -{p|P} プログラム ] [ -o オプト文字列 ]
srcpat dest
パターンに一致するファイルを移動 (通常は名前変更) srcpat 対応するファイルに
によって与えられた形式の名前を持つ destここで、 srcpat 括弧が含まれています
周囲のパターンが順番に置き換えられます。 $1, $2、 ... で dest。 のために
例、
zmv '(*).lis' 「$1.txt」
` の名前を変更しますfoo.lis' から 'foo.txt'、 `私の古いものリス' から '私の古いもの.txt'、 など
に。
パターンは常に EXTENDED_GLOB パターン。 次の名前のファイル
置換によって変更されないものは単に無視されます。 エラー (置換)
結果が空の文字列になった場合、XNUMX つの置換で同じ結果が得られた場合、
宛先は既存の通常ファイルであり、 -f 与えられなかった) 全体の原因となる
何もせずに中止する関数。
パターンの置換に加えて、変数 $f で参照できます
XNUMX 番目の (置換) 引数。 これにより、変数置換が使用できるようになります。
議論を変えること。 以下の例を参照してください。
オプション:
-f 宛先ファイルを強制的に上書きします。 現在は引き継がれていません
mv/cp/ln 実装の気まぐれによるコマンド (ただし、次のコマンドを使用できます) -の 〜へ
それを行う)。
-i インタラクティブ: 実行される各行を表示し、実行するかどうかをユーザーに尋ねます。
それを実行します。 `Y'または `y' を指定すると実行され、それ以外の場合はスキップされます。 注記
XNUMX 文字を入力するだけで済みます。
-n 実行なし: 何が起こるかを出力しますが、実行しません。
-q 裸の glob 修飾子をオフにします: 現在はデフォルトで想定されているため、これには何もありません
効果。
-Q 裸の glob 修飾子を強制的にオンにします。 実際にそうでない限り、これをオンにしないでください
パターン内で glob 修飾子を使用する。
-s 象徴的であり、受け継がれている ln; でのみ動作します -L.
-v 詳細: 実行中の各コマンドを出力します。
-w 上で説明したように、パターンのワイルドカード部分を暗黙的に抽出します。
それらを参照するには括弧を追加します。
-W と同じように -w、置換にワイルドカードを使用する機能が追加されました。
パターンをシーケンシャルに ${1} .. ${N} 参照。
-C
-L
-M 強 cp, ln or mv、関数の名前に関係なく、それぞれ。
-p プログラム
コール プログラム cp, ln or mv。 何をするにしても、少なくとも
`という形式を理解するプログラム -- 古い名前 新しい名前' どこ 古い名前 新しい名前
によって生成されたファイル名です zmv. プログラム 単語に分割されるので、
たとえば、アーカイブ ツールの名前にコピーまたは名前変更のサブコマンドを加えたものです。
-P プログラム
As -p プログラム、 それ以外で プログラム フォローは受け付けません -- 〜へ
オプションの終了を示します。 この場合、ファイル名はすでに
問題のプログラムの正常な形式。
-o オプト文字列
当学校区の オプト文字列 単語に分割され、逐語的に伝えられます。 cp, ln or
mv 作業を実行するために呼び出されるコマンド。 おそらく ` で始まるはずです-'.
さらなる例:
zmv -v '(* *)' '${1// /_}'
現在のディレクトリ内の名前に少なくとも XNUMX つのスペースがあるファイルについては、次のように置き換えます。
すべてのスペースをアンダースコアで区切って、実行されたコマンドを表示します。
zmv -v '* *' '${f// /_}'
これは、に保存されているファイル名を参照することでまったく同じことを行います。 $f.
より完全な例とその他の実装の詳細については、 zmv source
ファイル。通常は、 fpath、またはで
機能/その他/zmv zsh ディストリビューション内。
z再コンパイル
上記の「関数の再コンパイル」を参照してください。
ズスタイル+ コンテキスト 値 [ + サブコンテキスト 値 ...]
これにより、単一の ` を使用するだけでスタイルの定義が少し簡単になります。+' 特別なトークンとして
これにより、以前に使用したコンテキスト名にコンテキスト名を追加できます。 のように
この:
ズスタイル+ ':foo:バー' style1 value1 \
+':バズ' style2 value2 \
+':フロブ' style3 value3
これにより定義されます style1 value1 文脈のために :foo:バー いつものようにですが、それも
定義 style2 value2 文脈のために :foo:バー:バズ style3 value3 の
:foo:バー:フロブ。 どれか サブコンテキスト 最初のコンテキストを再利用する場合は空の文字列にすることもできます
変更なし。
スタイル
インサートタブ
当学校区の アルファベットのゼット function セット コンテキスト内のこのスタイル `:完了:zed:*' 電源を切るために
完了時 TAB 行頭に入力されます。 これをオーバーライドすることもできます
このコンテキストとスタイルに独自の値を設定します。
ページャ 当学校区の nslookup 関数はコンテキスト内でこのスタイルを検索します `:nslookup' 決定する
XNUMX つの画面に収まらない出力を表示するために使用されるプログラム。
プロンプト
プロンプト
当学校区の nslookup 関数はコンテキスト内でこのスタイルを検索します `:nslookup' を設定するには
それぞれプロンプトと右側のプロンプトです。 通常の展開では、 PS1
RPS1 パラメータを使用することもできます (「プロンプト シーケンスの拡張」を参照してください)。 ズシュミスク(1))。
onworks.net サービスを使用してオンラインで zshcontrib を使用する