Как создать опцию для вставки метки времени?


8

При редактировании текстовых документов мне нужно часто ставить отметки времени. Я думал об автоматизации этого двумя способами. Кажется, ничего из этого не работает.

  1. Использование nautilus-действий

Я установил новое действие правого контекста, который запускает команду date|xclip

введите описание изображения здесь

Этот контекст справа не отображается, когда я щелкаю правой кнопкой мыши в других приложениях (таких как терминал или браузер). Более того, когда он появляется, и я нажимаю на него, он ничего не делает.

  1. Использование сочетания клавиш

Я установил новую комбинацию клавиш, которая должна выполнять dateкоманду, но не выполняет.

введите описание изображения здесь

Есть указатели?

Спасибо.

Ответы:


11

Сочетания клавиш GNOME должны работать.

Вот почему то, что вы попробовали, не сработало: комбинация клавиш запускает dateкоманду, но ничего не делает с выводом (который просто отбрасывается). Вы должны передать его по каналу xclip, date | xclipчтобы скопировать его в выделенную область X ( не в буфер обмена). Затем вы можете вставить его в свой документ, нажав среднюю кнопку мыши. Если вы хотите иметь возможность использовать Ctrl-V, вместо этого используйте, date | xclip -selection cчтобы скопировать его в фактический буфер обмена.

Другой альтернативой является использование xdotoolдля ввода даты непосредственно в ваш документ. Назначьте свой ярлык

xdotool type "$(date)"

Затем, когда вы нажмете комбинацию клавиш, она вычислит текущую дату и введет символы в ваш документ.

Для формата ISO 8601 используйте xdotool type "$(date --rfc-3339=s)".


Если это не работает: поскольку это команды оболочки (в отличие от исполняемых файлов), вам, возможно, придется передать команду, bashуказав их в ярлыке. Ваша команда будет тогда:

bash -c 'xdotool type "$(date --rfc-3339=s)"'

Спасибо. Попробовал это. Но это не работает. Я назначил ярлык для CTRL +; и я нажимаю эту конкретную комбинацию на рабочем столе, а затем нажимаю CTRL + V (скажем, в Gmail), но она не вставляется. Нужно ли перезагружать ноутбук?
user13107

@ user13107: Оказывается, по умолчанию xclipкопируется текст не в буфер обмена, а в выделенную область X. Чтобы вставить его, используйте средний щелчок, а не Ctrl-V.
Механическая улитка

Использование bash -cсделал свое дело, но есть некоторая задержка в наборе текста. Когда я нажимаю на ярлык, полная отметка времени не вводится с помощью xdotool. Некоторые начальные числа съедены, например, 1-07 15:14:35+08:00или013-01-07 15:14:35+08:00
user13107

1
@ user13107 У меня была такая же проблема. После некоторых проб и ошибок я получил команду, bash -c 'date | xclip -selection clipboard && xdotool key 'ctrl+v''которая работает отлично.
Иммануил Вейнахтен

1
@ user13107 - это потому, что вы не используете xdotool --clearmodifiers- некоторые клавиши набираются с помощью Ctrl (например - пробел, он проглатывается). Некоторые символы не будут напечатаны (например, :- который сдвинут), но я использую следующую команду: xdotool type --clearmodifiers $(date "+%Y-%m-%d,%H-%I")которая работает для меня.
Томаш Гандор

3

Я успешно использовал это в качестве пользовательского сочетания клавиш, назначенного Ctrl+Shift+D:

bash -c 'sleep 0.3 && xdotool type "$(date -u +%Y-%m-%d_%H:%M:%SZ)"'

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

Обратите внимание, что я использую слегка настроенную версию формата RFC 3339 / ISO 8601: я часто использую это в контексте, где я хочу избежать пробела в dateвыходных данных RFC 3339, но я нахожу то, Tчто отделяет дату от времени в Отметки времени ISO 8601 довольно неинтуитивны и трудны для чтения, поэтому я считаю, что подчеркивание работает хорошо.


1
bash -c 'xdotool keyup super && xdotool type "$(date +%Y.%m.%d)"'

Я использую в Super+Qкачестве ярлыка, и мне нужно очистить superмодификатор перед отправкой date. Я пытался, --clearmodifiersно это вызвало unity dashбы всплывающее окно после запуска ярлыка [1]

[1] Причина unity dashбудет всплывать после того, как superбудет восстановлено, если --clearmodifiersиспользуется Цитата изman xdotool

CLEARMODIFIERS
       Any command taking the --clearmodifiers flag will attempt to clear any
       active input modifiers during the command and restore them afterwards.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.