Vimでのオートコンプリート


258

長い「トレーニング」の後、ようやくVimに切り替えました。しかし、オートコンプリートに問題があります。入力中にコードを提案するにはどうすればよいですか?

私は通常、PHP、Ruby、HTML、C、CSSを開発しています。

回答:


144

AutoComplPopのようなプラグインを使用して、入力時にコードの自動補完を取得できます。

2015編集:私は現在、個人的にYouCompleteMeを使用してます。


10
これを強くお勧めします。CX CO、CP、CNを入力する手間を省きます。
Amjith、2011年

...他のスクリプトとの競合はおそらくあります..私はこれを試してみたが、仕事をしないようだ
diegocstn

1
〜/ .vim内の指定されたディレクトリにファイルを配置していますか?
michaelmichael

1
@dieguitoweb ACPは、デフォルトですべてのファイルタイプで機能するわけではありません。JavaScript、ActionScript、PHPで動作させるには、「ハック」する必要があります。ここでは、その方法を説明します。そして、ここにPHPの別のヒントがあります。
romainl 2011年

今では動作します:)すべてのファイルはすでに正しいディレクトリにありました。私はスクリプトをgitリポジトリからの新しいダウンロードに置き換えただけで、今は問題ありません。感謝します
diegocstn 2011年

438

挿入モードでCtrl- Nを使用して、単語候補のリストを取得します。入力:help i_CTRL-Nすると、この機能に関するVimのドキュメントが表示されます。

ここではVimの中にPythonの辞書をインポートする例です。


15
おかげでこれは素晴らしいですが、どうすれば<ctrl + N>を押さずにこのリストを自動化できますか?
diegocstn 2011年

5
それは、彼が言及したプラグインでマイケルマイケルがあなたに言っていたものです。また、SuperTabもご覧ください。
projecktzero

4
CSSサポートについては、.vimrcに 'set iskeyword + =-'を追加して、組み込みオートコンプリートのダッシュを追加します
mahalie

3
これが最も包括的でネイティブな方法です:-)
Srikant

5
@ Hi-Angelの「自動」部分は、単語の補完オプションを自動的に決定し、オプションの選択時に単語を自動的に競合させることです。
CJBS 2015年


11

内蔵omnifunc設定からスタートできます。

ちょうど置く:

filetype plugin on
au FileType php setl ofu=phpcomplete#CompletePHP
au FileType ruby,eruby setl ofu=rubycomplete#Complete
au FileType html,xhtml setl ofu=htmlcomplete#CompleteTags
au FileType c setl ofu=ccomplete#CompleteCpp
au FileType css setl ofu=csscomplete#CompleteCSS

あなたの一番下に.vimrc、その後、入力し<Ctrl-X><Ctrl-O>、挿入モードで。

私は常にこのCSSの完成に依存しています。


どういうsetl意味ですか?ありがとう。
2013

わかりました、それはsetlocalを意味します。しかし、なぜここでsetlocalが必要なのでしょうか。
2013

同じバッファで別のファイルを開いたときの煩わしさを見てください。
ernix 2013

2
@ernixリンクから:Vimのバッファーは...ファイルの開いているインスタンスです...バッファー、ウィンドウ、タブについて知っています。しかし、同じバッファで別のファイルを開くことについては知りません。ファイルを開くと、常に新しいバッファーで開かれ、そのバッファーがバッファーリストに追加されるようです。クイックフィックスリストなど、バッファの使用方法は他にもあることは知っていますが、バッファ内のファイルの変更については知りませんでした。:h buffers言う:バッファは編集のためにメモリに読み込まれたファイルです。とはいえ、私はVimを3か月間しか使用していません。そして、間違いなく修正にオープンです。
JakeD 2018

1
@JakeDああそう。あなたが正しい。私は間違った方法を意味する「インスタンス」を取った。異なるPIDを持つプロセスについて話していると誤解しました。申し訳ありませんが、私が言ったことを忘れてください。
ernix


6

私は最近OniVimと呼ばれるプロジェクトを発見しました。これは、NeoVimの電子ベースのフロントエンドであり、すぐに使用できるいくつかの言語用の非常に優れたオートコンプリートを備えています。これは基本的にNeoVimのラッパーにすぎないため、vimの全機能を利用できます。 GUIがニーズを満たさない場合は自由に使用できます。それはまだ開発の初期段階ですが、急速に改善しており、その周りには本当に活発なコミュニティがあります。私は10年以上vimを使用しており、数週間前にOniにテストドライブを提供し始めましたが、そこにはいくつかのバグがありますが、私の邪魔にはなりません。まだvim-fingerを取得している新しいvimユーザーに強くお勧めします!

ここに画像の説明を入力してください

OniVim:https ://www.onivim.io/


32
私にとってvimの全体のポイントはターミナルを使用しています... electronアプリを使用したい場合は、vscodeを使用してvim拡張子を付けます..
Mohamed Benkedadra

2
@MohamedBenkedadraしかし、それで本当にVimの全力を手に入れることができるでしょうか?私はたまたま、その検索と置換のパターンシステムの大ファンであり、vimエミュレーションプラグインがそれをサポートしていたとしたら、うれしい驚きです。
SilverWolf-モニカを

3

neocomplcacheを約半年使ってきました。これは、すべてのバッファー内の単語のキャッシュを収集し、自動補完するためにそれらを提供するプラグインです。

前のリンクのプロジェクトページに一連のスクリーンショットがあります。Neocomplcacheには多くの設定オプションがあり、プロジェクトページにも基本的な例があります。

より詳細な情報が必要な場合は、私のvimrcの関連セクションを参照してください。neocomplcacheという単語を検索してください。


1

こちらがリンクです!PHP用。

一部のPHP関数を記述しているときに、Ctrl + xを押してからCtrl + oキーを押します。

チュートリアルのOseems Solutionsに感謝


1

現在のバッファーのキャッシュからオートコンプリートのみを実行したい場合、supertabneocompleteよりも簡単にインストールでき、MacVimを使用せずにMacのプレインストールされたvimをそのまま使用できます。

vim awesomeで他の選択肢を確認できます。


0

PHPの場合は、パダワンDeopleteは Neovimで堅牢なPHPの自動補完を持つための素晴らしいソリューションです。色んなことを試しましたが、パダワンは魅力のように動作します!

Vimの場合、Deopleteの代わりにNeocompleteを使用できます。

私は、誰かが興味を持っている場合にVim PHP IDEを作成する方法についての記事を書きました。もちろんパダワンもその一部です。


0

別のオプションはcoc.nvimです。

それは本当に高速で、VScodeと同じオートコンプリートをインテリセンスで使用するので、完了は素晴らしいです。また、リンティング機能も備えています。だから、それはあなたがバグを抱えている可能性があることを示しています。多数の言語をサポートしています。

セットアップと設定には少し時間がかかるかもしれませんが、私はそれがvimにとって最高のオートコンプリートエンジンであることを私は思っています。

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