Научился рисовать в виме псевдографикой. Понял, что это будет хорошим подспорьем и ценным навыком. Очень часто хочется оформить данные таблицей или сделать простейший набросок от руки. Я привык иллюстрировать свои записи в бумажной записной книжке небольшими схемами-набросками и в АБТФ этого некоторое время не хватало.

читать дальше в wordpress'e


Разумеется, есть Libre Office, есть Google Docs, есть M$ Office в конце-концов. В их тексте можно делать рисунки, можно вставлять таблицы, но как по мне это типичное не то. Еще есть масса органайзеров, которая позволяет вставлять таблицы и рисунки (а-ля WinOrganizer не к ночи будь помянут) и делать разные выделения шрифтов (если мне не изменяет склероз это называется RTF - rich text format).

Когда я перешел на текстовый режим накопления информации - с этими ограничениями пришлось разбираться по отдельности. Легче всего было с RTF - вместо выделения шрифтов можно было использовать тестовую разметку где *выделение текста* делается особыми знаками разметки. Сначала это была чисто стихийная разметка, потом я перешел на markdown - как наиболее подходящий и удобный формат. И сразу ощутил преимущества - во-первых хорошая наполненность текста, во-вторых возможность оформлять документ, не особо отвлекаясь на то, как он будет выглядеть. Но это - отдельный разговор. Как и вопрос математических формул, которые, как оказалось тоже достаточно удобно и наглядно формируются через Maxima.

С картинками и таблицами я пришел к тому, что если мне нужен рисунок или таблица - я делаю их отдельно, кладу в "хайв" (мое хранилище для нетекстовых файлов) и ставлю в заметках ссылку на этот файл. У меня в vim работает универсальный просмотрщик по - нужный файл легко просмотреть встав на его линк курсором и нажав . Аналогично можно просмотреть любую сетевую ссылку - это единый механизм и он очень удобен.

Получается запись в стиле:

~/hive/jpg/map20090701.jpg
карта маршрута на первое июля


или

~/hive/odm/jrn20090701.ods
рабочий журнал по 1-ому числу

или даже

~/hive/djvu/КРИ200808.djvu
сканы записной книжки за август 2008-го года


или даже

http://tengu911.wordpress.com/cat/
Тематический каталог заметок

Недостстаток такой схемы очевиден - нельзя посмотреть все "сразу в тексте" + нужно ждать пока загрузится просмотрщик. Еще нужно, чтобы документ лежал на своем месте (в линуксе это как раз не проблема, кроме того я кладу в hive в основном свои схемы и документы, так что он получается не очень большого размера и его можно постянно держать на диске и флэшке, которую я ношу с собой).

Преимущества - схема поддерживает любой формат - любой, который может обработать операционная система. От картинок до видеофайлов. Эти файлы не засоряют и не увеличивает размер основного файла (в WinOrganizere того поколения, которым я пользовался, стоило добавить в текст достаточно много картинок и таблиц и файл начинал грузиться и работать "со скрипом"). Даже если файл куда-то запропастится - в ссылке остается его имя, по которому его можно отыскать на диске. Эта схема с моей точки зрения прекрасно вписывается в принцип KISS.

Но. При всем при этом ни старая система, ни новая мне не нравилась. То есть я заметил, что есть определенный класс задач, которые не подходят под эту систему вообще. Как я описывал это выше - часто делая заметки в бумажной записной книжке в этой же книжке рисуешь картинки и набрасываешь таблички. Набрасываешь от руки - поскольку тут важен образ, схема, а не точное или "красивое" изображение. У Макса Фрая был хороший термин для таких вещей "заметки на салфетках".

Между прочим, подобные наброски используют достаточно продвинутые люди. Например, заглянув в блог Шаттлворта, можно обнаружить там массу таких вот "салфеточных набросков" - например в качестве иллюстраций к интерфейсу Unity или как иллюстрацию к индикации на панели.

Когда хочется набросать нечто подобное в текстовых заметках "для себя", запускать для этого большой программный пакет типа офиса, GIMP'а или автокада - все равно что в реальности ради небольшой схемы тащить записную книжку на кульман и чертить в ней при помощи штриховальных линеек, лекал, угольников, циркулей и прочих чертежных инструментов. Помянутый выше Шаттлворт использует для этого отдельное платное приложение (Balsamiq), но это имхо вообще перебор - мало того, что платить за "простые наброски" сотню долларов, так еще и загружать для этого целый AIR-комбайн. Еще тут играет роль определенная эстетика. Если "бальзамик" маскируется "под бумагу", то тут все честно - чистый киберпанк плейнтекст.

Это явно не мой путь. Наброски нужно делать быстро, на ходу, не заморачиваясь на что-то сложное, "в режиме работы мысли". Дойдя до этой мысли я вспомнил, что vim хорошо заточен на работу с псевдографикой. Закопавшись в интернеты, я нашел множество дополнений которые реализуют отдельные схемы работы - иногда достаточно сложные и интересные. Например, sketch или DrawIt!. Еще нашлось несколько интересных сторонних программ, которые хорошо сочетаются с vim - например boxes, которая идеально подходит для создания комментариев в тексте программ - я давно себе такое искал.

Однако, это было все не то. Я точно помнил, что когда-то, просматривая документацию самого vim'а читал про рисование таблиц и работу с псевдографикой "по дефолту" - средствами, уже встроенными в vim. Я искал простой инструмент, а не что-то сложное и что-то, что нужно устанавливать в редактор дополнительно. И я это нашел.

Все это можно почитать или в родном хелпе vim (набрать :h 25.5) или в онлайновой документации или выкачать русское руководство и найти в нем файл usr_25.rux.

Рисование в виме "псевдографикой" базируется на нескольких концепциях.

1. Виртуальный режим редактирования, который включается через комстроку:

set virtualedit=all

или в короткой форме:

set ve=all

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

2. Копирование блоками.

Ctrl+V (Ctrl+Q в M$ Windows) - включает режим выделения блоками. В котором можно выделять не строкой, а прямоугольным (или квадратным) блоком - например выделить колонку таблицы и переставить ее в другое место.

3. Режим виртуальной замены. Если вместо r сделать gr - при замене будут подставлены нужные пробелы. Аналогично если нужно заменить много символов - можно сделать gR. А еще рулит массовая замена - если что-то выделить, потом нажать r и ввести любой символ ( = например) - то выделение будет забито им. То есть можно в строке:

123456

Выделить цифры с 2 по 5, дальше не выходя из режима выделения набрать r и любой символ (например #) - после чего получим:

1####6

В сети при желании можно накопать несколько хороших видеороликов, иллюстрирующих работу в этих режимах. В частности работу в режиме визуального блока (очень подробное руководство - must see, даже если вы не работаете с псевдографикой), иллюстрация работы с псевдографикой средствами vim и прочая и прочая. Правда режим virtualedit=all мне пока не встречался, хотя он чертовски удобен для рисования такой графикой.

К сожалению, не могу привести ничего из набросков - они делаются в основном по очень личным разделам информации. По опыту использования могу уже сказать, что получается чертовски удобно. Особенно удобно работать с "текстовыми" таблицами. Поменять колонки местами, вписать в колонку новое значение с помощью виртуальной замены и так далее и тому подобное. Там где не нужно строить "вычислительные таблицы" - то есть там где таблица составляется для себя, составлять ее с помощью ascii-art'а намного удобнее и приятнее.

URL записи