我想在Eclipse中使用Ctrl + Shift + R或自动填充的Ctrl + N选项在Vim中打开文件。调用键盘快捷键,键入文件名/模式,然后从所有匹配的文件名中进行选择。
我知道打开它通常像:
:tabe <filepath>
:new <filepath>
:edit <filepath>
这里的问题是我必须在这些情况下指定整个文件路径。
如果你有标签(你应该),你可以从命令行打开一个文件,只需要通过类或方法或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
而且,就像其他人所说的那样,你可以在ex-line上填写文件名(请参阅:help cmdline-completion
了解更多信息)。
这并不是你想要的,但在很多情况下它都很好(尽管不是全部)。
如果VIM打开并且缓冲区中有文件名,则可以将光标放在该文件名上并键入gf。这将打开名称位于同一缓冲区中光标下的文件。它是一样的
:e CTRL+r CTRL+w
我知道三个插件允许打开文件,支持自动完成,并且不需要输入要打开的文件的完整路径名(只要文件位于&path
vim选项的其中一个目录下):
:e
/ :find
,但在分裂行动)最近,我看到了另一个具有类似功能的插件,但我不记得这个名字了。
很快,:发现可能支持自动完成 - 这个主题的补丁这些天在vim_dev邮件列表上传播。
p*.dat
或类似的东西(比如旧'dos)已经提到过FuzzyFinder,但我喜欢FuzzyFinderTextmate插件的textmate行为,它将行为扩展到包括所有子目录。
确保使用的是fuzzyfinder.vim版本2.16 - 较高版本会破坏插件。
我安装了FuzzyFinder。但是,限制是它只能在当前目录中找到文件。一个解决方法是添加FuzzyFinderTextmate。但是,根据文档和评论,这不能可靠地工作。您需要正确版本的FuzzyFinder,您需要使用Ruby支持编译Vim副本。
我现在尝试的另一种解决方法是在编辑会话开始时打开我可能需要的所有文件。例如,打开关键目录中的所有文件......
:args app/**
:args config/**
:args test/**
etc...
(这意味着我可能会打开几十个文件,但到目前为止它仍然可以正常工作。)
之后,我可以在缓冲模式下使用FuzzyFinder,它的行为有点像TextMate的command-o
快捷方式......
:FuzzyFinderBuffer
使用Exuberant ctags,您可以使用文件信息创建标记文件:
ctags --extra=+f -R *
然后,从VIM打开文件
:tag filename
您还可以使用<tab>
自动完成文件名。
在GVIM中,可以使用打开/读/写对话框浏览文件;
:browse {command}
{command} - 打开/读/写
open - 打开文件read - 附加文件write - SaveAs对话框