Автор Тема: Изменение регистра выделенного текста  (Прочитано 4450 раз)

Оффлайн Сергей-70

  • Давно тут
  • **
  • Сообщений: 350
Добрый день! Пользуюсь zim-wiki, понадобилось мне для удобства работы сделать внешнюю команду, которая принимает выделенный мышью текст и меняет его регистр на нижний.
Команду состряпал такую:
xsel -o | sed 's/.*/\L&/' | xsel -iНо, не выходит каменный цветок(( Если в терминале делать xsel -o | sed 's/.*/\L&/' то выводятся выделенные строки в какой-нибудь программе (первичный буфер, как я понимаю). Но вот назад вставить преобразованный текст в строку не получается...

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 2 625
  • antohami@
xsel -o | sed 's/.*/\L&/' | xsel -i

xsel -o | sed 's/.*/\L&/' -i | xsel -i

Оффлайн Сергей-70

  • Давно тут
  • **
  • Сообщений: 350
xsel -o | sed 's/.*/\L&/' -i | xsel -i
Так вылетает сообщение: sed: отсутствуют исходящие файлы

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 16 874
    • Домашняя страница
    • Email
xsel -o | sed 's/.*/\L&/' | xsel -i

xsel -o | sed 's/.*/\L&/' -i | xsel -i
-i — замена непосредственно в файле.
Андрей Черепанов (cas@)

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 16 874
    • Домашняя страница
    • Email
Добрый день! Пользуюсь zim-wiki, понадобилось мне для удобства работы сделать внешнюю команду, которая принимает выделенный мышью текст и меняет его регистр на нижний.
Команду состряпал такую:
xsel -o | sed 's/.*/\L&/' | xsel -iНо, не выходит каменный цветок(( Если в терминале делать xsel -o | sed 's/.*/\L&/' то выводятся выделенные строки в какой-нибудь программе (первичный буфер, как я понимаю). Но вот назад вставить преобразованный текст в строку не получается...
У меня отрабатывает. Вопрос в том, ГДЕ Вы это запускаете. Может, надо завернуть в bash -c "xsel -o | sed 's/.*/\L&/' | xsel -i"
Андрей Черепанов (cas@)

Оффлайн Сергей-70

  • Давно тут
  • **
  • Сообщений: 350
Вот прочел в справке zim-wiki по внешним командам:
One limitation of these custom tools is that you can not interact directly with the textbuffer. For example you can not change the cursor position or apply changes which will be undoable. To achieve this you will need to look into writing a real plugin and use the API for the text buffer
Получается, что команда не работает в лоб из-за ограничений самого zim на работу с буфером обмена?

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 16 874
    • Домашняя страница
    • Email
Речь про текст, а не буфер обмена.
Андрей Черепанов (cas@)

Оффлайн Сергей-70

  • Давно тут
  • **
  • Сообщений: 350
У меня отрабатывает. Вопрос в том, ГДЕ Вы это запускаете
в редакторе zim есть в меню пункт внешние инструменты, т.е. можно либо командный файл выполнять, либо команду. В команде можно использовать следующие выражения:
%f исходный код страницы как временный файл
%d папка с вложениями текущей страницы
%s реальный исходный код страницы (если есть)
%п путь к блокноту (файл или каталог)
%D корневая папка документа (если есть)
%t выделенный текст или слово под курсором
%Т выделенный текст с wiki-форматированием
Командой менять регистр текста не получается.

Оффлайн Сергей-70

  • Давно тут
  • **
  • Сообщений: 350
Вроде бы ясность проступила. Судя по всему - дело в особенностях zim'a:
Там в настройках внешней команды есть галочки для 1) команда не изменяет данные и 2) Вывод должен заменить текущий выбор
Почему-то галка на втором варианте подвешивает zim, а если ее не ставить переформатированный текст помещается в первичный буфер.
Внешняя команда нормально срабатывает только если галка на 1-м пункте. Поэтому потом приходится текст вручную вставлять клавиатурной комбинацией. Ну хоть уже что-то. И еще - я для удобства перенаправил вывод форматированного текста в clipboard:
xsel -o | sed 's/.*/\L&/' | xsel -b
« Последнее редактирование: 24.04.2018 23:33:36 от Сергей-70 »

Оффлайн Сергей-70

  • Давно тут
  • **
  • Сообщений: 350
Все-таки мне кажется, что что-то не так я делаю
Попробовал создать внешний инструмент в gedit
xsel -o | sed 's/.*/\L&/' | xsel -iНо так тоже ничего не происходит.
Если в последней команде менять ключ на -b
xsel -o | sed 's/.*/\L&/' | xsel -bто опять все в clipboard'е сохраняется и нужно еще одну команду. Не пойму - как перенаправить вывод в выделенный текст?