在Vim中打开文件的快捷方式

时间:2009-02-21 13:50:50

标签: vim keyboard-shortcuts

我想在Eclipse中使用 Ctrl + Shift + R 或通过 Ctrl <在Eclipse中打开文件/ kbd> + N 自动填充选项。调用键盘快捷键,键入文件名/模式,然后从所有匹配的文件名中选择。

我知道打开它通常就像:

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

这里的问题是我必须在这些情况下指定整个文件路径。

19 个答案:

答案 0 :(得分:138)

我通常做的是e .(e-space-dot),它为我提供了一个可浏览的当前目录 - 然后我可以/ - 搜索名称片段,就像在文本中查找单词一样文件。我发现它通常足够好,简单快捷。

答案 1 :(得分:57)

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

:FuzzyFinderFile 将允许您通过键入部分名称或模式来打开文件。

答案 2 :(得分:33)

:find是另一种选择。

我从项目的根目录打开vim并将path设置为那里。

然后,我可以使用以下命令打开位于树中任何位置的文件:

:find **/filena< tab >

选项卡将通过各种匹配自动完成。 (**告诉它以递归方式搜索路径。)

答案 3 :(得分:25)

您可以使用**

在当前路径中搜索文件
:tabe **/header.h

如果有多个匹配项,请按Tab键查看各种完成情况。

答案 4 :(得分:15)

考虑使用CtrlP插件。

它包含在Janus Distributive

允许您使用“模糊匹配”或正则表达式查找当前目录中的文件,打开缓冲区或最近使用的文件。

答案 5 :(得分:12)

除非我遗漏了某些内容,否则:e filename是我找到的最快的方式。

您也可以使用标签自动填充文件名。

答案 6 :(得分:10)

我喜欢我的设置上的:FuzzyFinderTextMate(或 Ctrl + F )。 见http://weblog.jamisbuck.org/2008/10/10/coming-home-to-vim

答案 7 :(得分:9)

我在.vimrc文件中使用了几个快捷方式(下面的确切语法)。

它们基于以下事实:在90%的情况下,我想在与我当前正在编辑的文件相同的目录中打开另一个文件,或者在与编辑的层次结构非常接近的目录中打开另一个文件文件。

以下是命令的作用:

,cd:将当前工作目录更改为您正在编辑的当前文件所在的目录。

,e:打开已填写当前工作目录的文件,因此您必须指定文件名。

将这些内容放入.vimrc:

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

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

以下是一系列事件:


  1. 您正在“/ home / prog”
  2. 中编辑名为test.java的文件
  3. ,cd - &gt;现在的工作目录 变成“/ home / prog”
  4. ,e - &gt;扩展到“:e / home / prog”所以 你可以填写文件 名字,比如test.h。

    1. ,e - &gt;扩展为“:e / home”
    2. tab - &gt;循环遍历/ home
    3. 的子目录
    4. enter - &gt; cd到你的目录 想说/ home / prog
    5. ,e - &gt;扩展为“:e / home / prog”

答案 8 :(得分:8)

还有命令-t,我发现它是最好的一组(我已经尝试过所有这些)。安装它是一件轻微的麻烦,但是一旦安装它,它就是一个梦想。

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

答案 9 :(得分:6)

使用标签,它们在vim转义模式下输入文件路径时有效!

答案 10 :(得分:4)

如果你有标签(你应该),你只需要通过类或方法或c函数的名称从命令行打开一个文件,使用“vim -t DBPlaylist”,并在vim中使用“ :标记ShowList“。

答案 11 :(得分: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修饰符将其修剪为当前目录({{ 1}}):

:help :_%:

而且,和其他人一样,您可以在ex-line上标记文件名(有关详情,请参阅: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 )。

答案 12 :(得分:4)

这不是完全你正在寻找什么,但它在很多情况下都很好(尽管不是全部)。

如果VIM打开并且缓冲区中有文件名,则可以将光标放在该文件名上并键入 g f 。这将打开名称位于同一缓冲区中光标下的文件。它与

相同

:e CTRL+r CTRL+w

答案 13 :(得分:3)

我知道有三个插件允许打开文件,支持自动完成,并且不需要输入要打开的文件的完整路径名(只要文件位于其中一个目录下) &path vim选项):

最近,我看到了另一个具有相似功能的插件,但我不记得这个名字了。

很快,发现可能支持自动完成 - 这个主题的补丁现在正在vim_dev邮件列表中传播。

答案 14 :(得分:1)

已经提到过FuzzyFinder,但我喜欢FuzzyFinderTextmate插件的textmate行为,它扩展了行为以包含所有子目录。

确保使用的是fuzzyfinder.vim版本2.16 - 较高版本会破坏插件。

答案 15 :(得分:1)

  • 你可以使用(设置wildmenu)
  • 您可以使用标签自动填充文件名
  • 你也可以使用匹配,例如:e p*.dat或类似的东西(比如旧'dos)
  • 您还可以:浏览确认e(对于图形窗口)

  • 但您也应该指定您正在使用的vim版本,以及emacs中的内容如何工作。也许我们可以找到一个确切的vim替代品。

答案 16 :(得分:0)

我安装了FuzzyFinder。但是,限制是它只能在当前目录中找到文件。一个解决方法是添加FuzzyFinderTextmate。但是,根据文档和评论,这不能可靠地工作。你需要正确版本的FuzzyFinder,你需要使用Ruby支持编译你的Vim副本。

我现在尝试的另一种解决方法是在编辑会话开始时打开我可能需要的所有文件。例如,打开关键目录中的所有文件......

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

(这意味着我可能会打开几十个文件,但到目前为止它似乎仍然正常。)

之后,我可以在缓冲模式下使用FuzzyFinder,它的行为有点像TextMate的command-o快捷方式......

:FuzzyFinderBuffer

答案 17 :(得分:0)

使用Exuberant ctags,您可以使用文件信息创建标记文件:

ctags --extra=+f -R *

然后,用

打开VIM文件
:tag filename

您还可以使用<tab>自动填写文件名。

答案 18 :(得分:0)

在GVIM中,可以使用“打开/读取/写入”对话框来浏览文件;

:browse {command}

{command}-打开/读取/写入

打开-打开文件 阅读-附加文件 编写-另存为对话框