urxvtを使用したマウスホイールのスクロールとvim


17

rxvt-unicode(別名urxvt)の使用を開始しましたが、gnome-terminalおよびに比べて、マウスホイールのスクロールに問題が見つかりましたkonsole。マウスホイールはスクロールバックバッファーを通過するために正常に機能しますが、less/ mostまたはvim(vimでは、設定mouse=aによって機能しますが、まったく異なる方法で、自動スクロールには機能しません。gnome-terminal/ konsole)。

作成する方法があるurxvtように振る舞うgnome-terminalkonsoleでたときにlessし、vimマウスホイールだけの作品は?


同様の問題は、しばらくの間serverfaultの上であったが、肯定的な回答受信していない: serverfault.com/questions/10308/...

1
ありがとう、あなたがそれを指摘するまで、これは私を悩ませませんでした!
カイルスミス

回答:


8

古い質問ですが、これはurxvtでは不可能ですが、オプション(secondaryWheel)を追加して正確にそれを実行し、VTEベースの端末のように動作するように変更しました。

この新しいオプションの機能は非常に簡単です。マウスホイールを使用する場合、セカンダリスクリーン(*)を使用している場合、スクロールは発生せず、代わりに実行中のアプリケーションに3つの「偽の」キーストロークが送信されます。したがって、ホイールを上げると、Upキーを3回押すのと同じ結果になり、ホイールを下げると、Downキーを3回押すのと同じ結果になります。

(*)これが「公式」用語かどうかはわかりませんが、少なくともurxvtではこのように呼ばれています。

十分簡単ですが、それでうまくいきます:実行中にmanlessまたはセカンダリ画面を使用する他のアプリケーションで、マウスホイールを使用して移動できます(または、上/下キーを押した場合は、そのアプリケーションが行うことは何でも)。

VTEベースの端末でこれが実際にどのように行われるのか実際にはわからないことに注意する必要があります。

Arch LinuxのコードとPKGBUILDへのもう少しの情報とリンクはここにあります:http : //mywaytoarch.tumblr.com/post/14455320734/scrolling-mouse-wheel-improvments-vte-like-in-urxvt

うまくいけば、これが一部に役立つことができます!


1
パッチの更新はありますか?含めることが提案されていますか?
ブルー化された14

1

いい質問です!Linuxの質問を引用します-「少ない」コマンド出力-スクロールできません!およびArchlinuxフォーラム-man / lessでマウスホイールを使用します。

lessはキーボードイベントをリッスンしているだけで、マウスをサポートしていないようです。マウスサポートのエンチャントリクエストは、参照番号272で公開されています。

実際の解決策は、別の端末またはポケットベル(Vimpager)を使用することです。


以下のバージョン543で修正
Hielke Walinga

1

非常によく似た質問のためにこれを書きました。https://superuser.com/a/1356948/900060を参照してください

これを$ HOME / .urxvt / ext / vtwheelに貼り付けます(ファイルが存在しない場合は作成します):

#! perl

# Implements a scrollwheel just like in good old vt100's mices

sub simulate_keypress {
    my ($self, $type) = @_; #type: 0:up, 1:down

    my $keycode_up = 111;
    my $keycode_down = 116;

    my $numlines = 3;

    my $keycode = 0;
    if ($type eq 0) {
        $keycode = $keycode_up;
    } elsif ($type eq 1) {
        $keycode = $keycode_down;
    } else {
        return;
    }

    for (my $i = 0 ; $i ne $numlines ; $i++) {
        $self->key_press(0,$keycode);
        $self->key_release(0,$keycode);
    }
}

sub on_button_release {
    my ($self, $event) = @_;

    #my $res_ss = $self->resource("secondaryScroll");
    #warn("ressource ss is <$res_ss>");

    !$self->current_screen and return ();

    #warn("foo, event: <$event->{button}>\n");
    if ($event->{button} eq "4") { # scroll up
        $self->simulate_keypress(0);
        return 1;
    } elsif ($event->{button} eq "5") { # scroll down
        $self->simulate_keypress(1);
        return 1;
    }

    return ();
}

次に(または)に追加URxvt.perl-ext-common:vtewheelして実行します.Xresources.Xdefaultsxrdb .Xresources

ソース:https : //aur.archlinux.org/cgit/aur.git/tree/vtwheel?h=urxvt-vtwheel

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