回答:
私は最近fuzzyfinder.vimに夢中になりました ... :-)
:FuzzyFinderFileを使用すると、部分的な名前またはパターンを入力してファイルを開くことができます。
私が通常行うことe .
(e-space-dot)は、ブラウズ可能な現在のディレクトリを提供します。次に/
、テキストファイルで単語を見つけるのと同じように、名前の断片を検索できます。私は一般的にそれで十分で、シンプルで迅速だと思います。
:e.
)。
:e.
あり:E
ます。現在のファイルが編集されてまだ保存されていない場合、前者は:edit
「最後の変更以降に書き込みがない」ために(のように)不平を言い、後者はウィンドウを水平に分割します(のように):new
)新しいファイルを開くことを許可します(変更されていない場合、両方が現在のファイルを新しいファイルに置き換えます:edit
)。
:find
別のオプションです。
私は自分のプロジェクトのルートからvimを開いて、path
そこにセットしました。
次に、ツリーのどこにあるファイルでも開くことができます:
:find **/filena< tab >
タブはさまざまなマッチでオートコンプリートされます。(**
パスを再帰的に検索するように指示します)。
:find
作業ディレクトリからの相対パスを取得するので、私は役に立ちません。こちらの質問と@romainlの回答をご覧ください:stackoverflow.com/questions/28224168/…。作業ディレクトリからの相対パスを簡単に取得するために、より興味深い@stragerの回答を見つけました。
次を使用して、現在のパスでファイルを検索できます**
。
:tabe **/header.h
複数の一致がある場合、タブを押してさまざまな補完を確認します。
:tabe **/*der.h
ファイルの完全な名前を覚えていない場合などに使用します。
CtrlPプラグインの使用を検討してください。
Janus Distributiveに含まれています。
「ファジーマッチング」または正規表現を使用して、現在のディレクトリ内のファイル、開いているバッファ、または最近使用したファイルを検索できます。
私が何かを見逃していない限り、:e filenameは私が見つけた最も速い方法です。
タブを使用してファイル名をオートコンプリートすることもできます。
私のセットアップでは:FuzzyFinderTextMate(またはCtrl+ F)が好きです。http://weblog.jamisbuck.org/2008/10/10/coming-home-to-vimを参照してください
.vimrcファイルでいくつかのショートカットを使用しています(以下の正確な構文)。
それらは、90%のケースで、現在編集中のファイルと同じディレクトリにある別のファイル、またはその編集済みファイルに階層が非常に近いディレクトリにある別のファイルを開きたいという事実に基づいています。
コマンドの機能は次のとおりです。
,cd
:現在の作業ディレクトリを、編集中の現在のファイルがあるディレクトリに変更します。
,e
:現在の作業ディレクトリが既に入力されているファイルを開くため、ファイル名のみを指定する必要があります。
これらを.vimrcに入れてください:
map ,e :e <C-R>=expand("%:p:h") . "/" <CR>
map ,cd :cd %:p:h <CR>
以下が一連のイベントです。
,cd
->現在の作業ディレクトリは「/ home / prog」になります,e
->「:e / home / prog」に展開されるので、ファイル名を入力できます(test.hなど)。,e
->「:e / home」に展開されますtab
-> / homeのサブディレクトリを循環enter
-> cd
必要なディレクトリに移動します/ home / prog,e
->「:e / home / prog」に展開されます私が束の中で最高であると思うcommand-tもあります(そして私はそれらすべてを試しました)。それをインストールするのは簡単な手間ですが、一度インストールすると、それは使用する夢です。
共通のディレクトリにあるファイルを編集している場合は:cd
、そのディレクトリに移動:e
して、ファイル名だけで使用できます。
たとえば、以下ではありません。
:e /big/long/path/that/takes/a/while/to/type/or/tab/complete/thingy.rb
:sp /big/long/path/that/takes/a/while/to/type/or/tab/complete/other_thingy.c
:vs /big/long/path/that/takes/a/while/to/type/or/tab/complete/one_more_thingy.java
できるよ:
:cd /big/long/path/that/takes/a/while/to/type/or/tab/complete/
:e thingy.rb
:sp other_thingy.c
:vs one_more_thingy.java
または、目的のディレクトリに既にファイルが開いている場合は%
、現在のファイル名の省略形を使用して、:h
修飾子(:help :_%:
)で現在のディレクトリにトリミングできます。
:e /big/long/path/that/takes/a/while/to/type/or/tab/complete/thingy.rb
:cd %:h
:sp other_thingy.c
:vs one_more_thingy.java
また、他の人が言ったように、ex-lineでタブ名でファイル名を補完できます(詳細は:help cmdline-completion
を参照)。
これは正確にあなたが探しているものではありませんが、多くの場合は良いです(すべてではありません)。
VIMを開き、バッファにファイルの名前がある場合は、そのファイル名にカーソルを置いてと入力できgfます。これは、同じバッファ内のカーソルの下にある名前のファイルを開きます。それは同じです
:e CTRL+r CTRL+w
:b oldname
ファイルを開くことを許可し、オートコンプリートをサポートし、開くファイルのフルパス名を入力する必要がない3つのプラグインを知っています(ファイルが&path
vimオプションのいずれかのディレクトリにある限り) :
:e
/ :find
ではなく、分割アクションで行われます)最近、同様の機能を持つ別のプラグインを見たことがありますが、名前を覚えていません。
まもなく、:findがオートコンプリートをサポートする可能性があります-このトピックのパッチは、最近、vim_devメーリングリストで流通しています。
FuzzyFinderについて言及しましたが、FuzzyFinderTextmateの動作のようなテキストメイトが大好きですプラグインのに拡張して、すべてのサブディレクトリを含めるを拡張しています。
fuzzyfinder.vimのバージョン2.16を使用していることを確認してください-より高いバージョンはプラグインを壊します。
FuzzyFinderをインストールしました。ただし、制限は、現在のディレクトリ内のファイルのみを検索することです。これに対する1つの回避策は、FuzzyFinderTextmateを追加することです。しかし、ドキュメントと解説に基づいて、それは確実に機能しません。正しいバージョンのFuzzyFinderが必要であり、Rubyサポートを使用してコンパイルするVimのコピーが必要です。
私が今試している別の回避策は、編集セッションの最初に必要と思われるすべてのファイルを開くことです。たとえば、主要なディレクトリ内のすべてのファイルを開きます...
:args app/**
:args config/**
:args test/**
etc...
(これは、私はおそらく何十ものファイルを開いていることを意味しますが、今のところまだ問題なく動作しているようです。)
その後、バッファモードでFuzzyFinderを使用すると、TextMateのcommand-o
ショートカットのように動作します...
:FuzzyFinderBuffer
:tabe
は異なることに注意してください。新しいタブでファイルを開き:new
、ウィンドウを水平方向に分割し:edit
、新しいファイルを開く前に現在のファイルを閉じます。