Opening a directory in vim

大城市里の小女人 提交于 2019-12-04 22:35:13

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

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

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

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.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!