Zen Coding 1.2

Очередная порция исправлений ошибок, новых возможностей и прочих приятных изменений пакетов Zen CSS и Zen HTML, а также новый способ их распространения.

Главное изменение связано с открытием филиала проекта на Google Code — Zen Coding. Теперь следить за появлением новых версий станет проще, а получить их можно будет двумя способами: по старинке — скачав и распаковав архив, либо при помощи svn, что позволит удобно следить за внесёнными изменениями.

С первым способом всё понятно — архиватором умеют пользоваться все, поэтому вы знаете, что делать с последними версиями пакетов на странице загрузки. Второй способ чуть сложнее: если вы работаете под Mac OS X, то всё необходимое для работы с svn в вашей системе уже есть, однако можно пойти дальше и установить замечательное приложение Versions или воспользоваться встроенной поддержкой svn в редакторе Coda. Я же опишу простейший способ — при помощи Терминала, стандартной программы Mac OS X.

Для начала откройте Терминал, набрав его название в Spotlight — по-русски или по-английски, в зависимости от языка системы. Дальше всё удивительно просто: при помощи первой команды вы переходите на рабочий стол, при помощи второй — скачиваете на него свежую версию пакета:

cd ~/Desktop/
svn co http://zen-coding.googlecode.com/svn/trunk/ .

Если же вы работаете под Windows, то могу предложить вам воспользоваться утилитой TortoiseSVN — тоже не менее простой в обращении. Так, с контролем версий разобрались, переходим к списку изменений:

Zen HTML

Система комбинаций E+n, которая разворачивала селекторы с необходимым количеством детей (от одного до пяти) была полностью заменена техникой, которая позволит быстрее набирать любые последовательности списков для элементов <li>, <th>, <td> и <option>. Суть техники заключается в том, что нажатие клавиши Tab после каждого закрывающего элемента будет создавать новую строку и следующую пару элементов. Таким образом, кобинация li Tab Значение Tab Tab Значение создаст нам такую конструкцию:

<li>Значение</li>
<li>Значение</li>

Поясню: первый Tab создаст нам первый <li>, второй выведет курсор за его пределы, а нажатый тут же третий, создаст новую строку со вторым <li>. Так можно продолжать довольно долго, процесс завораживает своей простотой. Далее — небольшие изменения:

Zen CSS

Новая версия этого пакета также обзавелась механизмом быстрого набора длинного списка свойств, без необходимости вручную создавать новую строку. Теперь по сочетанию ;+Tab, т.е. после каждого закрытого правила, автоматически вставляется перевод строки. Например, комбинация fl:l Tab Tab b:n Tab Tab c Tab создаст нам следующий код:

float:left;
border:none;
color:#FFF;

То есть: первый Tab создаёт свойство, а следующий новую строку и всё по новой. Если же свойство разворачивается с предустановленными значениями, то вам сначала придётся пройтись по ним, а потом уже выйти за пределы правила и создать новую строку.

Также, по многочисленным заявкам, была введена специальная переменная, которая регламентирует появление пробела в правиле после двоеточия и до значения. Таким образом, вы можете продолжать использовать все удобства этого пакета, не меняя коренным образом свои правила форматирования кода. Устанавливается эта переменная настройках TextMate: Preferences → Advanced → Shell Variables → Variable: TM_CSS_SPACE, Value: [пробел]. Далее — небольшие изменения:

Итак, напоминаю — пакеты теперь можно скачать на странице проекта в Google Code или через svn-репозитарий, а я с интересом жду ваших отзывов, замечаний и, самое главное, — предложений.

Комментарии

31

Супер ! Спасибо большое за новую версию. Однако, есть одно серьезное предложение: почему бы не использовать для размещения проекта github ? Там намного более удобно следить за версионностью + многие люди (включая меня) смогут получить возможность по удобной модификации вашего замечательного пакета в идеальный для нас всех продукт.

Я так и думал, что цепочки элементов по табуляции вам понравятся :-)
Рад, что вы включили их в свой набор снипетов.
Спасибо, ваши статьи дают хорошие подсказки, как можно оптимизировать работу и в других редакторах.

ever.zet, я бы с удовольствием положил проект на GitHub, если бы понимал ценность данного действия. Мне кажется, что svn в данной ситуации проще и понятнее для большинства, и точно также позволяет организовать совместную разработку, если найдутся желающие.

Я не очень понимаю зачем мне нужно держать один репозитарий для тех, у кого есть Git, второй для тех, у кого есть только svn, а ещё контролировать актуальность просто-архивов. Сложновато, не находите? Отчасти потому, что у меня самого не было повода пользоваться Git'ом и не думаю, что в ближайшее время появится.

Ну а бандлы можно: а) коммитить прямо в нужную папку, мёржа по дороге б) запускать как .tmbundle файлы — тогда TextMate сам их смёржит.

В общем, Git — хорошо, но пока непонятно зачем.

Не могу не напомнить что тег br можно вставить комбинацией ^+Enter в стандартной бандле. Там же для оборачивания тегов ^⇧W.

