Часто случается, что текст набран в неправильной раскладке.
Владение методом слепого набора, конечно, существенно уменьшает эту вероятность, но казусы всё равно случаются.
Особенно обидно, если текст довольно большой и перенабирать лень.
Самое очевидное — написать перекодировщик из stdin в stdout:
/* '-CS' тут устанавливает кодировку utf8 для stdin и stdout, 'use utf8' — кодировку самого текста скрипта.
В принципе, можно засунуть всё это в однострочник:
*/
Upd:
Вместо perl можно использовать более дефолтовый sed:
Этот скрипт вполне естественно прикрутить, например, в klipper из kde:
Для регулярного выражения
В gnome наверняка есть что-нибудь похожее.
Правда, вызвать его не очень удобно, поскольку klipper не умеет привешивать хоткеи на отдельные действия:
С помощью утилитки xclip можно вытаскивать текст из буфера и помещать его обратно.
Причём можно обрабатывать как буфер обмена (clipboard), так и текст выделенный мышью (primary selection).
Команда:
Перекодирует выделенное левой кнопкой мыши, результат можно вставить средней кнопкой мыши.
Чтобы обрабатывать не мышиное выделение, а буфер обмена:
Универсальной команды «поместить выделенный текст в буфер/из буфера» в иксах нету.
Зато в большинстве программ это выполняется нажатиями Ctrl-C/Ctrl-V.
Нажатия этих клавиш можно симулировать утилитой xdotool.
Команда в результате получется такая:
Её можно повесить на глобальный хот-кей.
Владение методом слепого набора, конечно, существенно уменьшает эту вероятность, но казусы всё равно случаются.
Особенно обидно, если текст довольно большой и перенабирать лень.
1. unix way
Самое очевидное — написать перекодировщик из stdin в stdout:
#!/usr/bin/perl -CS
use utf8;
$lat=q(`~!@#$%^&qwertyuiop[]asdfghjkl;'zxcvbnm,./QWERTYUIOP{}ASDFGHJKL:"|ZXCVBNM<>?);
$cyr=q(ёЁ!"№;%:?йцукенгшщзхъфывапролджэячсмитьбю.ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭ/ЯЧСМИТЬБЮ,);
while(<>) { eval "tr{$lat$cyr}{$cyr$lat}"; print; }
/* '-CS' тут устанавливает кодировку utf8 для stdin и stdout, 'use utf8' — кодировку самого текста скрипта.
В принципе, можно засунуть всё это в однострочник:
perl -CS -Mutf8 -pe 'tr/qwerty...цйук.../йцук...qwert.../;'
*/
Upd:
Вместо perl можно использовать более дефолтовый sed:
sed -e 'y/qwerty...цйук.../йцук...qwerty.../'
Этот скрипт вполне естественно прикрутить, например, в klipper из kde:
Для регулярного выражения
.*
(любой текст), команда: echo -n "%s" | translit
В gnome наверняка есть что-нибудь похожее.
Правда, вызвать его не очень удобно, поскольку klipper не умеет привешивать хоткеи на отдельные действия:
- Выделить текст
- Поместить в буффер
- Вызвать меню действий
- Выбрать действие (курсором)
- Вставить текст из буффера
2. xclip
С помощью утилитки xclip можно вытаскивать текст из буфера и помещать его обратно.
Причём можно обрабатывать как буфер обмена (clipboard), так и текст выделенный мышью (primary selection).
Команда:
xclip -out | translit | xclip -in
Перекодирует выделенное левой кнопкой мыши, результат можно вставить средней кнопкой мыши.
Чтобы обрабатывать не мышиное выделение, а буфер обмена:
xclip -out -sel clip| translit | xclip -in -sel clip
3. xdotool
Универсальной команды «поместить выделенный текст в буфер/из буфера» в иксах нету.
Зато в большинстве программ это выполняется нажатиями Ctrl-C/Ctrl-V.
Нажатия этих клавиш можно симулировать утилитой xdotool.
Команда в результате получется такая:
xdotool key 'ctrl+c'; xclip -out -sel clip | translit | xclip -in -sel clip; xdotool key 'ctrl+v'
Её можно повесить на глобальный хот-кей.
- Выделяем текст как угодно
- Нажимаем хот-кей