РСС

Ношу шлем, тяжело дышу…

Меня зовут Антон Шувалов. Я работаю в Lazada. Кроме программирования я пишу музыку и иногда занимаюсь дизайном интерфейсов. Я есть в Twitter, Facebook, и на GitHub. Вы можете написать мне email.

Если вы задумали порадовать меня небольшим подарком (не может быть!) — вот список моих мещанских мечт.

Просмотр man-страниц в textmate

мануал о том как использовать textmate для просмотра мануалов

man

Часто, читая man’ы, я чувствую себя этаким гиком 70-ых. В дебрях терминала, среди черно-белых текстовых полотен. Ни подсветки текста, ни удобной навигации. Кто-то скажет, что, читая man, люди меньше всего думают об интерфейсе. Но с другой стороны, сегодня многие люди предпочитают google, и различные приложения-справочники, олдскуллным консольным man-страницам. Я попробую сделать чтение man’ов более привлекательным.

Использование textmate2 для чтения man’ов

«Использовать один редактор — это хорошо».
Pragmatic Programmer

Для меня, бесспорно, главным и единственным редактором кода является textmate2. Я попробую научить этот редактор читать маны. В этой статье речь пойдет именно о второй версии TextMate. У меня сейчас установлен TextMate Version 2.0 (9090).

Установка бандла

Для начала я установил в TextMate бандл для чтения man-страниц. Скачал, проверил, что название папки заканчивается на .tmbundle. Скопировал бандл в папку.<pre>~/Library/Application Support/TextMate/Managed/Bundles </pre> Перезапустил TextMate.

Использование бандла

Выбираю в меню Bundles->Man Pages->View Man Page. В появившемся окне набираю название shell-команды, например man, и умиляюсь открывшейся TextMate man-страницей. Для того, что бы воспользоваться второй командой бандла - Visit man Page - нужно выделить какую-нибудь shell-команду в тексте. По нажатию на хоткей, либо выбрав в меню Bundles->Man Pages->Visit man Page, откроется новая вкладка со справкой по выделенной команде.

Для гиков и перфекционистов: настройка бандла

Для меня совершенно неудобно тянуться к тэчпаду или мыши, и выделять руками команду. Это лечится настройкой входных данных. Выбираю в меню <pre>Bundles->Edit Bundles…->Man Pages->Menu Actions->Visit Man Page</pre> Слева в настройках нужно установить значение поля input равным word. Здесь же, в редакторе бандлов, можно настроить удобные хоткеи. Они задаются в поле Key Equivalent. Не стоит обделять гуманным сочетанием клавиш и View Man Page. Да, что бы заставить хоткеи работать - мне пришлось удалить значение поля Scope Selector.

Учим textmate читать маны из консоли.

И вроде бы, когда я пишу код в TextMate, все круто: если мне нужна справка - жму хоткей - читаю, просвещаюсь, жгу дальше дальше. Но что мне делать, если я тщетно пытаюсь заставить что-то работать прямо в консоли? Получается, что мне и man там же читать? Нет, это никуда не годится. Я решил использовать bash-скрипт, на котором базируется бандл “Man Pages” как обертку к стандартной команде man.

Для начала узнаем, где лежит оригинальный ман.
which man
Скорее всего это /usr/bin/man. Думаю, что бывают исключения.

Для всех скриптов, к которым я лично приложил руку - у меня есть специальный каталог ~/.scripts. Каталог прописан в переменной окружения $PATH. Я нахожу это удобным. Краткая инструкция о создании такого каталога:

mkdir ~/.scripts # Создаем директорию
mate ~/.profile  # Добавляем ее в $PATH

В открывшемся окне TextMate нужно дописать строчку <pre>export PATH=$HOME/.scripts:$PATH </pre> Либо, если export PATH уже есть, то дописать в нем, сразу после = $HOME/.scripts:. Создадим в ~/.scripts ссылку на наш скрипт:

ln -s /Users/shuvalov/Library/Application\ Support/TextMate/Managed/Bundles/textmate-man-pages.tmbundle/Support/mman ~/.scripts/man

В этот момент, так как я определил директорию с нашим скриптом раньше всего, стандартный man перестанет работать. Вместо него будет выполняться наш скрипт. Теперь осталось изменить в скрипте вызов man на /usr/bin/man (либо путь до оригинальной команды man). Отрываю файл <pre>~/Library/Application\ Support/TextMate/Managed/Bundles/textmate-man-pages.tmbundle/Support/mman </pre> и отредактируем его. (мой пример).
Набираем man man и видим результат труда - man-страница открывается в новом окне textmate, переливаясь чинной подсветкой синтаксиса.

Напоследок. Если, просматривая man в textmate, нажать shift+cmd+t, то откроется меню навигации по ману. Только вот, что бы заставить его работать, нужно в последней строчке скрипта изменить значение sleep на 180, продлив время жизни временной страницы:

(sleep 180; rm -f $tmp) > /dev/null 2>&1 </dev/null &

Заключение.

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

«Как рушатся комплексные системы», Ричард И. Кук
О фундаментальных проблемах больших запутанных систем
7 паттернов для рефакторинга JavaScript-приложений
Перевод отличной серии статей о проектировании и рефакторинге проектов
Музыка для работы
Мои плейлисты: теплый glitch, нежные девичьи голоса, интересная электроника и chillwave
Ссылколог
Коллекционирую полезные ссылки