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


254

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


JesperE-選択した回答を変更できますか?私は混乱しました、そしてコメントは正しいです、他の答えはずっと良いです。
Geoff

最近は画面を使用していませんが、賛成票は十分説得力があるようです。:)
JesperE 2014

回答:


359

私はあなたがあなたにこのような行を単に追加できると信じています~/.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

28
私はピストスの提案に従いましたが、それは部分的に機能します。彼が説明しているように、(画面をスクロールするのに十分な出力を生成するために)いくつかのコマンドを入力してから、マウスホイールを使用して前の行までスクロールして戻ることができます。実際、私はKDEのKonsole経由でスクリーンを使用しています(基本的にはxtermのタブ付き)。Konsoleウィンドウのスクロールバーも同じように機能します。しかし、問題があります。画面のウィンドウ(^ An、^ Ap)を切り替えると、スクロールバックバッファがめちゃくちゃになります。切り替えたウィンドウの内容は、スクロールバックバッファに「たまる」だけです。それは本当にそれを減らします。
ライアンB.リンチ

22
しかし、これはコマンド履歴をスクロールします。出力バッファをスクロールしたい。
JesperE 2010年

15
@JesperE:コマンド履歴のスクロールも体験しました(UbuntuのGNOME端末を使用しています)。[編集]-> [プロファイル設定]-> [スクロール]に移動し、[キーストロークを使用して別の画面をスクロールする]チェックボックスをオフにすることで修正しました。ピストスの修正を使用する必要があることに注意してください。
マイケルクレブス

2
OS X Lionでの作業に加えて、これはPutty、iSSH、およびPrompt(Panic)でも機能します。この行はすべての.screenrcファイルに存在する必要があります!
funroll

20
これにより、画面セッションではスクロールせずに端末でスクロールできます。つまり、分割領域で作業したり、ウィンドウを切り替えたりすると、この領域でスクロールして戻ることができなくなり、代わりにターミナル出力でスクロールして戻り、領域を分割するかウィンドウを変更する前の出力を確認します。 。
g_daniel

69

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

そのモードでは、マウスホイールも他のアプリで機能する場合は機能するはずです。「スクロールバックモード」はで終了しEscます。

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


21
はい、スクロールバックモードについて知っています。マウスを使用するために手動でスクロールバックモードに入る必要がないことを望んでいました。ありがとう。
JesperE 2009年

4
「スクロールバックモード」はかなり非公式な用語IMHOです。:) Ctrl + a Escコピーモードに入ります ; このモードは、その主な目的がテキストをあちこちにコピーできるようにすることであるため、常にそれと呼ばれていました。コピーモードでマウスホイールを使ってスクロールできる(nb。は私には機能しません)のは、「追加の仕掛け」のようなものではなく、このモードの主な目的ではありません。
syntaxerror

1
@syntaxerror:まあ、ドキュメントはそれを「コピー/スクロールバックモード」と呼び、「スクロールバックバッファ」(gnu.org/software/screen/manual/screen.html#Copy-and-Paste)について言及しているので、両方正しい:-)。とにかく、答えに「コピーモード」を追加しました。
sleske 2014

すごい!私もこれをやりたかったのですが、そのような古い答えをいじる前に、私は最初に尋ねることで知られています(SO / SEルールがそれを規定していないことを知っていますが、それは未
記述の

これは公式の答えであるはずです。ありがとうございました:)
Linh 2018年

24

Jon Zが言及している優れた記事はもう利用できませんが、Googleキャッシュからテキストのみのバージョンを釣ることができました。Googleが将来同様にドロップする場合に備えて、ここに保存します。元の投稿はMikaelStåldalによるものだったので、クレジットの期日はクレジットです。

-

GNU Screenでマウスホイールを使用する方法

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を使用するには、次のようにxtermを起動する必要があります。

xterm -e screen


11

GNU Screen内のVIMでスクロールホイールを使用するには:

[.vimrc]

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

素晴らしい、のscreenrcのトリックで、この中の組み合わせは、私がawesomewmを使用し、端子が私の人生ですので、私の一日を作った
Fotios

7

Ctrl+を押しaてから[

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

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

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


5

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

これをあなたに追加してください.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

(screenを実行する前に)説明されているように環境変数TERMを設定するのがうまくいきました。これは、「export TERM = vt100」を入力するのと同じくらい簡単です。どうもありがとう。PS:私はMacを使用していて、LinuxボックスにSSHで接続して、そこで画面を実行します。
Daniel K.

上記のとおり、これは意図したとおりに機能しません。はい、スクロールできますが、ウィンドウを変更すると、スクロールバッファが上書きされます。
Halsafar、2015年

非常に過小評価されたソリューション
MolbOrg

4

以下は、CygwinとPuttyの両方で機能しました:.screenrcを編集して追加

terminfo xterm* ti=:te=

3

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

termcapinfo xterm* ti@:te@

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


0

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

a)。以前の回答で指定したとおり$ HOME / .screenrcを更新します。

termcapinfo xterm* ti@:te@

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

いくつかの余分なメモ

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.