Поддержка Консалтинг Обучение Jamf Pro Блог

Вставка без стилей

Алексей Лузин 19.05.2010

Сложно объективно рассуждать о таких возможностях Mac OS X, которые наверняка приносят кому-то немалую пользу, в то время как тебе самому кажутся жутко неудобными. Например, мне ни разу в жизни не пригодилась эта волшебная фича, сохраняющая в буфере обмена текст вместе со стилем. И ладно, если бы она существовала на правах опции и подключалась в одной из панелей системных настроек, как VoiceOver или клавиатурная раскладка под PC. Но ведь Apple безапелляционно предлагает нам копировать и вставлять текст, утяжеленный шрифтами, кеглями, болдами, и что у них есть еще там.

Рассмотрим некоторые меры, которые позволят обойти навязчивый сервис и добиться права на свободный копипейст неформатированного текста.


1.
Пожалуй, самый популярный обходной прием, описанный когда-то на MacOSXHints и еще много где. С “безапеляционностью” стилевого копи-пейста я частично погорячился — на самом деле в меню многих приложений есть функция “Paste and Match Style”, которая делает как раз то, что нам нужно, — вставляет фрагмент текста с форматированием текущего документа. И у этого пункта есть свой шорткат: Command-Option-Shift-V. Рекомендация MacOSXHints сводится к тому, чтобы переназначить сочетание Command-V с простого “Paste” на  “Paste and Match Style”.

Но мне этот способ несимпатичен по следующим причинам:
– Пункт “Paste and Match Style” есть далеко не во всех программах. Также этот контекстно-зависимый пункт неактивен в некоторых полях ввода, где подразумевается неформатированный текст. Так что повсеместно рассчитывать на Command-V все равно не приходится.
– При работе с русским интерфейсом можно заметить, что пункт “Paste and Match Style” в разных программах локализован по-разному. В TextEdit это “Вставить в текущем стиле”, в Mail — “Вставить и подобрать стиль”, в Stikies — “Вставить и согласовать стиль”… Придется учесть все мытарства переводчиков и присвоить Command- V каждой из этих фраз.

2.
Другой способ — пропустить текст через некую “зону plain”. Это может быть любой контейнер, который позволяет вставить в себя текст, но не умеет сохранять его стиль. Ради юмора можно использовать для этих целей адресную строку браузера. Только не берите себе в помощники Internet Explorer с его весьма скудными лимитами. То ли дело Safari и Firefox! Их адресных строк хватит на перегон целых журнальных статей! Но лучше, конечно, убирать стили с помощью TextEdit, в котором есть даже специальная функция “Make Plain Text” (Конвертировать в простой текст), вызываемая шорткатом Command-Shift-T.

Недостатки такого метода очевидны: появляется дополнительный копи-пейст и переключение между окнами приложений.

3.
Наконец, третий прием, самый интересный.  Это сценарий AppleScript в две стоки:


<div id="_mcePaste">do shell script "pbpaste | pbcopy"</div>
<div id="_mcePaste">tell application "System Events" to key code 9 using command down</div>

Первая строка прогоняет содержимое буфера обмена через ввод-вывод командной строки, тем самым лишая его стилей. Вторая эмулирует нажатие клавиш Command-V и вставляет текст в контейнер активного окна.
Остается только выбрать способ активации скрипта в рабочей обстановке. Пользователям Mac OS X 10.6 лучше сохранить скрипт как новый сервис в Automator — такая возможность появилась в Snow Leopard. Сервис будет доступен в списке служб на панели клавиатурных настроек, где ему можно присвоить клавиши быстрого доступа.
А для интеграции в 10.4 и 10.5 придется использовать стороннее средство запуска скриптов, например, Butler.
К слову о выборе шортката. Не стоит отнимать Command-V у оригинальной функции “Paste” и резервировать его под скрипт, ведь он сам использует эту комбинацию для вставки. Придумайте что-то свое, например, Command-Option-Control-V.