Opening a directory in vim

2020-06-30 11:00发布

I'm a mac user giving vim a serious try. Most of the GUI editors I'm used to allow me to open a directory as a "project" by executing a command like:

edit ~/www/example.com/

The vim equivalent vim ~/www/example.com/ will show me a list of files in the directory, and I can open them. But it does not set vim's working directory to that path, I have to run :cd . to set the working directory.

Is there some way, perhaps with a shell script, to open vim and have it's working directory set to a given path?

I'm actually using MacVim, if that makes any difference.

标签: vim vi macvim
5条回答
地球回转人心会变
2楼-- · 2020-06-30 11:05

Thanks to @sehe's suggestions, I came up with this. Not sure if it's the best solution, but it seems to work.

#!/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
查看更多
姐就是有狂的资本
3楼-- · 2020-06-30 11:17

Try adding the following to your .vimrc

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

This will make the directory browsing use a tree style for showing the files (you can expand a directory by putting the cursor on a directory and hitting enter) and make the current working directory also be the one you are browsing.

You might also be interested in the NERDTree plugin that provides a directory browser that is more advanced than the built in one. It has an option

let g:NERDTreeChDirMode=2

to make the current directory match the root of the displayed tree or

let g:NERDTreeChDirMode=1

to change the directory whenever you use a command (:e or :NERDTree) to browse a new directory.

查看更多
爷、活的狠高调
4楼-- · 2020-06-30 11:24

Braindead:

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

Less so:

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

You can always map :cd %:h to a convenient key or put in an autocommand (I wouldn't actually recommend the latter, but there is no arguing about taste)


Oh and for directories instead of files:

:cd %

is quite enough

查看更多
男人必须洒脱
5楼-- · 2020-06-30 11:26
$ cd ~/my/working/directory
$ vim .
查看更多
迷人小祖宗
6楼-- · 2020-06-30 11:31
登录 后发表回答