Emacs как пейджер?
Я ищу способ использовать emacs в качестве команды пейджера в оболочке (например, с помощью man или для прокрутки вывода асинхронной команды с большим объемом вывода). Я использую emacsclient в качестве моего $EDITOR, но emacsclient не может использовать stdin в качестве входного файла. Есть ли расширение emacs, которое делает это, или, если это не так, пейджер, который использует большинство команд перемещения и поиска в буфере emacs?
Я знаю, что мог бы просто использовать Mx term или Mx ansi-term и установить для моей переменной $PAGER значение 'cat', но я надеюсь, что есть кое-что, что интегрируется с моей нынешней привычкой использовать emacs и xterm по отдельности.
2 ответа
Вы можете использовать этот скрипт в качестве пейджера:
#!/bin/sh
t=$(tempfile -s .emacs-pager) || exit 1
cat - >> $t
echo 'reading into emacs...'
emacsclient "$t"
rm -f -- $t
Сохраните его как что-то вроде ~/bin/emacs_pager.sh, сделайте его исполняемым (например: chmod +x ~/bin/emacs_pager.sh
), а затем установите его в качестве значения для переменной среды PAGER (например: export PAGER=~/bin/emacs_pager.sh
).
Примечание: приведенный выше скрипт оболочки был взят из этого поста Reddit: https://www.reddit.com/r/emacs/comments/2rr1ha/use_a_buffer_as_pager_from_shellmode/cnik8wb/
less поддерживает большинство привязок клавиш движения буфера в emacs, но не привязок поиска из коробки. Вы можете использовать lesskey для настройки привязки клавиш в соответствии с emacs.