Предотвратить vim: сделать от изменения текущего рабочего каталога? - PullRequest
2 голосов
/ 03 февраля 2010

Справка:

При вызове команды vim make она изменяет текущий рабочий каталог (cwd) на каталог текущего файла. Затем он запускает makeprg оттуда. Я хочу запретить команде make изменять cwd и вместо этого вызвать makeprg из каталога родительского экземпляра vim

Пример:

У меня есть следующая стандартная иерархия проекта Perl

    project/
      lib/
        My/
          Module/
            Foo.pm

Мой PERL5LIB установлен на

    PERL5LIB=':lib'

В моем .vimrc у меня есть

    compiler perl
    set makeprg=perl\ -c\ %

Я редактирую свой модуль, используя vim из корневого уровня проекта:

    /path/to/project$ vim lib/My/Module/Foo.pm

В vim: pwd работает как положено:

    :pwd
    "/path/to/project"

Также вызов! Perl -c работает как положено, находит мой проект lib и отображает результат в окне оболочки:

    :!perl-c %
    OUTPUT:
       perl -c lib/My/Module/Foo.pm
       lib/My/Module/Foo.pm Syntax ok

Однако: make возвращает ошибку

    :make
    "Can't open perl script lib/My/Module/Foo.pm : No such file or directory"

Установка makeprg в pwd показывает проблему

    :set makeprg=pwd
    :make
    "/path/to/project/lib/My/Module"

Поэтому, прежде чем make запустит makeprg, он переключается в каталог текущего файла, поэтому perl не может найти там «lib /.../ Foo.pm».

Можно ли как-то помешать make сделать это?

1 Ответ

4 голосов
/ 03 февраля 2010

Если команда Vim's: make изменяет текущий рабочий каталог, а autochdir не установлен, плагин может добавить автокоманду в набор QuickFixCmdPre. Один из плагинов, который делает это, является eclim, который вызывает функцию QuickFixLocalChangeDirectory (), если g: EclimMakeLCD установлен в 1.

Используйте: au, чтобы найти все автокоманды в текущей конфигурации, обращая особое внимание на записи для QuickFixCmdPre и make.

...