Vim挿入モードの場合、ファイルパスのオートコンプリートを追加する方法はありますか?


81

私はたくさんのシェルスクリプトを書いていますが、常にファイルパスを入力する必要があります。お気に入りのシェルにいるときにタブでディレクトリまたはファイルのパスを完成させるのと同じように、挿入モードでVimにファイルパスをオートコンプリートさせる方法を誰かが知っているかどうか疑問に思っています。

CTRLDシェルの機能をVim挿入モードにすることができる場合(つまり、現在のパスにあるファイル/ディレクトリを確認するため)、追加のクレジット。


興味深い質問です。私も答えを知りたいです:)
Jay Zeng

@stephenmm Ctrl-Dはシェルで何をしますか?私のbashシェルでは、テキストを入力しても何もしません。それ以外の場合は、ターミナルを閉じます。
alhelal 2018

@ alhelal-CTRL-Dは、私の古いシェルのファイルとディレクトリを表示するようです。CTRL-D機能が表示されなくなりました。
stephenmm

回答:


166

以下の場合、ファイル名オムニ補完は、使用することができます:

Ctrl- XCtrl-F


11
別のvimahaの瞬間....ありがとう。とにかく挿入モードでタブを使用しないので、これを.vimrcに追加しました:imap <Tab> <CX> <CF>
stephenmm 2009

4
挿入モードでの<tab>のもう1つの良い使用法は、<cn>です。これにより、作業中のファイル内の他の単語に基づいて、入力している単語がオートコンプリートされます。変数名やクラス名を入力するときにいつも使用しています。
デレク

検索パスに影響を与える方法はありますか?Cファイルに#includeエントリを追加する場合、パスはファイルを開いた場所からの相対パスではない可能性があります。
ロブブラッドフォード

@RobBradfordはYouCompleteMeを試してみてください。正しい情報が提供されている場合(たとえば、yCM-Generatorによって生成された.ycm_extra_conf.pyを使用します。これは、cmakeベースのビルドシステムを使用します)、インクルードフォルダー内のパス名をオートコンプリートします。
Emile Vrijdags 2017年

ファイル名にスペースが含まれていると、Vimはオートコンプリートに失敗します。それを修正する方法はありますか?
Jean


18

@CMSと@michaelの優れた回答に基づいて構築するには

ctrl+ X ctrl+fコマンドシーケンスを使用すると、現在のディレクトリ内のファイルのリストが表示されます。異なるファイル名間を上下に移動するための適切なキーを探すのに少し時間を費やします。正しいキーはCtrl-nとCtrl-pです。他のほとんどすべてのキーを使用できます(Space)を選択して入力を続行できます。

さらに、挿入したいファイル/ディレクトリにまだいない場合は、次のようにファイルツリー構造を下に移動できます。

  1. オプションで、ディレクトリの一部を入力します。../../たとえば、使用することもできます!
  2. ctrl+ X ctrl+fを押して、リストからツリーの最初の項目を選択します。
  3. 次に、正しい項目が強調表示されている間にもう一度ctrl+を押すとf、ディレクトリツリー構造の次のレベルのリストが表示されます。

ドキュメントに挿入するディレクトリ/ファイルが見つかるまで、これを続けることができます。


6
ステップ3で、ctrl + xとctrl + fを意味しましたか?ctrl + fだけでは機能しないため、ctrl + nと同じように機能します。ところで、ディレクトリにスペースが含まれている場合、ここでは機能しません:/。回避策を知っていますか?
rojo 2014

0

私も同様の問題を経験しました。私は次のような解決策を見つけました:

    sudo apt-get install realpath

そして、VIM naviagteで、通常モードでファイルを作成するには、次のように入力します。

    :r !realpath /path/to/file

!realpatchの後に非挿入モードでナビゲートしているときは、キーボタンを使用できます。

VOILA!TABが再び機能しています!

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