web-dev-qa-db-ja.com

GNU画面でのスクロールホイールの使用

マウスのスクロールホイールがスクロールバックバッファー内をスクロールできるようにGNU画面を設定するにはどうすればよいですか?私はこれについてグーグルに試みましたが、ほとんどのヒットは画面内のアプリケーションがスクロールホイールを使用できるようにする方法にありました。

242
JesperE

次のような行を~/.screenrcに追加するだけでいいと思います:

termcapinfo xterm* ti@:te@

ここで、「xterm *」は現在のTERMの完全一致です。それが機能することを確認するには、^ A ^ Dで画面からデタッチし、screen -d -rで再アタッチし、lsを数回押してから、スクロールバックします。わたしにはできる。


この魔法とは何ですか?さて、マニュアルページを調べてみましょう。

screen(1)言う:

termcapinfo term terminal-tweaks [window-tweaks]
  [..]
  The first argument specifies which terminal(s) should be affected by this
  definition. You can specify multiple terminal names by separating them with
  `|'s. Use `*' to match all terminals and `vt*' to match all terminals that
  begin with "vt".
  [..]
  Some examples:

      termcap xterm*  LP:hs@

  Informs screen that all terminals that begin with `xterm' have firm
  auto-margins that allow the last position on the screen to be updated (LP),
  but they don't really have a status line (no 'hs' -  append  `@'  to turn
  entries off).  Note that we assume `LP' for all terminal names that start
  with "vt", but only if you don't specify a termcap command for that terminal.

termcap(5)から:

String capabilities
    [..]
    te   End program that uses cursor motion
    ti   Begin program that uses cursor motion
334
Pistos

画面で、スクロールバックバッファ内をスクロールできるようにするには、最初に「スクロールバックモード」(または「コピーモード」)に入る必要があります。キーコンボ Ctrl-aEsc、 または Ctrl-aCtrl-[。次に、上下キーを使用して履歴をスクロールできます(または Ctrl-b、 Ctrl-f ページを移動します)。

そのモードでは、マウスホイールが他のアプリで動作する場合、マウスホイールも動作するはずです。 「スクロールモード」を終了するには Esc

最初にスクロールバックモードに入らずにスクロールバックバッファーをスクロールすることに関しては、おそらく画面を変更しない限り不可能です。スクロールバックモード以外に、スクロールバックバッファーにアクセスする方法を聞いたことはありません。

67
sleske

Jon Zが言及している優れた記事はもう利用できませんが、Googleのキャッシュからテキストのみのバージョンを釣り上げることができました。 Googleが今後同様に削除する場合に備えて、ここに保存しています。元の投稿はMikaelStåldalによるものであったため、クレジットが必要な場合はクレジットします。

-

GNU画面でのマウスホイールの使用方法

GNU Screenはスクロールバックをサポートしていますが、デフォルトではそれを使用するには厄介なキーを使用する必要があります。 xtermでできるように、Shift-PageUp、Shift-PageDown、およびマウスホイールを使用してスクロールできるようにしたいと思います。

このためにScreenを構成するのは簡単ではなく、端末エミュレーターとの連携が必要です。しかし、私は最終的にかなりうまく機能するソリューションを達成することができました。これを〜/ .Xresourcesファイルに追加します(これを有効にするにはログアウトする必要があります):

XTerm*saveLines: 0
XTerm*vt100.translations: #override \n\
  Ctrl <Btn4Down>: string(0x1b) string("[25S") \n\
  Lock Ctrl <Btn4Down>: string(0x1b) string("[25S") \n\
  Lock @Num_Lock Ctrl <Btn4Down>: string(0x1b) string("[25S") \n\
  @Num_Lock Ctrl <Btn4Down>: string(0x1b) string("[25S") \n\
  <Btn4Down>: string(0x1b) string("[5S") \n\
  Ctrl <Btn5Down>: string(0x1b) string("[25T") \n\
  Lock Ctrl <Btn5Down>: string(0x1b) string("[25T") \n\
  Lock @Num_Lock Ctrl <Btn5Down>: string(0x1b) string("[25T") \n\
  @Num_Lock Ctrl <Btn5Down>: string(0x1b) string("[25T") \n\
  <Btn5Down>: string(0x1b) string("[5T") \n\
  Shift <KeyPress> Prior: string(0x1b) string("[25S") \n\
  Shift <KeyPress> Next: string(0x1b) string("[25T") \n

次に、これを〜/ .screenrcファイルに追加します。

defscrollback 1000

# Scroll up
bindkey -d "^[[5S" eval copy "stuff 5\025"
bindkey -m "^[[5S" stuff 5\025

# Scroll down
bindkey -d "^[[5T" eval copy "stuff 5\004"
bindkey -m "^[[5T" stuff 5\004

# Scroll up more
bindkey -d "^[[25S" eval copy "stuff \025"
bindkey -m "^[[25S" stuff \025

# Scroll down more
bindkey -d "^[[25T" eval copy "stuff \004"
bindkey -m "^[[25T" stuff \004

これはxtermで機能します。他のターミナルエミュレータで動作するかどうかはわかりません。

これにより、xtermの通常のスクロールサポートが無効になり、Screenを使用している場合にのみスクロールできることに注意してください。常にScreenを使用するには、次のようにxtermを起動することをお勧めします。

xterm -e screen
24
Tommi R.

OS X(Snow Leopard)の場合、次のように機能しました。

http://slaptijack.com/system-administration/mac-os-x-terminal-and-gnu-screen-scrollback/

簡単に言うと、リモートホスト(画面を実行しているホスト)の〜/ .screenrcに次を追加する必要があります。

defscrollback 5000
termcapinfo xterm* ti@:te@
13
Jesse Crossen

そして、VIM画面内のGNUでスクロールホイールを使用するには:

[.vimrc]

set mouse=a             " hold shift to copy xterm
set ttymouse=xterm2     " necessary for gnu screen & mouse
11
edench

押す Ctrl+a に続く [

端末のタイトルバーに「コピーモード」と表示されるはずです。

これで、矢印キーとマウスホイールが期待どおりに動作するはずです。

通常に戻るには、Escキーを押すか、Enterキーを数回押します。

6
Peter Crotty

CygwinとPuTTYの両方で次のことがうまくいきました:.screenrcを編集して追加します

terminfo xterm* ti=:te=
4

画面を実行する前に、TERM変数をxtermの代わりにvt100に設定しても機能します。
私は長い間これを使用してきましたが、魅力のように機能します。

これを.bashrcに追加します:

# make scrollbar / wheel scrolling work when running screen in gnome-terminal (or other)
if [ "$TERM" = "xterm" ]; then
  export TERM=vt100
fi

-

参考のために、私の.screenrcにはこれがあります(このAFAIKには必要ありません):

# Extend the vt100 desciption by some sequences.
termcap  vt100* ms:AL=\E[%dL:DL=\E[%dM:UP=\E[%dA:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC
terminfo vt100* ms:AL=\E[%p1%dL:DL=\E[%p1%dM:UP=\E[%p1%dA:DO=\E[%p1%dB:LE=\E[%p1%dD:RI=\E[%p1%dC
4
lemonsqueeze

上記の答えがうまくいかない場合は、.screenrcにcaptionまたはalwayslastlineオプションが設定されていないことを確認してください。それらがある場合、これは機能しません:

termcapinfo xterm* ti@:te@

この情報が必要な場合は、端末のタイトルに設定してみてください(termcapinfoを使用)

3
nachocab

「Ubuntu 16.04.2 LTS」を使用する場合の解決策は次のとおりです。

a)。 $ HOME/.screenrcを以前の回答で指定されているように更新します。

termcapinfo xterm* ti@:te@

b)。ドロップダウンリストで[Xターミナル]を選択して、[設定]、[優先アプリケーション]を使用して、デフォルトのターミナルをxtermに変更します。

余分なメモ

  • Termcapinfoの行を「xterm *」ではなく「*」に変更しても、「lxterminal」のインストールを含む他の端末は機能しませんでした。

  • 画面の左上隅にあるメニューボタンをクリックすると、右下隅の3番目のアイコンを使用して[設定]ダイアログを表示できます。

0