Vim: многофайловое редактирование - с разными марками в разных расколах - PullRequest
0 голосов
/ 11 марта 2010

Я недавно выполнил vim convert (из модных IDE, таких как eclipse.)

Я люблю команду :make в vim и широко ее использую; Однако я также люблю редактировать несколько проектов (с отдельными make-файлами.)

Так что обычно для редактирования более одного проекта я буду делать

pushd project1
vim project1.cpp
[suspend signal]
pushd ../project2
vim project2.cpp

и теперь я могу переключаться между двумя проектами с помощью ctrl+z, т.е. сигнала приостановки, и fg.

Когда это становится проблемой, это когда я хочу открыть один проект в контексте другого, чтобы я мог сделать копирование / вставку. Так что если вместо вышеизложенного я делаю

pushd project1
vim project1.cpp
:vsp ../project2/project2.cpp

Я могу редактировать оба одновременно в одном и том же процессе vim, однако я не могу эффективно собрать одно или другое с помощью команды :make, она только соберет проект 1.

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

Ответы [ 2 ]

2 голосов
/ 11 марта 2010

Являются ли команды make, которые вы хотите выполнить, одинаковыми для каждой? Так проблема в текущем каталоге? Вы можете использовать :lcd, чтобы изменить каталог только для текущего окна, чтобы он работал в соответствующем каталоге для каждого окна. Чтобы сделать это более автоматическим, вы можете настроить автокоманду (на BufWinEnter, я думаю), когда вы создаете это разделенное окно для запуска :lcd expand('%:h'), или просто сопоставить ключ с ним, если вы не хотите всегда делать это.

(Вы также можете сопоставить ключ / создать собственную команду для комбинации lcd и make, возможно, сохраняя нажатия клавиш, но затем без необходимости записывая cd'ing перед каждым выполнением. Не так уж долго.)

P.S. Причина, по которой я спросил, были ли команды make одинаковыми, заключается в том, что вы можете установить makeprg и другие связанные параметры локально (используйте :setlocal вместо :set).

1 голос
/ 11 марта 2010
Команда

vim :make действительно просто выполняет программу, настроенную как makeprg в текущем каталоге (make по умолчанию).

Запуская каждый vim процесс в каталоге проекта, вы косвенно устанавливаете текущий каталог для этого сеанса vim, но, конечно, вы можете изменить текущий каталог внутри текущего сеанса, например, когда вы начали в project1/, вы можете просто cd до project2/ и построить его внутри vim с помощью

:cd project2
:make

или как, если вам нужно только изменить каталог для текущего окна, делайте то, что предлагает Джефроми

:lcd project2
:make

Существуют плагины, которые говорят, что они делают это проще ( этот кажется популярным), но мне никогда не нужно было их использовать.

...