首页 文章

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

提问于
浏览
117

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

我知道打开它通常像:

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

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

18 回答

  • 3

    考虑使用CtrlP插件 .

    它包含在Janus Distributive中 .

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

  • 15

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

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

    Here's what the commands do do:

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

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

    Put these into your .vimrc:

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

    Here's a sequence of events:


    • 您正在编辑"/home/prog"中名为test.java的文件

    • ,cd - >当前工作目录现在变为"/home/prog"

    • ,e - >扩展为":e /home/prog",这样您就可以填写文件名,比如test.h.


    • ,e - >扩展为":e /home"

    • tab - >循环遍历/ home的子目录

    • enter - > cd 到你想说的目录/ home / prog

    • ,e - >扩展为":e /home/prog"

  • 8

    您可以使用 ** 在当前路径中搜索文件:

    :tabe **/header.h
    

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

  • 3

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

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

  • 0

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

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

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

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

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

    :FuzzyFinderBuffer
    
  • 57

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

  • 10

    还有命令 - 我发现它是最好的一组(我已经尝试了所有) . 安装它是一个小麻烦,但一旦安装,它是一个梦想使用 .

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

  • 8

    除非我遗漏了什么,:e filename是我发现的最快的方式 .

    您也可以使用Tab来自动填充文件名 .

  • 4

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

  • 12

    :find 是另一种选择 .

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

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

    :find **/filena< tab >
    

    Tab将通过各种匹配自动完成 . ( ** 告诉它通过路径递归搜索) .

  • 24

    这并不是你在很多情况下的好处(尽管不是全部) .

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

    :e CTRL+r CTRL+w

  • 0

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

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

  • 136

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

  • 31

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

    我正在维护的

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

    很快,:发现可能支持自动完成 - 补丁就此这些话题目正在vim_dev邮件列表中传播 .

  • 1

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

  • 6
    • 你可以用(设置wildmenu)

    • 您可以使用选项卡自动填充文件名

    • 你也可以使用匹配,例如:e p*.dat 或类似的东西(比如旧'dos)

    • 你还可以:浏览确认e(对于图形窗口)

    • 但你也应该指定你正在使用的vim版本,以及emacs中的那个东西是如何工作的 . 也许我们可以找到一个确切的vim替代品 .

  • 1

    如果您正在编辑公共目录中的文件,则可以 :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 ) .

  • 3

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

    ctags --extra=+f -R *
    

    然后,从VIM打开文件

    :tag filename
    

    您还可以使用 <tab> 自动填充文件名 .

相关问题