vim
などのエディタでは、(vim)や(emacs)などのショートカットを使用して、同じバッファ内の別の単語を使用して現在の単語のオートコンプリートを実行できますemacs
。C-p
M-/
シェルで同じ機能を達成することは可能ですか?前のコマンドの出力にいくつかの単語が表示され、他のコマンドを入力している間にその単語をすばやく自動補完したいと思います。
明確にするために、例えば、
$ ls
Desktop/ Mail/ music/ osx@ something_with_a_pretty_long_name
$ someth
ここでショートカットを押して、私が入力した内容を自動補完できるようにしたいですsomething_with_a_pretty_long_name
。
編集者:写真。ファイル名の使用は、私が求めているもののひどい例です。次の2番目の例を考えてみましょう。
$ cat /var/log/something.log
[19:30] Service started
[19:35] Something else happened
$ happ
私の端末バッファに表示されるので、「happ」を「起きた」に自動補完できます。これが私が求めていることが明確になることを願っています。
ベストアンサー1
短い答え:いいえ、クラシックシェルには当てはまりません。通常、zsh
シェルbash
と端末は異なるエンティティであるためです。
長い答え:おそらく。通常、コマンドを入力してキーを押しますEnter。これはシェルです。フォークそして指定されたコマンドを実行します。それから殻にいいえ何が起こっているのかを知ると、シェルはターミナルや他のものに書き込む他のプログラムを起動した場合、ターミナルに何を書くのか、実行されたプログラムが何をしているのかわかりません。
問題に対する考えられる解決策は2つあります。
- 実行されたコマンドのすべての出力をキャプチャし、目的を達成するために何らかの方法で使用します(完了できますが実行しないでください)。
- 他の端末サポートを使用「町田」「シェルバッファ」から。
2の解決策は、たとえばemacsを使用し、通常は端末で作業しているかのようにmulti-term
使用することMです。/他の端末でも同様のソリューションを提供できます。
ところで、この仕上げが必須ですか?これで、シェルの完成により、マニュアルページ、コマンド、PID、ソケット、コマンドオプション、リモートシステムのファイルパスなどを完了できます。これはあなたのユースケースに十分であるかもしれませんし、特定の問題に合わせて改善されるかもしれません。