2009-02-21 197 views
111

打開文件我想開在Vim的一個文件等使用Eclipse中Ctrl鍵 + + - [R,或通過自動填充的Ctrl鍵 + Ñ選項。調用鍵盤快捷方式,輸入文件名/模式,並從所有匹配的文件名中進行選擇。快捷方式在Vim中

我知道打開它一般都喜歡:

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

這裏的問題是,我必須指定在這些情況下,整個文件路徑。

+0

奶油計數? – Hai 2010-01-07 20:54:58

+1

請注意,建議的命令具有不同的效果`:tabe`將在新選項卡中打開文件,`:new`將水平分割窗口,`:edit`將在打開新文件之前關閉當前文件。 – 2013-10-22 15:18:02

回答

55

我最近迷上了fuzzyfinder.vim ... :-)

:FuzzyFinderFile會讓您鍵入部分名稱或模式打開的文件。

6

使用選項卡,它們在vim轉義模式下輸入文件路徑時工作!

12

除非我錯過了一些東西,:e文件名是我找到的最快捷的方式。

您也可以使用tab自動完成文件名。

+0

不是`:e`是`:edit`的快捷方式嗎? – dirkgently 2009-02-21 13:57:02

+0

@dirkgently,是的。它仍然是一個捷徑,正如這個問題的標題所暗示的,但我不認爲這是提問者正在尋找的東西。 – strager 2009-02-21 13:59:22

+0

對於我來說,標籤自動填充不適用於:e。除了你並不總是想搜索以某種東西開頭的文件名,而是搜索文件名中的中間詞。 – drozzy 2010-07-19 18:51:44

25

您可以通過使用**搜索在當前路徑下的文件:

:tabe **/header.h 

按下Tab鍵即可看到各種完井,如果有一個以上的比賽。

+0

我試過使用這個,但是這很慢。我的意思是我的應用程序很大,編輯停止了一段時間的工作。你知道任何提高編輯器性能和速度的設置嗎? – Techmaddy 2009-02-23 11:20:15

+1

很好的答案。如果您不記得文件的全名,請使用`:tabe **/* der.h`。 – ziiweb 2015-01-29 21:46:49

4

如果你有標籤(你應該),你可以通過類或方法或C函數的名稱,打開命令行文件,用「vim -t DBPlaylist」,並在vim中用「:tag ShowList」。

1
  • 你可以使用(集wildmenu)
  • 您可以使用Tab鍵自動文件名
  • 你也可以用匹配,例如:電子p*.dat或類似的東西(像老」 DOS)
  • 您還可以:瀏覽確認e(對於圖形窗口)

  • 但是您也應該指定您正在使用的vim版本以及emacs的工作方式。也許我們可以找到一個確切的vim替代品。

3

如果你在一個公共目錄編輯文件,你可以: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 

而且,和其他人一樣,您可以在出廠標籤上完成文件名的填寫(有關更多信息,請參見:help cmdline-completion)。

8

我在我的.vimrc文件(下面的確切語法)中使用了幾個快捷方式。

它們基於這樣一個事實:在90%的情況下,我想在與當前正在編輯的文件相同的目錄中打開另一個文件,或者在層次結構中非常接近的目錄中打開另一個文件編輯的文件。

這裏的命令就做什麼:

,cd:改變當前的工作目錄到您當前正在編輯的文件所在的目錄

,e:打開與當前工作文件目錄已經填入,所以你必須指定只有的文件名。

把這些到您的.vimrc:

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

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

這裏是事件的順序:


  1. 您正在編輯一個名爲test.java文件「/家/ prog「
  2. ,cd - >當前工作目錄現在 變成「/ home/prog」
  3. ,e - >擴展爲「:e/home/prog」so 您可以只填寫文件 name,比如test.h.

  1. ,e - >擴展到 「:E /家」
  2. tab - >cd你 想要說的目錄/ home - >通過/家
  3. enter的子目錄週期/ prog
  4. ,e - >擴展爲「:e/home/prog」
3

我知道三個允許打開文件的插件,支持自動完成,並且不需要輸入要打開的文件的完整路徑名(只要這些文件位於其中一個目錄下&path Vim選項):

最近,我看到另一個具有類似功能的插件,但我不記得名字。

不久,find:可能支持自動完成 - 這個主題的補丁正在vim_dev郵件列表中傳播。

132

我通常做的是e .(e-space-dot),它給了我一個可瀏覽的當前目錄 - 然後我可以/ - 搜索名稱片段,就像在文本文件中查找單詞一樣。我發現通常足夠好,簡單而快速。

+15

你不需要空間,節省額外的25%打字。 (`:e.`)。 – 2009-02-22 10:29:04

+55

如果您使用大寫字母e,則不需要點。 :E drozzy 2010-07-19 18:50:05

1

FuzzyFinder已被提及,但是我喜歡FuzzyFinderTextmate插件的行爲,這擴展了行爲以包括所有的子目錄。

請確保您使用的是fuzzyfinder.vim的版本2.16 - 較高的版本會破壞插件。

0

我安裝了FuzzyFinder。但是,限制是它只能在當前目錄中找到文件。一個解決方法是添加FuzzyFinderTextmate。但是,根據文檔和評論,這並不可靠。你需要正確版本的FuzzyFinder,並且你需要用Ruby支持編譯你的Vim副本。

我現在正在嘗試的另一種解決方法是在編輯會話開始時打開所有可能需要的文件。例如,打開所有的關鍵目錄中的文件...

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

(這意味着我將有可能是文件的得分開,但至今似乎仍然工作正常。)

在那之後,我在緩衝模式下使用FuzzyFinder,它會有點像TextMate的command-o快捷...

:FuzzyFinderBuffer 
3

這不正是在尋找什麼,但它在許多情況下,良好的(但不是全部) 。

如果VIM打開,有一個在緩衝區中的文件的名稱,你可以把該文件名光標並鍵入˚F。這將打開名稱在同一緩衝區中的光標下的文件。這是一樣的

:e CTRL+rCTRL+w

29

:find是另一種選擇。

我從我的項目的根目錄打開vim,並將path設置爲那裏。

然後,我可以通過打開位於任何地方的樹文件:

:find **/filena<tab> 

Tab鍵會自動填充通過各種比賽。 (**告訴它通過路徑遞歸搜索)。

13

考慮使用CtrlP插件。

它包含在Janus Distributive中。

允許您在當前目錄中查找文件,使用「模糊匹配」或正則表達式打開緩衝區或最近使用的文件。

0

有了旺盛的ctags,您可以創建標籤的文件與文件信息:

ctags --extra=+f -R * 

然後,VIM打開文件與

:tag filename 

您還可以使用<tab>自動完成文件名。