Vimでファイルを開くためのショートカット


123

Ctrl+ Shift+ を使用するRか、オートフィルのCtrl+ Nオプションを使用して、EclipseのようにVimでファイルを開きます。キーボードショートカットを起動し、ファイル名/パターンを入力して、一致するすべてのファイル名から選択します。

私は通常それを開くことを知っています:

:tabe <filepath>
:new <filepath>
:edit <filepath>

ここでの問題は、これらの場合にファイル全体のパスを指定する必要があることです。


1
提案されたコマンドの効果:tabeは異なることに注意してください。新しいタブでファイルを開き:new、ウィンドウを水平方向に分割し:edit、新しいファイルを開く前に現在のファイルを閉じます。
Skippy le Grand Gourou 2013年

回答:



141

私が通常行うことe .(e-space-dot)は、ブラウズ可能な現在のディレクトリを提供します。次に/、テキストファイルで単語を見つけるのと同じように、名前の断片を検索できます。私は一般的にそれで十分で、シンプルで迅速だと思います。


22
スペースは不要で、さらに25%タイピングする必要がありません。(:e.)。
コンラッドルドルフ

67
大文字のeを使用​​する場合、ドットは必要ありません。例:E <ENTER>
Andriy Drozdyuk

2
@drozzyこれはvimで発生します:-)
DerMike

7
との動作には違いが:e.あり:Eます。現在のファイルが編集されてまだ保存されていない場合、前者は:edit「最後の変更以降に書き込みがない」ために(のように)不平を言い、後者はウィンドウを水平に分割します(のように):new)新しいファイルを開くことを許可します(変更されていない場合、両方が現在のファイルを新しいファイルに置き換えます:edit)。
Skippy le Grand Gourou 2013年

1
ファイルを開いて2番目のファイルに置き換えると、「e#」を使用して最初のファイルに戻ることができます
dkretz

33

:find 別のオプションです。

私は自分のプロジェクトのルートからvimを開いて、pathそこにセットしました。

次に、ツリーのどこにあるファイルでも開くことができます:

:find **/filena< tab >

タブはさまざまなマッチでオートコンプリートされます。(**パスを再帰的に検索するように指示します)。


:find作業ディレクトリからの相対パスを取得するので、私は役に立ちません。こちらの質問と@romainlの回答をご覧ください:stackoverflow.com/questions/28224168/…。作業ディレクトリからの相対パスを簡単に取得するために、より興味深い@stragerの回答を見つけました。
ziiweb 2015年

25

次を使用して、現在のパスでファイルを検索できます**

:tabe **/header.h

複数の一致がある場合、タブを押してさまざまな補完を確認します。


これを使ってみましたが、とても遅いみたいです。私のアプリケーションは大きく、エディターはしばらく動作しなくなりました。エディターのパフォーマンスと速度を向上させる設定を知っていますか。
Techmaddy 2009

