コマンドのオートコンプリートから戻る


7

タイプ:e foo/**/foo*.jsしてタブを押すと、vimは* sをファイルパス内のすべての可能な候補で置き換えます。十分に具体的ではないことに気づき(オートコンプリートには結果が多すぎる)、オートコンプリートの提案から戻って:e foo/**/foo*.js

私のワイルドメニュー設定は:

set wildmenu
set wildmode=longest:full,full,full
set nowildignorecase

タブを押す前に持っていたものに戻るためのキーはありますか?

回答:



1

wildmode = fullを設定した後、shift-tabを押すと元の正規表現に戻ります。完全なワイルドモードのドキュメントは

「完全」次の完全一致を完了します。最後の一致の後、元の文字列が使用され、次に最初の一致が再度使用されます。

もともと、私のワイルドモードはwildmode = longest:full、full、fullでした。元の正規表現に戻るには、タブ、タブ、シフトタブの順でした。2つのタブを作成しなければならなかった理由は、最初のタブで最長の時間を費やしたためです。

"longest:full" "longest"と同様ですが、有効になっている場合は 'wildmenu'も開始します。

このドキュメントに基づくと、それはlongest:fullのように見えます。元の正規表現に戻るオプションはありません。2回目のタブ移動では、ワイルドメニューの最後に元の文字列を使用するため、完全に表示されました。このため、Shiftキーを押したまま2つのタブを押すと、元の正規表現に戻ります。


1

私はこれを偶然見つけ、「ワイルドモード」設定の(私の意見では)間違ったデフォルトを変更するよう主張しました。

とにかく、このことについて話し合っているときに、CtrlP完了したところから戻るように押されることができると言われました。これにより、戻って完了内容を変更できます。代わりにを押すこともできますShiftTabが、ターミナルでは機能しない可能性があります。


ありがとうございました。Shift Tabが完了したところから戻るとは思いもしませんでした。それは正確に私を取り戻すわけではありませんが、もし私がfoo / ** / foo *なら、タブ、シフトタブ、タブです。foo / ** / foo *に戻ります。それがこのように機能する理由を説明できますか?私はそれが私のワイルドモード設定で最も長く、そして完全であることと関係があると思います。
user2453676

申し訳ありませんが、あなたの問題がここにあるかわかりません。
クリスチャンブラバンド

@ChristianBrabandt <cp>は<s-tab>として機能するので、複数の<tab>を実行した場合、<cp>は正確に元の状態に戻すことはできません。戻るには、<cp>を押し続ける必要があります。ここではあなたの答えは正しくないと思います。
クラウス

@ user2453676タブ補完は、実際には、最初の正規表現(または何か)に一致するリストで機能します。次に、これらすべてのリストで<tab>または<s-tab>を使用できます。したがって、リスト要素0から<tab>を押すと、リスト要素1に移動します。リスト要素1から<s-tab>を押すと、リスト要素0に移動し、もう一度<s-tab>を押すと、基本的にリストの最後の要素であるリスト要素-1に移動します。それがあなたの質問のように機能する理由です。最長、完全なワイルドモードは、好みに応じてタブ補完を機能させるためのフラグです。
クラウス

@EnanAjmain正解です。なぜあなたはそれが正しくないと言っているのか分かりません。コマンドラインを完了する前に、どこにいるか<C-P><s-Tab>取得します。そしてそれが問題でした
クリスチャンブラバンド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.