在vim中打开目录

在vim中打开目录,vim,vi,macvim,Vim,Vi,Macvim,我是一个mac用户,正在认真尝试vim。我使用的大多数GUI编辑器都允许我通过执行以下命令将目录作为“项目”打开: 编辑~/www/example.com/ vim等价物vim~/www/example.com/将显示目录中的文件列表,我可以打开它们。但是它没有将vim的工作目录设置为该路径,我必须运行:cd.来设置工作目录 是否有某种方法(可能是使用shell脚本)打开vim并将其工作目录设置为给定路径 我实际上在使用MacVim,如果这有什么区别的话。脑死亡: (cd /path/to/d

我是一个mac用户,正在认真尝试vim。我使用的大多数GUI编辑器都允许我通过执行以下命令将目录作为“项目”打开:

编辑~/www/example.com/

vim等价物
vim~/www/example.com/
将显示目录中的文件列表,我可以打开它们。但是它没有将vim的工作目录设置为该路径,我必须运行
:cd.
来设置工作目录

是否有某种方法(可能是使用shell脚本)打开vim并将其工作目录设置为给定路径

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

脑死亡:

 (cd /path/to/dir && vim file)
少一点:

 vim /path/to/dir/file +':cd %:h'
您总是可以将
:cd%:h
映射到一个方便的键,或者放入一个自动命令(我并不推荐后者,但对于味道没有争议)


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

:cd %
这足够了吗

set autochdir

我找到了它

尝试将以下内容添加到您的.vimrc

let g:netrw_liststyle=3
let g:netrw_keepdir=0
这将使目录浏览使用树样式来显示文件(您可以通过将光标放在目录上并按enter键来展开目录),并使当前工作目录也成为您正在浏览的目录

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

let g:NERDTreeChDirMode=2
使当前目录与显示的树的根目录匹配,或

let g:NERDTreeChDirMode=1

每当使用命令(
:e
:NERDTree
)浏览新目录时更改目录。

感谢@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

谢谢,这为我指明了正确的方向!但这不是完美的答案,因为您提到的“文件”不存在,我想用给定的工作目录打开vim,而不是在vim中打开文件(我想打开的文件可能有几个子目录深),我认为autochdir会破坏我的工作流程,我处理的项目包含数百个目录中的数千个文件,需要将工作目录作为项目的“根目录”。在目录视图中,只需点击
c
即可将您刻录到该目录中-这并不完全符合您的要求,但值得了解。可以为您自己的问题提出答案。我建议您将正在进行的工作从问题中移出,因为这不是问题的一部分。如果你回答自己的问题的分数达到3分或更高,你甚至可以获得一枚徽章。(回答得好!)齐吉,谢谢。我确实试着回答我自己的问题,但它不允许(关于在回答你自己的问题之前等待24小时?)。当时不确定该怎么办,但现在已将其作为答案发布。
$ cd ~/my/working/directory
$ vim .