Vimにファイル名の通常の(Bashのような)タブ補完を実行させるにはどうすればよいですか?


289

Vimで新しいファイルを開いてタブ補完を使用すると、Bashのように部分一致を行う代わりに、ファイル名全体が補完されます。このファイル名のタブ補完をBashのように機能させるオプションはありますか?


10
技術的に言えば、「bash」がタブ補完を行わないことは確かです。それを行うのはreadlineです。
Maxy-B 2012

2
^ X ^ F機能の動作のカスタマイズについて話していますか?
BrunoJCM 2015

回答:


413

個人的に使用

set wildmode=longest,list,full
set wildmenu

最初のタブヒットを入力すると、可能な限り完了します。2番目のタブヒットはリストを提供します。3番目以降のタブは補完オプションを循環するため、追加のキーなしでファイルを完成できます。

バッシュライクは

set wildmode=longest,list 

しかし、フルは非常に便利です。


1
これがvimのデフォルトの動作であるといいのですが。私はこの投稿を見るまで、完全なタブ補完に取り掛かることはできませんでした。
Neha Karanjkar 2013年

6
@NehaKaranjkar新しい環境での展開を容易にするために、ドットファイルアーカイブを維持することをお勧めします
マイケル

2
結果が少ない場合にのみ完全に開始する方法はありますか?のようなものset wildmode=longest,5full,list。たくさんの結果があると、結果は完全に役に立たなくなりますが、非常に便利です。「完了が1行の画面に収まる場合にのみ完全に表示する」のようなもので完璧です
albfan

1
これは以前は機能していた(gVim / ubuntu)が、現在は機能していない(macvim8.x / macOS)。例を参照してください。何か案は?
Paschalis 2016

1
2か月間のoriginタブの完成を許容した後、私はそれを簡素化する方法があるに違いないと思います。ありがとうございました。
ramwin 2018

23

Bashの完了に最も近い動作は

set wildmode=longest:full,full

いくつかの文字を入力し、タブを1回押すと、で使用できるすべての一致が表示されwildmenuます。これは、コマンドラインの下にクイックフィックスのようなウィンドウを開くMichaelの回答とは異なります。

次に、残りの文字を入力し続けるか、もう一度Tabキーを押して、最初の一致でオートコンプリートし、その周りを囲みます。


私はこの方法を好むと思います。
Eddy Ekofo

8

ワイルドメニューを設定したくない場合は、ファイルを開きたいときにいつでもCtrl+ を押すことができLます。Ctrl+ LはBash補完のようにファイル名を補完します。


Ctrl-Lはbashオートコンプリートのように機能しません。すべての可能なオプションを循環するわけではありません。
レイン

2
私のbash そのように振る舞います。<Tab>CTRL-LVimのように)明確に可能な限り現在の文字列を完成させ、(Vimのように)<Tab><Tab>可能な一致のリストを表示しますCTRL-D
glts 2012年

8

提案されたワイルドモード/ワイルドメニューの他に、VimはCtrl+ を使用してすべての可能な補完を表示するオプションも提供しますD。これは、私と同じようにVimでさまざまなオートコンプリートオプションを検索するときに、この質問に出くわした一部のユーザーにとって役立つ場合があります。


4

Ctrl+ Nを介してVimでオートコンプリートを使用して現在のバッファを検索していると想定しています。このコマンドを使用すると、ソリューションのリストが表示されます。コマンドを繰り返すだけで、リスト内の次のアイテムに移動します。同じことがすべてのオートコンプリートコマンドにも当てはまります。それらが単語全体を埋めている間、使用したいものに到達するまで、リスト内を移動し続けることができます。

これはより便利なコマンドかもしれません:Ctrl+ P。唯一の違いは、Ctrl+ Pは前方を検索しながらCtrl+ Nは後方を検索するということです。


0

を使用してみてください:set wildmenu。それとは別に、あなたが何をしようとしているのか正確にはわかりません。

ああ、そうです、そしておそらくこのリンクを試してください:link

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.