Comments 28
Всё интересно, но исходная задача решается несколько проще, если использовать расширение браузера, вызывающее нужный текстовый редактор. Для Fx такое расширение называется «It's All Text» и создаёт кнопки возле полей ввода. Один клик по кнопке (или хоткей, или в контекстном меню, если их отключили) — и можно редактировать в своём редакторе. Потом Ctrl-S (или другое сохранение файла) — и расширение переносит сохранённое обратно в поле ввода. Помогает выносить в редактор юзерскрипты и стили. Раньше (версии до 6-7) умел заносить и стили обратно, как и всё остальное, сейчас разучился, не успевает за сменой версий. Но всё остальное умеет.
Расширение конечно удобное но не универсальное, я например пользуюсь оперой или хромом
Наверно хорошее расширение (надо будет попробовать) но редактирование письма было только примером. Кроме фокса есть другие браузеры, а кроме браузеров есть другие программы.
Не согласен, статья полезна описанными инструментами — я например себе xNeur|puntoSwitcher напишу (автозамены там не будет, но и нафиг не надо, только по нажатию e.g. Ctrl+Break)
Если вы выделили текст в одном окне, а потом переключились в другое и выделили текст снова, то в исходном окне выделение, скорее всего, слетит.
Как-то никогда не замечал такого поведения. Сейчас специально проверил — всё выделение остается на месте.
Для проверки выделяли в браузере? С браузером у меня тоже все ok…
О, воспроизвел — не могу выделить текст одновременно в двух GTK-приложениях (pidgin и XChat), при этом в опере, хроме, LibreOffice, скайпе выделение остается.
Наверно хорошее расширение (надо будет попробовать) но редактирование письма было только примером. Кроме фокса есть другие браузеры, а кроме браузеров есть другие программы.
Хотел написать подобный скрипт, так как ситуация, описанная в начале поста мне хорошо знакома.
Только в моей задумке это выглядело бы так: выделение текста + сочетание горячих клавиш = редактор с выделенным текстом; после закрытия редактора — текст в буфере обмена.
Только в моей задумке это выглядело бы так: выделение текста + сочетание горячих клавиш = редактор с выделенным текстом; после закрытия редактора — текст в буфере обмена.
Ещё один хардкорный кроссплатформенный способ найти и заменить по регулярке.
Подойдет знающим JS.
1. ПКМ по тексту -> проверить элемент.
2. Смотрим где он лежит и как его найти.
3. Пишем заклинание в консоли…
Подойдет знающим JS.
1. ПКМ по тексту -> проверить элемент.
2. Смотрим где он лежит и как его найти.
3. Пишем заклинание в консоли…
window.frames.canvas_frame.contentDocument.getElementById(':7e').value =
window.frames.canvas_frame.contentDocument.getElementById(':7e').value.replace(/regexp/g,'replace')
(пример, для хрома и gmail)В X помимо упомянутых Вами PRIMARY, SECONDARY и CLIPBOARD есть ещё 8 CUT-буферов. :) Всё это просто тихий ужас. При этом CUT-буферы в отличие от первой троицы «тупые» — не привязаны к программе где выделялся/копировался текст (так что их содержимое не пропадает когда эта программа выходит), но, к сожалению, в них можно хранить только текст, и только в ASCII. Так что если копи-паст русского в юникоде будет идти через один из CUTBUFFER-ов, то с некоторой вероятностью (смотря как принятые байты будет трактовать программа куда делается paste) вместо русского вставится мусор.
Для пользователей firefox + pentadactyl при редактировании текста достаточно нажать на Ctrl+i и весь текст автоматически откроется во внешнем редакторе (gvim по-умолчанию), а после закрытия редактора текст будет замещен
пытаюсь адаптировать для MacOS X, скрипт переписал так:
Проблема с запуском редактора — MacVim не возвращает управление после :q, так как приложение остаётся запущенным, а mvim — наоборот отдаёт управление сразу, не дожидаясь редактирования. У кого есть опыт использования MacVim в скриптах, поделитесь.
- #!/bin/bash
- tmp=$(mktemp /tmp/editclip.XXXXXXXX) # создать временный файл
- echo $tmp
- pbpaste > "$tmp" # скопировать содержимое клипбоарда в созданный файл
- vim "$tmp" # открыть файл в нужном редакторе (gvim - в качестве примера)
- cat "$tmp" | pbcopy # скопировать содержимое файла обратно в клипбоард
- rm "$tmp" # удалить временный файл
Проблема с запуском редактора — MacVim не возвращает управление после :q, так как приложение остаётся запущенным, а mvim — наоборот отдаёт управление сразу, не дожидаясь редактирования. У кого есть опыт использования MacVim в скриптах, поделитесь.
«сразу, не дожидаясь редактирования» — это как раз то как ведет себя gvim без "-f".
mvim -f не помогает?
mvim -f не помогает?
да, это то, что нужно. Финальный вариант:
осталось только разобраться, как этот скрипт привязать к хоткею глобально.
- #!/bin/bash
- tmp=$(mktemp /tmp/editclip.XXXXXXXX) # создать временный файл
- echo $tmp
- pbpaste > "$tmp" # скопировать содержимое клипбоарда в созданный файл
- mvim -f "$tmp" # открыть файл в нужном редакторе (gvim - в качестве примера)
- cat "$tmp" | pbcopy # скопировать содержимое файла обратно в клипбоард
- rm "$tmp" # удалить временный файл
осталось только разобраться, как этот скрипт привязать к хоткею глобально.
Супер, спасибо, если не поленюсь — наконец-то сделаю себе puntoSwitcher (xNeur не предлагать, он у меня не завелся), отрабатывающий только по нажатию определенного сочетания клавиш.
Спасибо.
Тихонько бубнит в сторону: вот же черт! И зачем ты мне это показал? Теперь не буду писать, воспользуюсь готовым решением.
))))
Тихонько бубнит в сторону: вот же черт! И зачем ты мне это показал? Теперь не буду писать, воспользуюсь готовым решением.
))))
А ведь так, порой, интересно изобретать собственный велосипед)))
Согласен на 100%. Поизобретать все-таки прийдется — у меня скрипт по ссылке не отрабатывает в NetBeans и skype. Специально проверил — в этих приложениях не работает копипаст через primary-буфер (выделение текста вместо Ctrl+C, средняя кнопка мыши вместо Ctrl+V)
> у меня скрипт по ссылке не отрабатывает в NetBeans и skype
именно потому в parcellite и klipper есть опция «Synchronize clipboards». Она у меня всегда включена, за исключением того, когда я работаю в Open Office.
Мой скрипт для Emacs (client):
Emacs всегда запушен с опцией (server-start) — отрабатывает в миллисекунды.
Автору спасибо за совет! Хороший хинт.
именно потому в parcellite и klipper есть опция «Synchronize clipboards». Она у меня всегда включена, за исключением того, когда я работаю в Open Office.
Мой скрипт для Emacs (client):
#!/bin/bash
TMPFILE=`mktemp`
xclip -sel clip -o > $TMPFILE
emacsclient -c $TMPFILE
cat $TMPFILE | xclip -sel clip
rm $TMPFILE
Emacs всегда запушен с опцией (server-start) — отрабатывает в миллисекунды.
Автору спасибо за совет! Хороший хинт.
Не уверен что проблема phgrey решается простым включением синхронизации клипбоардов. Хотя, я тут вчитался в его комментарий и понял что я не понимаю какой именно копипаст у него не работает…
Кстати, я тоже раньше всегда включал синхронизацию, а потом однажды выключил и вздохнул с облегчением — оказалось что для меня она не решает никаких проблем, а наоборот, добавляет некоторые неудобства (самое существенное — невозможность выделить текст и заменить его на содержимое буфера с помощью Ctrl-V )
Спасибо за спасибо )
Кстати, я тоже раньше всегда включал синхронизацию, а потом однажды выключил и вздохнул с облегчением — оказалось что для меня она не решает никаких проблем, а наоборот, добавляет некоторые неудобства (самое существенное — невозможность выделить текст и заменить его на содержимое буфера с помощью Ctrl-V )
Спасибо за спасибо )
Похожую технику можно использовать, например, для перевода слов:
#!/bin/bash
word=$(xclip -o)
firefox «lingvo.yandex.ru/$word/с английского/»
#!/bin/bash
word=$(xclip -o)
firefox «lingvo.yandex.ru/$word/с английского/»
Sign up to leave a comment.
Небольшой лайфхак с редактированием буфера обмена