Есть ли сценарий, который позволил бы мне редактировать несколько файлов, как если бы они были одним файлом в VIM? - PullRequest
4 голосов
/ 25 декабря 2010

Я предпочитаю редактировать в одном большом файле, а не во многих независимых файлах, но из-за ограничений в языках, управления исходным кодом и предпочтений товарищей по команде мне нужно выводить во многие файлы.При поиске будет проходить все файлы в исходном каталоге и генерироваться один файл для редактирования в VIM со специальными маркерами разделителя файлов.При сохранении он будет сохранять изменения в правильных файлах в идеале разумным способом, основываясь только на внесенных изменениях.

Существует ли что-то подобное?

Ответы [ 3 ]

2 голосов
/ 25 декабря 2010

1001 * шар * Ну, вы могли бы использовать shar(1), но он ставит X перед каждой строкой, что, вероятно, вас раздражает. (Шар пришел с моим Mac, но в моих системах Linux вам нужно добавить пакет.) Shar сам по себе является коротким сценарием оболочки, так что вы можете изменить его достаточно легко, чтобы работать без X. Вы можете попробовать скопировать / usr / bin / shar в / tmp и применить этот diff с patch(1). --- /usr/bin/shar 2009-07-13 22:26:18.000000000 -0700 +++ /tmp/shar2 2010-12-24 19:05:34.000000000 -0800 @@ -65,8 +65,8 @@ echo "mkdir -p $i > /dev/null 2>&1" else echo "echo x - $i" - echo "sed 's/^X//' >$i << 'END-of-$i'" - sed 's/^/X/' $i + echo "cat >$i << 'END-of-$i'" + cat $i echo "END-of-$i" fi done

1 голос
/ 26 декабря 2010

Вместо сброса нескольких файлов в один, обработки этого и последующего разделения материала на части вы можете использовать bufdo или windo, чтобы повторить команду на всех открытых буферах: открыть буферы, которые нужно обработать, затем разыгратьbufdo команда, и она будет работать с каждым открытым файлом: http://vimdoc.sourceforge.net/htmldoc/windows.html#list-repeat

1 голос
/ 25 декабря 2010

Это напоминает мне формат vimballs.Однако он предназначен для развертывания файлов в пользовательский каталог runtimepath.

Другими словами, вы можете перечислить все файлы, к которым хотите присоединиться, и применить :MkVimBall (здесь пример ).Затем для извлечения вам придется на мгновение (т.е. сохранить и восстановить его значение после извлечения), установив &runtimepath в корневой каталог вашего проекта перед извлечением с помощью :so %.

. Вы такжеприходится играть с различными опциями, такими как &filetype и т. д.

Это грязный хак, но хорошо ... он справится с работой.

...