Есть ли способ синхронизации изменений, внесенных в html-файл, только в некоторых областях Vim? (оставляя другие элементы нетронутыми.) - PullRequest
0 голосов
/ 17 февраля 2010

Есть ли способ синхронизации изменений , внесенных в html-файл только в некоторых областях ? оставляя другие элементы нетронутыми.

Допустим, у меня есть эти 2 файла:

привет-мир-english.html:

<div>
<p>Hello World</p>
</div>

привет-мир-spanish.html:

<div>
<p>Hola Mundo</p>
</div>

И я внесу следующее изменение в первый (hello-world-english.html):

<div id=new-div">

<div>

<h2 id="new-header-2">
</h2>

<p>Hello World</p>
</div>

<div>

Затем я хочу, чтобы второй синхронизировал изменения, но оставил то, что внутри <p> tag, без изменений :

<div id=new-div">

<div>

<h2 id="new-header-2">
</h2>

<p>Hola Mundo</p>
</div>

<div>

P S:

Я использую Vim!

Ответы [ 3 ]

1 голос
/ 17 февраля 2010

Вы можете использовать <iframe> для разделения того, что вы хотите синхронизировать в разных файлах, например:

hello-world.html:
<div id="new-div">
<div>
<h2 id="new-header-2">
</h2>
</div>
</div>

hello-world-english.html:
<iframe src="hello-world.html"></iframe>
<p>Hello World</p>

hello-world-spanish.html:
<iframe src="hello-world.html"></iframe>
<p>Hola Mundo</p>

Но это было бы проблемой, если вы хотите, чтобы неизмененные данные находились, например, внутри одного из этих <div>. Кроме того, вы можете написать генератор, который будет принимать два файла: hello-world.html и список частей, которые вы хотите разделить. Хитрость здесь в том, чтобы использовать специальный маркер, такой как @ (или любой другой редко используемый символ), и заменить его одним из элементов в списке, что было бы довольно тривиально. Просто восстановите, когда либо hello-world.html, либо список обновится, и все готово.

Вернее, нет. Я думаю, что проблема уже решена кем-то с большим опытом, чем я. Google твой друг;).

0 голосов
/ 17 февраля 2010
:h diff

Пусть vim отобразит различия между двумя файлами, и используйте dp и do, чтобы обновить часть, которую вы хотите.

0 голосов
/ 17 февраля 2010

Краткий ответ: Нет.

Более длинный ответ: Это действительно зависит от того, какие изменения вы вносите в файл. На ум приходят две возможности:

1) внесите изменения в один файл и запустите его через ваш diff контроля версий (вы используете контроль версий, не так ли?), Чтобы получить файл патча. Затем примените файл исправления к другому файлу HTML.

2) написать сценарий vim с серией команд редактирования, которые вносят необходимые изменения, а затем открыть каждый файл в vim и :source сценарий.

И то, и другое может произойти сбой или внести непредвиденные изменения, если они обнаружат различия между файлами HTML, которых они не ожидают.

Лучший ответ: Поддерживать две версии html-файла на разных языках - это действительно плохая идея, и она не будет масштабироваться (что, если вы хотите добавить третий язык? Четвертый? Десятый?). Я предлагаю иметь файл шаблона с местозаполнителями для всего видимого пользователю текста и сценарий (на Python, Ruby или как вам удобнее), который заменяет заполнители текстом из таблицы преобразования для конкретного языка. Затем добавление нового языка - это просто вопрос написания новой таблицы преобразования, и вы можете вносить любые изменения в шаблон и регенерировать HTML для каждого языка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...