使用 urxvt 在 less 和 vim 中滚动鼠标滚轮

使用 urxvt 在 less 和 vim 中滚动鼠标滚轮

我已经开始与rxvt-unicode(又名) 但与和urxvt相比,发现鼠标滚轮滚动存在问题。鼠标滚轮在滚动回滚缓冲区时工作正常,但在/或中自动滚动时不起作用(尽管在 vim 中,设置可以使其工作,但方式非常不同,而我不需要对/执行此操作)。gnome-terminalkonsolelessmostvimmouse=agnome-terminalkonsole

有没有办法让它的urxvt行为像鼠标滚轮在何时gnome-terminal何地正常工作一样?konsolelessvim

答案1

老问题,但是:虽然这在 urxvt 中是不可能的,但我做了一些更改,将添加一个选项(secondaryWheel)来执行此操作,并使其表现得像基于 VTE 的终端。

这个新选项的作用非常简单:使用鼠标滚轮时,如果您在辅助屏幕上 (*),则不会发生滚动,而是会向正在运行的应用程序发送 3 个“假”按键。因此,向上滚动滚轮的效果与按下向上键三次相同,向下滚动滚轮的效果与按下向下键三次相同。

(*) 不确定这是否是“官方”术语,但至少在 urxvt 中是这么称呼的。

很简单,但这可以解决问题:现在man,当运行less或任何其他使用辅助屏幕的应用程序时,您可以使用鼠标滚轮移动(或者,如果您按下向上/向下键,则所述应用程序会执行任何操作)。

需要注意的是,我不确定这实际上是在基于 VTE 的终端上完成事情的方式 - 我从未检查过 - 但它确实起作用,所以它对我来说有效。

您可以在此处找到更多信息以及 Arch Linux 的代码和 PKGBUILD 链接: http://mywaytoarch.tumblr.com/post/14455320734/scrolling-mouse-wheel-improvments-vte-like-in-urxvt

希望这对某些人有帮助!

答案2

我针对一个非常相似的问题写了这篇文章,请参阅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(或.Xdefaults)并运行xrdb .Xresources

来源:https://aur.archlinux.org/cgit/aur.git/tree/vtwheel?h=urxvt-vtwheel

答案3

好问题!我会引用一些有用的帖子Linux 问题 - “less” 命令输出 - 我无法滚动浏览它!Archlinux 论坛 - 在 man/less 中使用鼠标滚轮

似乎 less 只是监听键盘事件,不支持鼠标。鼠标支持的请求已开放参考编号 272

真正的解决方案是使用另一个终端或寻呼机(维姆帕杰)。

相关内容