тмук у пракси: бафер за померање уназад
Разлика између терминала и тмук бафера за помицање и начина подешавања начина копирања, помицања и одабира миша понашања тмук.
Ово је трећи део мог тмука у серији чланака у пракси.
Обично емулатори терминала примењују бафер за померање, тако да можете истражити прошли излаз када се он помери из видокруга. тмук, као и друге апликације преко целог екрана попут вим, ради у такозваном алтернативном баферу екрана надређеног терминала. Алтернативни бафер има тачне димензије ширине и висине као физичку величину прозора.
Постоји неколико ефеката употребе алтернативног бафера:
- Сваки излаз који премашује видљиви део алтернативног бафера се губи. Чим се линије изгубе из вида, оне се губе. Да би спречио губитак историје, тмук примењује сопствени „унутрашњи“ бафер за померање уназад. Последица овога је да не можете радити са унутрашњим померањем уназад, као што то обично радите у оквиру вашег терминала.
- Било који излаз произведен унутар тмук-а (исто важи и за вим, нано, ман, лесс и тако даље) не прелива се у историју помицања спољног терминала. Када затворите апликацију преко целог екрана, вратите се у исто стање када сте покренули апликацију и више не видите излаз из апликације.
У пракси, ако се навикнете на помицање уназад користећи ⌘↑
ваш иТерм и ако ћете то учинити унутар покренуте тмук сесије, контролисаћете и померајте спољни иТерм бафер за померање, а не унутрашњи бафер за помицање.
Решење је коришћење тмук специфичних контрола за приступ сопственом баферу за померање: 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
То је то за данас. Будите у току. У следећем делу серије „тмук у пракси“ говорићемо о интеграцији међуспремника и начину дељења текста копираног унутар тмук-а са системском међуспремником (и локално и када радите даљински, на ОСКС и Линук).
БТВ, можете видети све те подешавања конфигурације на делу, само погледајте мој репозиторијум тмук-цонфиг.
Трик
Ако желите потпуно заобићи режим копирања тмук и одабрати текст путем иТерм-а, само држите
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