2011-05-08 87 views
16

我是一个给vim一个认真尝试的mac用户。大部分我所使用的图形用户界面编辑器,让我通过像执行命令打开一个目录作为一个“项目”:在vim中打开一个目录

编辑〜/ WWW/example.com/

的VIM相当于vim ~/www/example.com/将显示目录中的文件列表,并且我可以打开它们。但是它不会将vim的工作目录设置为该路径,我必须运行:cd .来设置工作目录。

有没有办法,或许用一个shell脚本来打开vim并让其工作目录设置为给定路径?

我实际上使用MacVim,如果这有什么区别。

+3

在目录视图只是击中'C'将CD你进入这个目录 - 你想没有做什么,但它值得了解。 – 2011-05-08 23:27:30

+2

可以为自己的问题提出答案。我建议将您的工作进行回答,因为这不是问题的一部分。甚至还有一张可以用3分或更高分回答自己的问题的奖章。 (ps很好的答案!) – Ziggy 2011-05-09 04:49:12

+0

@Ziggy谢谢。我确实尝试回答我自己的问题,但它不允许它(关于在回答自己的问题之前等待24小时的事情?)。不知道该怎么做,但现在已经发布了它作为答案。 – 2011-05-10 04:55:20

回答

6

感谢@ sehe的建议,我想出了这个。不知道这是否是最好的解决方案,但它似乎工作。

#!/bin/bash 

if [ "$#" -eq 1 ];then # is there a path argument? 
    if test -d $1;then # open directory in vim 
    vim $1 +':cd %' 
    else # open file in vim 
    vim $1 +':cd %:h' 
    fi 
else # no path argument, just open vim 
    vim 
fi 
6

新空房禁地:

(cd /path/to/dir && vim file) 

没有那么:

vim /path/to/dir/file +':cd %:h' 

你总是可以映射:cd %:h到方便的按键或将在自动命令(我实际上不会推荐后者,但有没有关于味道的争论)


哦,对于目录而不是文件:

:cd % 

是很不够

+0

谢谢,这指出我在正确的方向!但是不是完美的答案,因为你引用的“文件”不存在,我想用给定的工作目录打开vim,而不是在vim中打开文件(我想打开的文件可能是几个子文件目录深) – 2011-05-08 23:01:22

1

尝试添加以下到您的.vimrc

let g:netrw_liststyle=3 
let g:netrw_keepdir=0 

这将使目录浏览使用树样式显示文件(可以扩展目录通过将光标放在一个目录并按回车键),并使当前工作目录也成为您正在浏览的目录。

您可能还对NERDTree插件感兴趣,该插件提供比内置浏览器更高级的目录浏览器。它有一个选项

let g:NERDTreeChDirMode=2 

使当前目录匹配所显示的树的根或

let g:NERDTreeChDirMode=1 

更改目录无论你使用一个命令(:e:NERDTree)浏览新目录。

1
$ cd ~/my/working/directory 
$ vim .