тмук у пракси: бафер за померање уназад

Разлика између терминала и тмук бафера за помицање и начина подешавања начина копирања, помицања и одабира миша понашања тмук.

Ово је трећи део мог тмука у серији чланака у пракси.

Обично емулатори терминала примењују бафер за померање, тако да можете истражити прошли излаз када се он помери из видокруга. тмук, као и друге апликације преко целог екрана попут вим, ради у такозваном алтернативном баферу екрана надређеног терминала. Алтернативни бафер има тачне димензије ширине и висине као физичку величину прозора.

Постоји неколико ефеката употребе алтернативног бафера:

  • Сваки излаз који премашује видљиви део алтернативног бафера се губи. Чим се линије изгубе из вида, оне се губе. Да би спречио губитак историје, тмук примењује сопствени „унутрашњи“ бафер за померање уназад. Последица овога је да не можете радити са унутрашњим померањем уназад, као што то обично радите у оквиру вашег терминала.
  • Било који излаз произведен унутар тмук-а (исто важи и за вим, нано, ман, лесс и тако даље) не прелива се у историју помицања спољног терминала. Када затворите апликацију преко целог екрана, вратите се у исто стање када сте покренули апликацију и више не видите излаз из апликације.

У пракси, ако се навикнете на помицање уназад користећи ⌘↑ваш иТерм и ако ћете то учинити унутар покренуте тмук сесије, контролисаћете и померајте спољни иТерм бафер за померање, а не унутрашњи бафер за помицање.

Решење је коришћење тмук специфичних контрола за приступ сопственом баферу за померање: Ctrl-bзатим [да бисте ушли у режим копирања, користите Down/Upстрелице или PageDownи PageUpтастере qили Enterда бисте изашли из режима копирања.

Неки људи којима ово смета - конфигуришите тмук бафер за померање да буде дозвољено да се приказује у баферу за помицање родитељског терминала - тако да могу само да користе познате контроле помицања. Погледајте овај пост. Међутим, ово решење је ограничено на сесију тмук са само једним прозором и једним окном. А када одвојите / затворите сесију тмук, родитељски терминал је загађен излазом тмук прозора.

Лично користим тмук сцроллбацк без хаковања изнад, али дотјерујем његову конфигурацију да би био пријатељскији и познатији.

Пре свега, не волим prefix,[да улазим у режим копирања. Навикао сам да ⌘↑почну да се померају у иТерм, а ја сам додао следеће роот кеибиндинг:

# trigger copy mode bybind -n M-Up copy-mode

Једном када сте у режиму копирања, можете да наставите да притискате M-Upза померање за 1 линију. Уобичајене PageDownи PageUpконтроле доступне су за померање по целом екрану, као и за додатно M-PageDownи M-PageUpза пола екрана (заиста згодно).

# Scroll up/down by 1 line, half screen, whole screenbind -T copy-mode-vi M-Up send-keys -X scroll-upbind -T copy-mode-vi M-Down send-keys -X scroll-downbind -T copy-mode-vi M-PageUp send-keys -X halfpage-upbind -T copy-mode-vi M-PageDown send-keys -X halfpage-downbind -T copy-mode-vi PageDown send-keys -X page-downbind -T copy-mode-vi PageUp send-keys -X page-up

Штавише, чак и када сам унутар тмук сесије, још увек могу да наставим да користим ⌘↑и ⌘↓контролишем унутрашњи тмук бафер за померање, уместо онај иТерм. Могуће је коришћењем прилагођеног иТерм профила са неким поништеним везама тастера за покретање тмук акција. Тако ⌘↑притиснут у иТерм само шаље M-Upпритисак тастера на сесију тмук.

Прочитајте мој претходни део серије „тмук у пракси“ за више детаља: тмук у пракси: интеграција иТерм2 и ​​тмук.

Још један подразумевани тмук који бих радије променио је помицање точкића миша. Помера се за 5 редова, што је осећај великог скока. Смањимо га за помицање за 2 реда:

# When scrolling with mouse wheel, reduce number of scrolled rows per tick to "2" (default is 5)
bind -T copy-mode-vi WheelUpPane select-pane \; send-keys -X -N 2 scroll-upbind -T copy-mode-vi WheelDownPane select-pane \; send-keys -X -N 2 scroll-down

Па, хајде сада да разговарамо о копирању текста када сте у режиму копирања. Навикнем се да копирам текст помоћу миша. Омогућимо подршку мишем:

set -g mouse on

Подразумевано, када мишем одаберете текст у тмуку, он се копира у бафер и одмах ћете одустати од режима копирања. Ваша тренутна позиција помицања враћа се на крај излаза и прелазите у режим наредбеног ретка. Да видимо ово на делу:

Као што примећујете, сваки пут када мишем одаберем текст, покреће ме режим копирања. Стварно је досадно. Обично када заглавим са неким задатком, обично одаберем неки текст овде или тамо само да бих медитирао (помаже ми да се усредсредим?). Или бисте можда желели само да одаберете неки текст који ћете истакнути за свог колегу који седи поред вас.

Па хајде да ово подесимо. Не желимо да нас избаце из режима копирања. Не желимо да се избор обрише на крају превлачења мишем. Текст из избора се може копирати левим кликом миша након тога.

# Do not copy selection and cancel copy mode on drag end event# Prefer iTerm style selection: select, then mouse click to copy to bufferunbind -T copy-mode-vi MouseDragEnd1Panebind -T copy-mode-vi MouseDown1Pane select-pane \;\ send-keys -X copy-pipe "pbcopy" \;\ send-keys -X clear-selection

Проверимо резултат:

Да бисте приступили ставкама бафера за копирање и налепили најновију ставку, користите C-pи p:

bind p paste-bufferbind C-p choose-buffer

То је то за данас. Будите у току. У следећем делу серије „тмук у пракси“ говорићемо о интеграцији међуспремника и начину дељења текста копираног унутар тмук-а са системском међуспремником (и локално и када радите даљински, на ОСКС и Линук).

БТВ, можете видети све те подешавања конфигурације на делу, само погледајте мој репозиторијум тмук-цонфиг.

Трик

Ако желите потпуно заобићи режим копирања тмук и одабрати текст путем иТерм-а, само држите pt> key while dragging you mouse.

Resources and links

shell — What exactly is scrollback and scrollback buffer? — Unix & Linux Stack Exchange — //unix.stackexchange.com/questions/145050/what-exactly-is-scrollback-and-scrollback-buffer

tmux scrollback with iTerm2 • dan.carley.co — //dan.carley.co/blog/2013/01/11/tmux-scrollback-with-iterm2/

tmux copy mouse selected text to clipboard automatically on mouse release — Stack Overflow — //stackoverflow.com/questions/36815879/tmux-copy-mouse-selected-text-to-clipboard-automatically-on-mouse-release

keyboard shortcuts — tmux — scroll up/down with shift + page up/down into a pane — Super User — //superuser.com/questions/702189/tmux-scroll-up-down-with-shift-page-up-down-into-a-pane

[question/request] copy-mode without automatically selecting a pane? · Issue #1021 · tmux/tmux — //github.com/tmux/tmux/issues/1021

ssh — Leaving tmux scrollback in terminal (iTerm2) — Stack Overflow — //stackoverflow.com/questions/12865559/leaving-tmux-scrollback-in-terminal-iterm2

command line — Use terminal scrollbar with tmux — Super User — //superuser.com/questions/310251/use-terminal-scrollbar-with-tmux