Portál AbcLinuxu, 27. května 2024 13:36

Vim, screen, myš a široký terminál

22.10.2013 16:33 | Přečteno: 1142× | Ruzne

Někdy se hodí v terminálu a dokonce Vimu použít myš. Problém může nastat na dnešních velkých monitorech, protože původní terminálový protokol pro mouse tracking podporuje souřadnice maximálně do 233. Proto bylo zavedeno několik rozšíření, který tento limit odstraňují nebo alespoň posouvají. Viz dokumentace k XTermu:

http://invisible-island.net/xterm/ctlseqs/ctlseqs.html#Mouse%20Tracking

Každý moderní emulátor terminálu tyto rozšíření implementuje, ale ne každá aplikace je používá. Takovými jsou i Vim a screen.

Vim

Zkuste si pustit Vim v terminálu a vytvořit řádek delší než 233 znaků (například sekvencí <ESC>300iX<ESC>) a potom myší označit část toho řádku za 233. znakem. Pokud se žádné rozšíření pro mouse tracking nepoužívá, text se vám označit nepodaří.

Pokud je aktuální verze Vimu zkompilována alespoň ve verzi Big, obsahuje featury mouse_sgr a mouse_urxvt, které implementují rozšířený mouse tracking. Jejich přítomnost je možné zjistit příkazem :ve.

Implicitně není rozšířený mouse tracking zapnutý, je třeba jej aktivovat:

set ttym=sgr

Viz help :h ttym.

Screen

Teď už myš ve Vimu funguje správně, ale pokud se spustí ve screenu, opět se projeví stejný problém. Screen žádné rozšíření mouse trackingu nepodporuje, ale do mailing listu byl zaslán patch, který dodává podporu pro SGR style sekvence:

http://lists.gnu.org/archive/html/screen-devel/2012-07/msg00004.html

Patch byl zaslán v čevenci 2012, ale bohužel do kódu ho zatím nikdo nezačlenil. Do Debianu Wheezy by se stejně nedostal, ten byl zmražen v červnu 2012. Možná že některé aktuálnější distribuce ten patch aplikují. Každopádně po aplikaci patche Vim ve screenu s myší funguje jak má.        

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

22.10.2013 17:07 marbu | skóre: 31 | blog: hromada | Brno
Rozbalit Rozbalit vše Re: Vim, screen, myš a široký terminál
Odpovědět | Sbalit | Link | Blokovat | Admin
Místo patchování screenu prostě přejdi na tmux, ten s tím problém nemá (právě vyzkoušeno).
There is no point in being so cool in a cold world.
22.10.2013 18:56 KS | skóre: 10 | blog: blg | Horní polní u západní dolní
Rozbalit Rozbalit vše Re: Vim, screen, myš a široký terminál
Díky za tip, tmux vypadá kvalitně.
Pochybnost, nejistota - základ poznání
22.10.2013 18:59 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: Vim, screen, myš a široký terminál

Ja pouzivam tmux a som spokojny az na jednu vec. Doteraz som neprisiel na sposob ako vyznacit viac nez jeden riadok mysou, ak su dve ak su vedla seba dva a viac "okien" ( ako to vobec prelozit, slovo pane v tomto pouziti ? ).

22.10.2013 19:57 KS | skóre: 10 | blog: blg | Horní polní u západní dolní
Rozbalit Rozbalit vše Re: Vim, screen, myš a široký terminál
Některé emulátory terminálu umí block selection. Třeba v urxvt se blokově označuje s klávesou Alt. XTerm tohle bohužel neumí.
Pochybnost, nejistota - základ poznání
22.10.2013 21:22 čavo
Rozbalit Rozbalit vše Re: Vim, screen, myš a široký terminál
Je možnosť si zapnúť označovanie myšou: setw -g mode-mouse on Nevýhoda je, že sa to neskopíruje do schránky, ale do schránky tmux-u, teda sa to vkladá cez <Ctrl+b> <]>
Ak to chcete dostať mimo tmux, tak to musíte označovať cez <Shift>, ale vtedy je problém s tými „oknami“.
22.10.2013 21:43 KS | skóre: 10 | blog: blg | Horní polní u západní dolní
Rozbalit Rozbalit vše Re: Vim, screen, myš a široký terminál
Možná by ta schránka fungovala, existuje na to escape sekvence. Tmux ji podporuje, ještě ji musí podporovat emulátor terminálu. Viz man stránka tmuxe:
set-clipboard [on | off]
        Attempt to set the terminal clipboard content using the \e]52;...\007 xterm(1)
        escape sequences.  This option is on by default if there is an Ms entry in the
        terminfo(5) description for the client terminal.  Note that this feature needs
        to be enabled in xterm(1) by setting the resource:

              disallowedWindowOps: 20,21,SetXprop

        Or changing this property from the xterm(1) interactive menu when required.
Pochybnost, nejistota - základ poznání
22.10.2013 23:03 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Vim, screen, myš a široký terminál
To je jedna OSC (Operating System Controls) escape sekvencí, které afaik většina termů ignoruje...
23.10.2013 14:37 r080
Rozbalit Rozbalit vše Re: Vim, screen, myš a široký terminál
V novejsim tmux-u funguje zoom, Ctrl+B Z, ktery aktualni pane zvetsi na celou plochu. Ta sama klavesova zkratka to pak vrati do puvodniho layoutu.
24.10.2013 09:27 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: Vim, screen, myš a široký terminál

Diki mockrat. Funguje to skvele. Je pravda, ze to treba zvatsit, ale to zas ako problem az tak nevidim. Zvatsi, vyznaci sa, vrati sa do povodneho rozmeru (zmizne vyznacenie ) a potom shift+insert (alebo skoleckom mysky a to musim zistit, aky je rozdiel, bo shift+insert nie vzdy vrati, co by som cakal) kdekolvek. Super.

23.10.2013 21:31 Kvakor
Rozbalit Rozbalit vše Re: Vim, screen, myš a široký terminál
Nebo je možné nastavit větší fonty a/nebo nižší rozlišení framebufferu (buď parametrem jádra, nebo přes fbset), ono mít řádky nad 200 znaků fontem 16x8 na monitoru s vysokým DPI není nic příjemného, tedy pokud zrovna nemáte orlí zrak :-)

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.