2010-01-31 21 views
15

我在Vim中编写代码,而不是IDE。 我的源代码通常嵌套2-3个目录深。Vim:e起始目录?

~/foo$ find 
xyz 
bar/abc 
bar/def 

~/foo$ vim 
// inside of vim 
:e bar/abc 
... some work ... 
:e <-- is there a way I can have this :e start in ~/foo/bar instead of ~/foo ? 

基本上,我想:电子启动目录

感谢“上次编辑文件的路径名”!

回答

12

有很多原因不喜欢autochdir,因为它搞砸了一些插件,如果你最终这样做:e ../../../foo.txt你没有获得任何东西。正如一个想法试试这个CMAP我敲了

:cnoremap red edit <c-r>=expand("%:h")<cr>/ 

那么你可以键入:红色,并得到

:e /the/path/to/your/current/files/dir/ 

(编辑:因为有与红色启动命令或者使用的z代替红)

要扩展该主题,还要查看FuzzyFinder插件和一些自定义映射,以便快速跳转到您始终正在编辑的常用文件。例如

10个左右的常规文件应该不超过2个按键。它有助于如果他们系统地命名

这是我用于Django的想法。

http://code.djangoproject.com/wiki/UsingVimWithDjango#Mappings

+0

这正是我正在寻找的答案。 – anon 2010-01-31 17:32:59

2

对不起,但是vim的:edit命令需要一个相对于vim实例当前工作目录解释的路径。

你有一个:cd命令,你可以使用:cd bar然后工作一段时间,然后:cd ..

希望能帮到一些。

3

要始终将工作目录更改到当前文件的目录下我有这个在我的.vimrc

if has("autocmd") 
    autocmd BufEnter * :lcd %:p:h 
endif " has("autocmd") 
+0

太棒了!但是当你用':bd'关闭所有文件时,像这样的自动命令总是显示错误'E32'。 – Niloct 2011-05-23 15:07:00

11

尝试autochdir选项。它会自动将当前工作目录更改为最近打开或选择的文件。在.vimrc中:

set autochdir 

欲了解更多信息,:help autochdir

0
  • :cd目录改变
  • :pwd打印当前之一。
1

前段时间我问有关在Vim邮件列表上的问题:http://www.mail-archive.com/[email protected]/msg03266.html也许你会发现在该线程有用的提示。

我测试了很多插件,但由于基于CLI的图形界面并不是我的口味,所以我只是简单地使用了标准的vim和几个配置设置。

由于嘎指出,该行设置工作目录与您的工作文件:

autocmd BufEnter * lcd %:p:h 

我的另一个技巧是使用wildmenu。当您执行以下操作时,可以更轻松地查看当前目录中的文件概述:e然后TAB。我是一名python程序员,因此最后一行显示了如何隐藏python解释器吐出的自动生成的文件,但您可以使用它来隐藏java .class文件或c .obj文件或其他任何文件。

set wildmode=list:longest 
set wildignore=*.pyc,*pyo 
+0

我做了类似的事情,但排除了帮助文件:'au BufReadPost * if&ft!='help'|无声! cd%:p:h | endif' – idbrii 2011-06-15 19:19:59

0

为什么不只是:E?探索当前文件的目录。

:help :E

0

这不正是你想要的,但检查出NERDTree。

+0

这实在是一个评论,而不是一个答案。有了更多的代表,[你将可以发表评论](http://stackoverflow.com/privileges/comment).. – Jack 2012-11-02 00:38:10

+0

@Jack我知道... – Gaelan 2012-11-02 01:30:14

0

在vim/gVim上我只有cd C:/blah/blah在我的vimrc的顶部。我想它适用于所有平台。

我个人对每个项目都使用vagrant,所以一张CD就够了,但我认为你可以得到vim来使用不同的配置文件,-u flag我想。

或者为每个项目映射一个按键,这样按下Ctrl + F1确实是cd path/to/project/1而Ctrl + F2确实是cd path/to/project/2也许?

注意:我不使用任何插件