1
素敵な答え。:tabe **/*der.hファイルの完全な名前を覚えていない場合などに使用します。
ziiweb 2015年

16

CtrlPプラグインの使用を検討してください。

Janus Distributiveに含まれています。

「ファジーマッチング」または正規表現を使用して、現在のディレクトリ内のファイル、開いているバッファ、または最近使用したファイルを検索できます。


1
Janusディストリビューションの一部として実際に使用しています。
Alexey 2013年

元のCtrlPリポジトリは非アクティブですが、アクティブなフォーク
jpyams 2018年

12

私が何かを見逃していない限り、:e filenameは私が見つけた最も速い方法です。

タブを使用してファイル名をオートコンプリートすることもできます。


@dirkgentlyです。この質問のタイトルが示唆するように、それはまだショートカットですが、質問者が探しているものではないと思います。
ストレージャー、2009

私にとって、タブのオートコンプリートは:eでは機能しません。さらに、何かで始まるファイル名を常に検索するのではなく、ファイル名の中間の単語を検索する必要があります。
Andriy Drozdyuk 2010


9

.vimrcファイルでいくつかのショートカットを使用しています(以下の正確な構文)。

それらは、90%のケースで、現在編集中のファイルと同じディレクトリにある別のファイル、またはその編集済みファイルに階層が非常に近いディレクトリにある別のファイルを開きたいという事実に基づいています。

コマンドの機能は次のとおりです。

,cd :現在の作業ディレクトリを、編集中の現在のファイルがあるディレクトリに変更します。

,e:現在の作業ディレクトリが既に入力されているファイルを開くため、ファイル名のみを指定する必要あります。

これらを.vimrcに入れてください:

map ,e :e <C-R>=expand("%:p:h") . "/" <CR>

map ,cd :cd %:p:h <CR>

以下が一連のイベントです。


  1. "/ home / prog"内のtest.javaというファイルを編集しています
  2. ,cd ->現在の作業ディレクトリは「/ home / prog」になります
  3. ,e ->「:e / home / prog」に展開されるので、ファイル名を入力できます(test.hなど)。

  1. ,e ->「:e / home」に展開されます
  2. tab -> / homeのサブディレクトリを循環
  3. enter-> cd必要なディレクトリに移動します/ home / prog
  4. ,e ->「:e / home / prog」に展開されます

8

私が束の中で最高であると思うcommand-tもあります(そして私はそれらすべてを試しました)。それをインストールするのは簡単な手間ですが、一度インストールすると、それは使用する夢です。

https://wincent.com/products/command-t/


1
ctrlp.vim(github.com/kien/ctrlp.vim)も試してみてください。基本的にはCommand-Tと同じですが、純粋なVimscriptで書かれています。(
IMHOの

6

タブを使用すると、vimエスケープモードでファイルパスを入力するときに機能します。


4

タグがある場合は(そうする必要があります)、コマンドラインからクラスまたはメソッドまたはc関数の名前だけで、「vim -t DBPlaylist」を使用して、vim内で「:tag ShowList」を使用してファイルを開くことができます。 」


4

共通のディレクトリにあるファイルを編集している場合は: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を参照)。


4

これは正確にあなたが探しているものではありませんが、多くの場合は良いです(すべてではありません)。

VIMを開き、バッファにファイルの名前がある場合は、そのファイル名にカーソルを置いてと入力できgfます。これは、同じバッファ内のカーソルの下にある名前のファイルを開きます。それは同じです

:e CTRL+r CTRL+w


1
gfを押して、カーソルの下にある新しいファイルを開きました。元のファイルに戻る方法です。
vrbilgi、2011年

@ user430294:別のバッファで開いています。使用:b oldname
Nathan Fellman、2011年

@ vrbilgi、Ctrl + oを使用して、以前に編集したファイルに戻ります。Ctrl + iを使用して、元のファイルに戻ります。
Беров

3

ファイルを開くことを許可し、オートコンプリートをサポートし、開くファイルのフルパス名を入力する必要がない3つのプラグインを知っています(ファイルが&pathvimオプションのいずれかのディレクトリにある限り) :

最近、同様の機能を持つ別のプラグインを見たことがありますが、名前を覚えていません。

まもなく、:findがオートコンプリートをサポートする可能性があります-このトピックのパッチは、最近、vim_devメーリングリストで流通しています。


1
  • 使用できます(ワイルドメニューを設定)
  • タブを使用してファイル名をオートコンプリートできます
  • マッチングを使用することもできます。たとえば:e p*.datまたはそのようなもの(古いもののように)
  • :browse confirm e(グラフィカルウィンドウの場合)

  • ただし、使用しているvimのバージョンと、emacsでのその動作方法も指定する必要があります。多分私たちはあなたに正確なvimの代替を見つけることができました。


1

FuzzyFinderについて言及しましたが、FuzzyFinderTextmateの動作のようなテキストメイトが大好きですプラグインのに拡張して、すべてのサブディレクトリを含めるを拡張しています。

fuzzyfinder.vimのバージョン2.16を使用していることを確認してください-より高いバージョンはプラグインを壊します。


1

Exuberant ctagsを使用すると、ファイル情報を含むタグファイルを作成できます。

ctags --extra=+f -R *

次に、VIMからファイルを開きます

:tag filename

を使用<tab>してファイル名をオートコンプリートすることもできます。


1

GVIMでは、ファイルは、開く/読み取り/書き込みダイアログを使用して参照できます。

:browse {command}

{コマンド}-開く/読み取り/書き込み

オープン -ファイルが開い 読み込み -ファイルの追加 書き込みを -名前を付けて保存]ダイアログ


0

FuzzyFinderをインストールしました。ただし、制限は、現在のディレクトリ内のファイルのみを検索することです。これに対する1つの回避策は、FuzzyFinderTextmateを追加することです。しかし、ドキュメントと解説に基づいて、それは確実に機能しません。正しいバージョンのFuzzyFinderが必要であり、Rubyサポートを使用してコンパイルするVimのコピーが必要です。

私が今試している別の回避策は、編集セッションの最初に必要と思われるすべてのファイルを開くことです。たとえば、主要なディレクトリ内のすべてのファイルを開きます...

:args app/**
:args config/**
:args test/**
etc...

(これは、私はおそらく何十ものファイルを開いていることを意味しますが、今のところまだ問題なく動作しているようです。)

その後、バッファモードでFuzzyFinderを使用すると、TextMateのcommand-oショートカットのように動作します...

:FuzzyFinderBuffer

確信してるの?.vimrcにいくつかの設定があります。「g:fuf_abbrevMap」を探します。ドキュメントで例を見つけたはずです。ショートカットを入力するときに、「web:」のような略語を入力すると、選択したフォルダー内のすべてのファイルが検索されます。私の問題は、実際には、何らかの理由でファイルを開くことができなくなったことです。代わりに、ステータスバーに[新しいディレクトリ]が表示されます。しかし、私は:oで同じ問題を抱えていますが、fufとは無関係のようです。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.