Дима, я знаю, просто Ctrl + Enter слишком уж далеко разнесены (если речь про компактные клавы с одним Ctrl слева), а Ctrl+Shift+W я предпочёл расширить — хотя то оборачивание, что в итоге получилось, мне не слишком нравится (

Pepelsbey, предыдущие "проблемы" для e-texteditor я решил так как и предлагал (вручную добавил слеши и изменил в некоторых местах регистр буквы с которой начинается атрибут свойства, например ta:c заменил на ta:C, d:b на d:B). Ещё один вопрос, в e-texteditor невозможно обернуть в какой-нибудь тег ни одну строку (потому что Ctrl+W вызывает закрытие вкладки), ни несколько строк (в "e" на это сокращение по-умолчанию установлено выделение одного слова). Может быть вы подскажите, где можно изменить это сокращение на свое? Спасибо.

Сокращения Ctrl ( + Shift) + W я наверное совсем исключю из следующей версии, как-то скверно они работают. А изменить комбинации клавиш просто: нужно выделить команду и ввести нужное сочетание. По крайней мере так дело обстоит в TextMate…

В остальном — прописные буквы-модификаторы слишком уж неудобны, поэтому разве что делать отдельную ветку для E. Я наверное всё-таки попробую поставить его на виртуальную машину и посмотреть как там всё работает.

pepelsbey, а вы точно включили в версию 1.2 "оборачивающую" команду. Я просто не могу её найти.

Если будет ветка для E будет здорово. =) Спасибо.

огромное спасибо за труд! более-менее в Е работает )
а делать отдельную ветку для E очень хорошая идея!

pepelsbey, ещё предложение небольшое для улучшения - ввести сокращение для оборачивания выделенного фрагмента текста/кода в комментарии. Как думаете?

большое спасибо за новую версию. Обращаюсь ко всем пользователям E. У меня возникли некоторые проблемы:

1. Скопировал себе HTML Zen 1.2, при подставке, скажем, div tab выводиться меню, спрашивающее каким бандлом пользоваться HTML Zen или HTML. Я решил эту проблему путем отключения HTML в Manage bandles, но может это делается не так?

2.

li Tab Значение Tab Tab Значение

у меня к сожалению третий таб не срабатывает.

P.S. ветка для E? очень жду )

Я решил эту проблему путем отключения HTML в Manage bandles, но может это делается не так?

Да, одновременная работа двух пакетов для одного языка практически невозможна, так что стоит определиться )

Разобрался во второй проблеме — конструкция не срабатывает, т. к. в Е li:next подхватывается только если перед закрывающим тегом стоит пробел ( li Tab Значение Пробел Tab Tab Значение )

Ещё раз здравствуйте, вот решил снова спросить и посоветовать. В стандартном пакете хтмл есть команды которые вставляют код при перенесении файла в открытое окно, например при перенесении картинки в открытое окно будет вставляться код с полным путем для картинки. Так же и в цсс. Ещё есть возможность для проверки валидации кода прямо в окне программы и возможность перезагружать браузеры, в которых открыт файл прямо из программы, например нажимаешь сочетание, файл сам сохраняется и происходит перезагрузка окон браузеров, так что можно сразу смотреть результат. К сожалению работает последнее только под маками, а на форуме Е готового решения нету (или я с ними не разобрался).
Хочется узнать, будет ли это включено в новые версии, ну и когда уже ждать их? =)

Следующая версия скорее всего будет техническим обновлением, без фич, но с багфиксами. А скоре появится пост с обсуждением версии Zen Coding 2.0, которая сильно будет отличаться по механизму обработки сокращений. В планах также более широкая поддержка CSS 3 и HTML 5.

Насчёт указанных фич — ничего не мешает вам копировать их из существующих оригинальных бандлов, тем самым дополняя Zen'овские.

С Windows-путями тут конечно большая проблема, поскольку TextMate не слишком заморачивается с именами снипетов. На ум приходит только выпускать отдельную версию для Windows, которая не содержит такого криминала.

Здравствуйте!
1. Подскажите пожалуйста как в ZenCoding имея такие три строки

item1
item2
item3

сделать


<ul>
    <li><a href="">item1</a></li>
    <li><a href="">item2</a></li>
    <li><a href="">item3</a></li>
</ul>

2. как добавить свой (шорткат) или как называется, свою аббревиатуру которая будет например вставлять какой-то мой код

3. как сделать похожее первому ul>li>a>item
item просто текст, такой код в итоге


<ul>
    <li><a href="">item</a></li>
    <li><a href="">item</a></li>
    <li><a href="">item</a></li>
</ul>

Смотрел видео, там 1,2 увидел как делается но там не показаны горячие клавиши как были вызваны окна :(

Заранее спасибо!

Спасибо Вадим за помощь с постом, а Вы не подскажите? Вы ведь автор этого детища, наверняка вы все о нем знаете :) Или тут зависит от используемой IDE? Я использую webstorm.

Валера, боюсь, что Zen Coding всё-таки танцует от кода, а не от содержимого. Но насколько я знаю, Сергей Чикуёнок написал некоторые фичи, зависящие от редактора, например Wrap with Abbreviation.

Спасибо, я даже не думал что тот ролик который смотрел ранее Сергей записывал, только что нашел на его канале или профайле(как правильно не знаю) vimeo.
Это видео ZenCoding минута 2:20 начинает делать о том что я спрашивал.

Там как раз вызывается окно аббревиатур..., спасибо за ссылку сейчас изучу, сам не нашел бы никогда, так глубоко!

Позавчера нашел Ваш канал pepelsbey , классно что есть такие люди которые что-то рассказывают интересное делятся своими наработками и опытом, спасибо большое!

Правда оператор, или тот кто держал камеру, на видео "Динамическая графика", он то панель вообще не снимал, когда Вы показывали примеры и код, а если снимал то ничего не видно было.. Какой то !молодец самое главное звук был и слава Богу.

Ну а сам рассказ вышел интересным, первый раз познакомился с SVG и canvas. Думал эти технологии намного сложнее.