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


17

我已经开始与工作的rxvt-unicode的(又名urxvt),却发现一个问题,鼠标滚轮滚动,比gnome-terminalkonsole。鼠标滚轮可以很好地通过回滚缓冲区,但是不适用于自动滚动less/ mostvim(尽管在vim中,设置mouse=a可以使它起作用,但是通过一种非常不同的方式,我不必这样做gnome-terminal/ konsole)。

有没有一种方法,使urxvt行为很像gnome-terminalkonsolelessvim在鼠标滚轮可以直接运行?


类似的问题一直在serverfault了一段时间,但一直没有收到一个肯定的回答: serverfault.com/questions/10308/...
病灶

1
谢谢,直到您指出来,这才让我烦!
凯尔·史密斯

Answers:


8

这是一个老问题,但是:尽管在urxvt中无法做到这一点,但我进行了一些更改,将添加一个选项(secondaryWheel)来做到这一点,并使它的行为类似于基于VTE的终端。

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

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

很容易的,但是做的伎俩:运行时,现在manless或者使用副屏的任何其他应用程序,你可以使用鼠标滚轮走动(或任何所述应用会怎么做,如果你按上/下键)。

应当指出,我不确定这实际上是在基于VTE的终端中完成的工作-我从未检查过-但这确实可以完成工作,所以它对我有用。

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

希望这对某些人有帮助!


1
补丁有任何更新吗?是否建议加入?
2014年


1

我为一个非常类似的问题写了这个,请参阅/superuser//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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.