とともにgrep私はさまざまな組み合わせを使用する傾向があります。-irln1つ以上の同じファイル形式を含めることを制限します。py、js、HTML、CSS。
例えば
grep -ril --include=*{html,css}
私は、次の形式で使用するgrepのさまざまな順列のエイリアスセットを定義しています。
grep.[options].[extensions]
この場合、約100個のエイリアスを生成するためにオプションの組み合わせを繰り返すPythonスクリプトを使用してエイリアスファイルを生成します。そのうちのいくつかは次のとおりです。
alias grep.il.html-css='grep -ril --include=*{html,css}'
alias grep.il.html-css='grep -ril --include=*{html,css}'
alias grep.il.html-js='grep -ril --include=*{html,js}'
alias grep.iln.html-js-css='grep -riln --include=*{html,js,css}'
(また、すべてnode_modulesディレクトリを除外します。簡潔にするために隠しましたが、これらのエイリアスが必要な理由がわかります!)
ピリオドを書く理由は完成のためほぼこれは、IDEでオブジェクトのプロパティを入力するのと似ていますが、まったく同じではありません。ここで助けが必要です。
Tabキーは、最初に見つかった完全なコマンドを選択しようとします。完全に停止するまでオプションを循環したい(必要に応じて現在の名前空間で)。
現在、次のように入力すると(Mint / Ubuntu / Debian bashのデフォルトは触れません):
grep.i
その後、タブをクリックすると次に直接移動します。
grep.i.css
そして私はこれをしないで、次の期間に最初に到達するまで利用可能なオプションを循環したいと思います。
grep.i
grep.il
grep.in
grep.iln
grep.l
grep.n
を押すと対応するオプションが選択され、タブは利用可能なオプションを循環します。例:
grep.il.css
grep.il.css_html
grep.il.css_js_html
可能ですか?望ましいですか?
私はbashを使用しており、これが唯一の方法である場合はzshellに移動することを検討します。
修正する:
各中間エイリアスに対してスタブエイリアスを作成するためのいくつかのトリックを使用して、この状況を改善できます。上記の例では、次のようになります。
alias grep.='echo stub'
alias grep.il.='echo stub'
これはピリオドで停止しますが、完了すると空白が追加されるため、次のようになります。
「グレブ」
ターミナルから。それでもTabキーを押してオプションを循環させることができますが、入力を開始する前にバックスペースを実行する必要があります。それ以外の場合は、次の結果が表示されます。
"grep.i"
main.py hello
.
答え1
次の環境で動作させる方法は次のとおりですzsh
。
autoload -Uz compinit && compinit
bindkey '^I' complete-word
zle -C complete-word complete-word complete-word
complete-word() {
_main_complete
(( compstate[unambiguous_cursor] > ${#:-$PREFIX$SUFFIX}+1 )) \
&& compstate[insert]='automenu-unambiguous'
compstate[list]='list force'
}
zstyle ':completion:*:complete:*' show-ambiguity '07'
その後、入力してタップgrep
するとtab次のようになります。
tabその後、表示された完了プロセスを循環しながら長押しできます。
または、強調表示されている文字の1つを入力してtabもう一度押すと、リストされた完成に一般的に使用される次の文字セットを挿入できます。
次にtabもう一度押すと、新しい補完リストが表示されます。
その他など泡立て、すすぎ、繰り返します。