シェルでページャーコマンドとしてemacsを使用する方法を探しています(たとえば、manを使用したり、大量の出力を含む非同期コマンドの出力をスクロールしたりします)。 $ EDITORとしてemacsclientを使用していますが、emacsclientは入力ファイルとしてstdinを使用できません。これを行うemacs拡張機能はありますか、それとも失敗しますか?emacsバッファモーションと検索コマンドのほとんどを使用するページャーはありますか?
M-xtermまたはM-xansi-termを使用して、$ PAGER変数を「cat」に設定できることはわかっていますが、emacsとxtermを別々に使用するという現在の習慣と統合できるものがあることを望んでいます。
このシェルスクリプトをページャーとして使用できます。
#!/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に一致するようにキーバインディングをカスタマイズできる場合があります。