2つのファイルがあります。
$ ls
file1 file2
私はそれらをと比較したいと思いますdiff
。 「diff file1 f」と入力すると、完成システムは次の2つのファイルを提供します。
diff file1 file<TAB>
file1 file2
file1
すでに使用されている場合は、完成機能を再提供しないことを完成システムに伝えることができますか?
たぶん構文を使ってこれを行う簡単な方法がありますかzstyle
completion
?
zstyle ':completion:*'
ベストアンサー1
開いているignore-line
スタイル:
zstyle ':completion:*:complete:diff:argument-*:*' ignore-line true
または、完成機能を変更します。
_diff () {
local ignore
ignore=($words[2,$#words])
_diff_options "$words[1]" ':original file:_files -F ignore' ':new file:_files -F ignore'
}
(このアプローチは、以下を単純化したものです。_rm
する。 )
どちらの方法も完成機能が提供されていますが、提供されていない一般的な状況に対処します。どちらの方法も、などのすべての極端なケースを処理しません。最初の方法には、完了名が指定されたファイルを提供しないという欠点があります。このスタイルは、コマンド名を含むすべての単語を無視するためです。diff bar baTab
baz
bar
diff bar ./baTab
./bar
bar
diff
ignore-line