Открытие каталога в vim - PullRequest
19 голосов
/ 09 мая 2011

Я пользователь Mac, серьезно пробую vim.Большинство графических редакторов, которые я использовал, позволяли мне открывать каталог как «проект», выполняя такую ​​команду, как:

edit ~ / www / example.com /

Эквивалент vim vim ~/www/example.com/ покажет мне список файлов в каталоге, и я смогу их открыть.Но он не устанавливает рабочий каталог vim по этому пути, я должен запустить :cd ., чтобы установить рабочий каталог.

Есть ли какой-нибудь способ, возможно, с помощью сценария оболочки, чтобы открыть vim и иметь его рабочий каталогустановить заданный путь?

Я на самом деле использую MacVim, если это что-то меняет.

Ответы [ 5 ]

8 голосов
/ 10 мая 2011

Благодаря предложениям @ 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 голосов
/ 09 мая 2011

Braindead:

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

Меньше:

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

Вы всегда можете сопоставить :cd %:h с удобной клавишей или ввести автокоманду (я бы на самом деле не рекомендовалпоследнее, но о вкусах спорить не приходится)


Да и для каталогов вместо файлов:

:cd %

вполне достаточно

2 голосов
/ 03 октября 2011
$ cd ~/my/working/directory
$ vim .
2 голосов
/ 09 мая 2011

Поможет ли это?

set autochdir

Я нашел это http://vim.wikia.com/wiki/Set_working_directory_to_the_current_file

1 голос
/ 09 мая 2011

Попробуйте добавить следующее к вашему .vimrc

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

Это заставит при просмотре каталога использовать стиль дерева для отображения файлов (вы можете развернуть каталог, наведя курсор на каталог и нажав Enter) и сделать текущий рабочий каталог также тем, который вы просматриваете.

Возможно, вас также заинтересует плагин NERDTree, который предоставляет браузер каталогов, который является более продвинутым, чем встроенный.У него есть опция

let g:NERDTreeChDirMode=2

, чтобы текущий каталог соответствовал корню отображаемого дерева, или

let g:NERDTreeChDirMode=1

, чтобы изменить каталог всякий раз, когда вы используете команду (:e или :NERDTree) для просмотра нового каталога.

...