6

:shellを使用して、現在のディレクトリを入力し、コマンドを実行できます。bash_completionは正常に機能します。

しかし、bash_completionをどのように機能させるか:!コマンドまたは:r!コマンドケース?

。私はEmacsユーザーでEmacsM-です!コマンドはそのようなことを許可しません(Mxシェルも、 bash_completionを取得するにはMx用語が必要です)。

4

2 に答える 2

2

それは不可能。@Prince Goulashが参照しているのは、vim自体によって行われる単純なファイル名の補完です。bashを強制的に完了バリアントをパイプする方法を知っている場合は、カスタムコマンドの完了関数を作成して、組み込みを呼び出すことができますが :!、組み込みコマンドの完了を再定義することはできません。

私は個人的にbashでこれを行う方法を知りません。また、zshでこれを行おうとするとcompadd、pexpect(python)、Expect(perl)、expect(tcl)を使用して、zsh組み込みコマンド(など)を再定義するダーティハックが発生することを知っています。 、zsh / zptyまたはインタラクティブモードでシェルを実行し、zsh-> vim IPCメカニズムを発明するのに似たもの(反対方向でははるかに簡単です)(私はかつてzshの同様のモジュールで作業を開始しましたが、問題が多すぎたため停止しましたこのように)。

于 2011-07-23T22:59:46.683 に答える
1

あなたは持っていますか

set nocompatible

あなたの.vimrcで?これにより、のex-mode完了が自動的に有効になります:!。可能な完了のリストを表示するには、次を使用することもできます

set wildmenu

オプションを調査しwildmodeます。

于 2011-07-23T13:27:14.950 に答える