Pull to refresh

Comments 28

Всё интересно, но исходная задача решается несколько проще, если использовать расширение браузера, вызывающее нужный текстовый редактор. Для Fx такое расширение называется «It's All Text» и создаёт кнопки возле полей ввода. Один клик по кнопке (или хоткей, или в контекстном меню, если их отключили) — и можно редактировать в своём редакторе. Потом Ctrl-S (или другое сохранение файла) — и расширение переносит сохранённое обратно в поле ввода. Помогает выносить в редактор юзерскрипты и стили. Раньше (версии до 6-7) умел заносить и стили обратно, как и всё остальное, сейчас разучился, не успевает за сменой версий. Но всё остальное умеет.
Расширение конечно удобное но не универсальное, я например пользуюсь оперой или хромом
Наверно хорошее расширение (надо будет попробовать) но редактирование письма было только примером. Кроме фокса есть другие браузеры, а кроме браузеров есть другие программы.
Не согласен, статья полезна описанными инструментами — я например себе xNeur|puntoSwitcher напишу (автозамены там не будет, но и нафиг не надо, только по нажатию e.g. Ctrl+Break)
Если вы выделили текст в одном окне, а потом переключились в другое и выделили текст снова, то в исходном окне выделение, скорее всего, слетит.


Как-то никогда не замечал такого поведения. Сейчас специально проверил — всё выделение остается на месте.
Для проверки выделяли в браузере? С браузером у меня тоже все ok…
О, воспроизвел — не могу выделить текст одновременно в двух GTK-приложениях (pidgin и XChat), при этом в опере, хроме, LibreOffice, скайпе выделение остается.
Думаете, это «фича» из gtk, а не из иксов?
Похоже на то, попробовал еще с несколькими GTK-приложениями — выделенный текст остается только в одном из них.
Наверно хорошее расширение (надо будет попробовать) но редактирование письма было только примером. Кроме фокса есть другие браузеры, а кроме браузеров есть другие программы.
Хотел написать подобный скрипт, так как ситуация, описанная в начале поста мне хорошо знакома.
Только в моей задумке это выглядело бы так: выделение текста + сочетание горячих клавиш = редактор с выделенным текстом; после закрытия редактора — текст в буфере обмена.
Ещё один хардкорный кроссплатформенный способ найти и заменить по регулярке.
Подойдет знающим 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) вместо русского вставится мусор.
Прикольно. Я всегда знал, что X11 — это сборище странных, реликтовых ископаемых, многие из которых не дожили до сегодняшних дней и покоятся где-то на нижних уровнях, но иногда восстают из могил.
Для пользователей firefox + pentadactyl при редактировании текста достаточно нажать на Ctrl+i и весь текст автоматически откроется во внешнем редакторе (gvim по-умолчанию), а после закрытия редактора текст будет замещен
пытаюсь адаптировать для MacOS X, скрипт переписал так:
  1. #!/bin/bash
  2. tmp=$(mktemp /tmp/editclip.XXXXXXXX)  # создать временный файл
  3. echo $tmp
  4. pbpaste > "$tmp"  # скопировать содержимое клипбоарда в созданный файл
  5. vim "$tmp"  # открыть файл в нужном редакторе (gvim - в качестве примера)
  6. cat "$tmp" | pbcopy # скопировать содержимое файла обратно в клипбоард
  7. rm "$tmp"  # удалить временный файл


Проблема с запуском редактора — MacVim не возвращает управление после :q, так как приложение остаётся запущенным, а mvim — наоборот отдаёт управление сразу, не дожидаясь редактирования. У кого есть опыт использования MacVim в скриптах, поделитесь.
«сразу, не дожидаясь редактирования» — это как раз то как ведет себя gvim без "-f".
mvim -f не помогает?
да, это то, что нужно. Финальный вариант:
  1. #!/bin/bash
  2. tmp=$(mktemp /tmp/editclip.XXXXXXXX)  # создать временный файл
  3. echo $tmp
  4. pbpaste > "$tmp"  # скопировать содержимое клипбоарда в созданный файл
  5. mvim -f "$tmp"  # открыть файл в нужном редакторе (gvim - в качестве примера)
  6. cat "$tmp" | pbcopy # скопировать содержимое файла обратно в клипбоард
  7. rm "$tmp"  # удалить временный файл

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

Тихонько бубнит в сторону: вот же черт! И зачем ты мне это показал? Теперь не буду писать, воспользуюсь готовым решением.

))))
А ведь так, порой, интересно изобретать собственный велосипед)))
Согласен на 100%. Поизобретать все-таки прийдется — у меня скрипт по ссылке не отрабатывает в NetBeans и skype. Специально проверил — в этих приложениях не работает копипаст через primary-буфер (выделение текста вместо Ctrl+C, средняя кнопка мыши вместо Ctrl+V)
Не совсем понял, какой именно копипаст у вас не работает в скайпе и NetBeans — ctrl-v/ctrl-c или средняя кнопка?
> у меня скрипт по ссылке не отрабатывает в NetBeans и skype

именно потому в 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 )

Спасибо за спасибо )
Похожую технику можно использовать, например, для перевода слов:

#!/bin/bash
word=$(xclip -o)
firefox «lingvo.yandex.ru/$word/с английского/»
Sign up to leave a comment.

Articles