как мне прокрутить в tmux?

<p>я только начал использовать tmux, и мне действительно это нравится, но мне нужно иметь возможность прокручивать открытые буферы/панели/окна. мне все равно, работает ли это с мышью или нет. при поиске на справочной странице tmux я вижу только два экземпляра слова «прокрутка», которые отображаются, и оба имеют отношение к режиму копирования. есть ли способ прокрутки без дополнительных затрат при входе в режим копирования?</p>

<p><kbd>ctrl</kbd>-<kbd>b</kbd> затем <kbd>[</kbd> тогда вы можете использовать обычные навигационные клавиши для прокрутки (например, <kbd>up arrow</kbd> или же <kbd>pgdn</kbd>). нажмите <kbd>q</kbd> выйти из режима прокрутки.</p><p>или вы можете нажать <kbd>ctrl</kbd>-<kbd>b</kbd> <kbd>pgup</kbd> перейти непосредственно в режим копирования и прокрутить одну страницу вверх (именно так, как вам кажется, вы захотите большую часть времени)</p><p>в режиме <code>vi</code> (см. ниже) вы также можете прокручивать страницу вверх/вниз построчно, используя <kbd>shift</kbd>-<kbd>k</kbd> а также <kbd>shift</kbd>-<kbd>j</kbd> (если вы уже находитесь в режиме прокрутки). без смещения курсор перемещается вместо страницы.</p><p>выдержки из <a href="http://linux.die.net/man/1/tmux">справочная страница</a> :</p><blockquote> <p>управлять tmux можно с подключенного клиента, используя комбинацию клавиш префиксной клавиши, по умолчанию "c-b" (ctrl-b), за которой следует командная клавиша.</p> </blockquote><pre><code> the default command key bindings are: [ enter copy mode to copy text or view the history. function vi emacs -------- -- ----- half page down c-d m-down half page up c-u m-up next page c-f page down previous page c-b page up scroll down c-down or c-e c-down scroll up c-up or c-y c-up search again n n search again in reverse n n search backward ? c-r search forward / c-s </code></pre><p>плюс еще куча. обратите внимание, что вам нужно нажать <code>c-b</code> дважды, если вы используете это для перехода на страницу вверх, так как <code>c-b</code> связан как командная клавиша. см. справочную страницу для получения информации о предварительном отображении команды режима копирования с количеством повторов.</p><p>вы можете установить режим привязки клавиш, используя <kbd>ctrl</kbd>-<kbd>b</kbd>, затем</p><pre><code>:set-window-option mode-keys emacs </code></pre><p>или <code>vi</code>.</p>

<p>что ж, вы должны подумать о том, как правильно настроить прокрутку: добавьте свой <code>tmux.conf</code></p><pre><code>set -g mouse on #for tmux version 2.1 and up </code></pre><p>или же</p><pre><code>set -g mode-mouse on #for tmux versions < 2.1 </code></pre><p>у меня это работало в окнах и панелях. теперь tmux просто идеален.</p><p> <a href="https://mutelight.org/practical-tmux">практический tmux</a> имеет больше информации о файлах tmux.conf.</p>

<p>из моего .tmux.conf:</p><pre><code># sane scrolling set -g terminal-overrides 'xterm*:smcup@:rmcup@' </code></pre><p>это включает собственную прокрутку xterm.</p>

<p>для новейшего tmux 2.1, для разумной прокрутки мышью, это правильный ответ:</p><pre><code>set -g mouse on " sane scrolling: bind -n wheeluppane if-shell -f -t = "#{mouse\_any\_flag}" "send-keys -m" "if -ft= '#{pane\_in\_mode}' 'send-keys -m' 'copy-mode -e; send-keys -m'" </code></pre><p>недостаточно просто перезагрузить ваш .tmux.conf, вам нужно перезапустить ваш tmux, например <code>tmux kill-server && tmux</code></p><p>взяты из <a href="https://github.com/tmux/tmux/issues/145">https://github.com/tmux/tmux/issues/145</a> </p>

<p>в моем случае просто <kbd>opt</kbd> + <kbd>uparrow</kbd> а также <kbd>opt</kbd> + <kbd>downarrow</kbd> на osx.</p>

<p>это то, как я это сделал, и причины, по которым я думаю, что это лучше, чем по умолчанию.</p><p>чтобы попробовать, поместите все разделы кода в <code>~/.tmux.conf</code>.</p><p>шаг 1. измените префиксный ключ, чтобы вам не пришлось набирать один бит. «b» - это, казалось бы, клавиша «закрыть», но она находится в середине двух указательных пальцев (на «f» и «j» соответственно). поскольку этот ярлык необходим в tmux, c-j намного лучше, так как включает в себя нулевое движение руки (кроме нажатия клавиши).</p><pre><code>set -g prefix c-j unbind c-b bind c-j send-prefix </code></pre><p>шаг 2. «s» (для входа в режим копирования): 1) закрыть (та же причина, что и выше), 2) включает в себя другую руку (сравните: 1-2 в боксе, или команда <code>ls</code> для просмотра файлов в directory), и 3) можно рассматривать как мнемонику для «прокрутки» (хотя режим копирования - это не только прокрутка).</p><pre><code>bind s copy-mode </code></pre><p>шаг 3. последняя часть, фактическая прокрутка. 'p' и 'n' знакомы для этой цели пользователям emacs. они близки, интуитивно понятны («p» выше «n» на клавиатуре) и мнемоничны («предыдущий» и «следующий»). если вы просто выполнили прокрутку в emacs, а затем пошли в tmux, есть смысл использовать эти ярлыки.</p><p>тем не менее, я обнаружил, что «i» и «k» даже лучше - они даже ближе, чем «p» и «n», и интуитивно понятны (по той же причине); что касается мнемоники - поскольку прокрутка - это обычное дело, мнемоника не будет иметь большого значения, поскольку быстрые клавиши скоро обойдут ваш мозг и войдут в мышечную память.</p><pre><code>bind -t emacs-copy 'p' scroll-up bind -t emacs-copy 'n' scroll-down bind -t emacs-copy 'i' scroll-up bind -t emacs-copy 'k' scroll-down </code></pre>

