在Vim中打开文件的捷径
我想在Eclipse中使用Ctrl + Shift + R或者通过自动填充的Ctrl + N选项在Eclipse中打开一个文件。 调用键盘快捷键,input文件名/模式,并从所有匹配的文件名中进行select。
我知道通常打开它像:
:tabe <filepath> :new <filepath> :edit <filepath>
这里的问题是我必须在这些情况下指定整个文件path。
我最近爱上了fuzzyfinder.vim … 🙂
:FuzzyFinderFile将允许您通过input部分名称或模式打开文件。
我通常做的是e .
(e-space-dot)给我一个可浏览的当前目录 – 那么我可以/
– search名称片段,就像在文本文件中查找单词一样。 我觉得这个总体来说够好,简单快捷。
:find
是另一种select。
我从我的项目的根目录打开vim,并将path
设置为那里。
然后,我可以使用以下命令打开位于树中任何位置的文件:
:find **/filena< tab >
选项卡将通过各种匹配自动完成。 ( **
告诉它通过pathrecursionsearch)。
您可以使用**
在当前path中search文件:
:tabe **/header.h
如果有多个匹配项,则点击选项卡查看各种完成项。
考虑使用CtrlP插件。
它包含在Janus Distributive中 。
允许您在当前目录中查找文件,使用“模糊匹配”或正则expression式打开缓冲区或最近使用的文件。
除非我错过了一些东西,:e文件名是我find的最快的方式。
您也可以使用tab自动完成文件名。
我喜欢我的设置上的:FuzzyFinderTextMate(或Ctrl + F )。 见http://weblog.jamisbuck.org/2008/10/10/coming-home-to-vim
还有一些命令我觉得是最好的(我已经试过了)。 安装它是一个小麻烦,但一旦安装,这是一个梦想使用。
我在.vimrc文件中使用了几个快捷方式(下面的确切语法)。
他们是基于这样一个事实,即在90%的情况下,我想打开与当前正在编辑的文件相同的目录中的另一个文件,或者在该编辑文件的层次结构中非常接近的目录中打开另一个文件。
以下是命令的function:
,cd
:将当前工作目录更改为当前正在编辑的文件所在的目录。
,e
:打开一个当前工作目录已经填写的文件,所以你只需要指定文件名。
把这些放到你的.vimrc中:
map ,e :e <CR>=expand("%:p:h") . "/" <CR> map ,cd :cd %:p:h <CR>
以下是一系列事件:
- 您正在编辑“/ 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”
使用制表符,它们在vim转义模式下input文件path时工作!
如果你有标签(你应该),你可以通过命令行打开一个文件,只需用类名或方法或c函数,用“vim -t DBPlaylist”,在vim中用“:tag ShowList ”。
如果您要编辑通用目录中的文件,可以: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
和其他人一样,您可以在下拉列表中select文件名(请参阅:help cmdline-completion
了解更多信息)。
我知道三个允许打开文件的插件,支持自动完成,并且不需要input打开的文件的完整path名(只要这些文件在&path
vim选项下的某个目录下):
- 我维护的searchInRuntime (完成不在
:e
/:find
,但在分割动作上) - 模糊的发现者,因为它已经被指出,
- 查找文件 。
最近,我看到另一个具有类似function的插件,但我不记得名字。
不久,:find可能会支持自动完成 – 这个主题的补丁正在vim_dev邮件列表上传播。
这不是你正在寻找的,但在许多情况下(尽pipe不是全部)。
如果VIM打开,并且缓冲区中有一个文件的名称,则可以将光标放在该文件名上,然后键入g f 。 这将打开名称在同一缓冲区中的光标下的文件。 这是一样的
:e CTRL + r CTRL + w
- 你可以使用(设置wildmenu)
- 您可以使用选项卡来自动完成文件名
- 你也可以使用匹配,例如:e
p*.dat
或类似的东西(就像在旧的DOS) -
您还可以:浏览确认e(对于graphics窗口)
-
但是你也应该指定你正在使用的vim版本,以及emacs的工作方式。 也许我们可以find一个确切的vim替代scheme。
已经提到了FuzzyFinder,但是我喜欢FuzzyFinderTextmate插件的行为,它把行为扩展到包括所有的subdirs。
确保你正在使用fuzzyfinder.vim的版本2.16 – 更高的版本打破插件。
我安装了FuzzyFinder。 但是,它的限制是它只能find当前目录中的文件。 一个解决方法是添加FuzzyFinderTextmate。 但是,根据文档和评论,这并不可靠。 你需要正确版本的FuzzyFinder,你需要使用Ruby支持来编译你的Vim。
我现在尝试的一个不同的解决方法是在编辑会话开始时打开所有可能需要的文件。 例如,打开密钥目录中的所有文件…
:args app/** :args config/** :args test/** etc...
(这意味着我可能打开几十个文件,但是到目前为止似乎仍然可以工作。)
之后,我可以在缓冲模式下使用FuzzyFinder,它将有点像TextMate的command-o
快捷方式。
:FuzzyFinderBuffer
借助Exuberant ctags,您可以创build带有文件信息的标签文件:
ctags --extra=+f -R *
然后,用VIM打开文件
:tag filename
您也可以使用<tab>
自动完成文件名称。