<p>я много искал это, и лучшее решение для меня работает, как упомянуто в этом подробном руководстве: <a href="http://tangledhelix.com/blog/2012/07/16/tmux-and-mouse-mode/">http://tangledhelix.com/blog/2012/07/16/tmux-and-mouse-mode/</a> </p><p>добавьте эти привязки в ~/.tmux.conf:</p><pre><code>set -g mode-mouse on unbind + bind + \ new-window -d -n tmux-zoom 'clear && echo tmux zoom && read' \;\ swap-pane -s tmux-zoom.0 \;\ select-window -t tmux-zoom unbind - bind - \ last-window \;\ swap-pane -s tmux-zoom.0 \;\ kill-window -t tmux-zoom </code></pre><p>при реализации вышеупомянутого подхода вы также можете копировать из панелей в окне, сначала <em>zoom</em> в каждую панель, используя<strong> префикс </strong><strong> + </strong>.</p><p>одной важной деталью, которая отсутствовала в режиме мыши, является нажатие<strong> shift </strong>перед выбором области для копирования. это скопирует его в традиционный терминальный буфер вместо буфера копирования tmux. ( <a href="https://wiki.archlinux.org/index.php/tmux#scrolling\_issues">https://wiki.archlinux.org/index.php/tmux#scrolling\_issues</a> )</p>

<p>единственное, что работает для меня, это поместить следующее в <code>~/.tmux.conf</code></p><pre><code># allow xterm titles in terminal window, terminal scrolling with scrollbar, and setting overrides of c-up, c-down, c-left, c-right set -g terminal-overrides "xterm*:xt:smcup@:rmcup@:kup5=\eoa:kdn5=\eob:klft5=\eod:krit5=\eoc" </code></pre><p>(может потребоваться перезагрузка, чтобы это вступило в силу)</p><p><strong> обновление: </strong></p><p>я обнаружил, что если вы измените настройку в соединении putty> данные> тип терминала на «putty» (используется для устранения некоторых проблем форматирования) с «xterm», то это решение перестает работать.</p><p><strong> обновление 2: </strong></p><p>используйте это, если вы хотите "putty" в качестве типа терминала: <code>set -g terminal-overrides "putty*:xt:smcup@:rmcup@:kup5=\eoa:kdn5=\eob:klft5=\eod:krit5=\eoc"</code></p>

<p>я бы порекомендовал попробовать плагин <a href="https://github.com/nhdaly/tmux-better-mouse-mode">tmux-better-mouse-mode</a> , чтобы решить большинство проблем, связанных с мышью tmux.</p><p>он совместим с tmux 2.1+ и новым подходом <code>set-option -g mouse on</code>.</p>

<p>это сработало для меня:</p><pre><code>vim ~/.tmux.conf set -g mode-mouse on ###insert this setting with vim, then source the file. tmux source-file ~/.tmux.conf </code></pre>