Этот же вопрос мучает меня уже довольно давно. Вот лучшее, что я придумал. Поместите это в ваш файл .tmux.conf:
bind -n C-k clear-history
Это связывает ctrl-k с командой tmux clear-history. -N после связывания делает это таким образом, что вам не нужно вводить префикс команды tmux (по умолчанию ctrl-b). Я использую bash, поэтому ctrl-l уже делает то же самое, что набирать «clear» в командной строке. С этими двумя ключами я получаю хорошую комбинацию ctrl-l, ctrl-k, которая перемещает весь буфер прокрутки за пределы экрана («очистить»), а затем удаляет всю эту историю (команда tmux «clear-history»).
Она не так хороша, как комбинация из 1-й клавиши Terminal, iTerm или Konsole, чтобы очистить ее, но это мир лучше, чем вводить все время в историю.
Ницца. Я делал bind k send-keys "clear"\; send-keys "Enter"для очистки части, но использование встроенного ctrl+lпроще, и clear-historyизбавиться от истории прокрутки является хорошим дополнением.
Хенрик Н
1
это переплетает мои панели вверх, удаляя весь текст со всех панелей и удаляя границы вокруг них! Есть идеи, что с этим?
Ян Воан
Хлоп. Какую оболочку вы используете? Случайно ли уже есть поведение, определенное для ctrl + k?
Хуанпако
iTerm2. Просто видел, что ctrl + k уже делает это без набора привязки tmux, поэтому это должно быть отображение iTerm2.
Ян Воан
Weird. Я также использую iTerm2. Я не обновлял его в течение некоторого времени, так что может быть разница в версии. Я также больше не использую Ck, потому что это вызвало проблемы с моими привязками vim. Я использую Cn сейчас.
Хуанпако
58
Как правильно сказал @juanpaco, clear-historyэто команда для очистки буфера прокрутки.
Я добавлю, что мне нравится также очищать, что на экране в той же команде. Выпуск send-keys -Rсбрасывает (очищает) экран, поэтому я использую следующее в моем.tmux.conf
Непосредственно из документации tmux send-keys: «Флаг -R вызывает сброс состояния терминала». Вам, вероятно, просто нужно обновить.
z5h
20
Недостаток использования -R состоит в том, что ваша текущая строка ввода становится скрытой, в отличие от того, когда вы очищаете свой терминал с помощью Ctrl + l. То, что я сделалbind -n C-l send-keys C-l \; clear-history
Вольпато
6
Для тех из вас, кто не знает (как я не знал), чтобы прийти в состояние, чтобы ввести clear-historyкоманду, нажмите Ctrl+B, а затем запустите команду с двоеточием ( :).
Palswim
1
@volpato Мне нравится ваш подход, но я считаю, что он оставляет один «экран» буфера в прокрутке назад. Понятия не имею почему. -R убирает приглашение, но я «разрешил» его, добавив дополнительный Cm в конце (но тогда это помещает его во вторую строку).
Gdogg
2
Вы можете сжать это до send-keys -R C-l \; clear-history.
иван
35
Каждый ответ здесь говорит о добавлении новых привязок клавиш.
Если вы просто хотите делать это время от времени, вам вообще не нужно отображение ...
Префикс по умолчанию <Ctrl-b>
Просто введите <prefix>:в соответствующую панель, а затем введите clear-historyи нажмите Enter.
Одна из замечательных особенностей tmux заключается в том, что вы можете просто запустить любую из таких команд ... или запустить их в оболочке / скрипте, как они tmux command... или создать для них комбинацию клавиш.
Можно ввести первые три символа cle, а затем выполнить автозаполнение <tab>в первый раз, а затем во второй раз использовать <up arrow>для доступа к предыдущей записи. Таким образом, это довольно быстро.
BCT
1
Это не работает для меня, потому что, когда я начинаю печатать после нажатия <Ctrl-b> the клавиши c`, устанавливается создание нового окна.
fraxture
@fraxture Я думаю, что вы неправильно поняли - после того, как вы нажали <Ctrl-b>, а затем нажмите, :чтобы получить интерактивную подсказку - вот где вы
наберете
21
Если вы хотите объединить CTRL-Lплюс очистить историю, добавьте это в ваш ~/.tmux.conf:
bind u send-keys C-l \; run-shell "sleep .3s" \; clear-history
Это даже работает, если вы, например, находитесь в оболочке MySQL.
есть один нюанс с этим подходом, и он заключается в том, что он работает только на локальных оболочках, потому что он отправляет tmux clear-history в виде строки для записи на активную панель. Я приспособил это к:bind-key E send-keys "C-k" \; send-keys "C-u" \; send-keys "clear" \; send-keys "Enter" \; run-shell "sleep .3s; tmux clear-history"
Санти П.
12
Намного проще, чем большинство, я просто создал скрипт оболочки с именем clsи запускаю его всякий раз, когда хочу очистить экран и буфер прокрутки.
Но что, если у вас нет доступа к командной строке. Например, когда сервер работает, и вы смотрите журналы.
zudduz
откуда вы будете смотреть логи? Через веб-сервер? Если так, то я не понимаю, почему задействован tmux?
Брэд Паркс
1
Приятно иметь возможность одновременно просматривать журналы сервера и ваш редактор vim.
zudduz
Используете ли вы tmux-сплиты? Если нет, просто разделите ваше окно на 2, и просмотрите свои журналы в одном, и используйте vim в другом, просто запустив `tmux split 'внутри вашей сессии tmux ... Но, может быть, я не понимаю, что вы делаете?
Брэд Паркс
10
Обнаружил, что это лучше всего работает в TMUX 2.6, очистка экрана, прокрутка, но сохранение запроса, отображаемого после.
Ctrl-L используется в консольных приложениях для перерисовки экрана. Я обнаружил, что когда связан сsend-keys -R нему клавиши со стрелками перестали корректно работать в некоторых приложениях (например, vim, mc).
Чтобы сохранить функциональность перерисовки в консольных приложениях, я использовал:
Ведущий пробел в «clear && tmux clear-history» предотвращает запись команды в файл истории (при условии, что у вас есть настройки оболочки для обработки лидирующих пробелов таким образом; google «Hist игнорировать пробел» + имя вашей оболочки для более подробной информации). Информация). Мне нравится, чтобы эта команда не появлялась в моей истории, так как она больше встроена в Ctrl-k в Терминале.
Первые ключи отправки Cu и ключи отправки Ck очистят все, что в данный момент набрано в приглашении, чтобы убедиться, что «clear && tmux clear-history» успешна (например, если вы набрали «ABCDEFG» в приглашении и имеете ваш курсор между D и E, это гарантирует, что «ABCD clear && tmux clear-historyEFG» не будет отправлено в оболочку, что приведет к ошибке).
Клавиши отправки "Вверх" и последние клавиши отправки Cu очищают последние элементы из внутренней истории ваших оболочек. Даже с указанным выше пробелом внутренняя история оболочки будет содержать строку «clear ...». Отправка и Ctrl-U избавляется от этого.
Наконец, в iTerm я установил ctrl-k для сопоставления с ctrl-a k (мой префикс tmux установлен на ctrl-a), поэтому я могу набрать ctrl-k, что и мои руки хотят делать из многих лет работы. так. Я делаю это, перейдя в iTerm> Настройки> Профили> Ключи и добавив ярлык для отправки шестнадцатеричного кода "0x01 0x6B". Здесь есть отличная статья, которая дает больше информации об использовании шестнадцатеричных кодов с tmux и iTerm: http://tangledhelix.com/blog/2012/04/28/iterm2-keymaps-for-tmux/
Это в значительной степени дает мне Ctrl-K с Tmux. Единственное, что до сих пор меня раздражает, так это то, что настоящий ctrl-k без tmux не имеет проблем, если у вас есть что-то набранное в командной строке, и вы сохраните то, что набрали при очистке экрана. Как уже упоминалось, этот подход должен прояснить, что набрано, чтобы команда «clear ...» не потерпела неудачу. Но это чертовски близко!
Я бы тоже хотел узнать, есть ли причина не рекомендовать это.
Гастон Санчес
2
Во-первых, в этом нет необходимости: в -n C-lосновном говорится «поймай это», и тогда ты сразу же пропускаешь эту вещь. (т.е. это не работает.)… Во-вторых, ваше намерение отключено, потому что ⌃Lочищает экран , а не прокручивает назад: если вы нажмете, ⌃B [а затем прокрутите вверх, вы увидите, что все прокрутки по-прежнему записаны; цель этого вопроса, чтобы очистить этот скроллинг (tmux в), а не видимый терминал.
ELLIOTTCABLE
2
После долгих исследований и тратить время. Я нашел лучший способ для меня на Zsh и Terminal.app
Я использую, prefix-cчтобы очистить экран и prefix-Cочистить историю и буфер прокрутки и не оставляя строк выше, потому что я нахожу это раздражающим.
Без Vim
# clear screen
bind c send-keys 'C-l'
# clear screen and history
bind C send-keys -R \; send-keys C-l \; clear-history \; send-keys
С Vim
# check if the pane is running vim
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \ | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
# clear screen
bind c if-shell "$is_vim" "send-keys c" "send-keys 'C-l'"
# clear screen and history
bind C send-keys -R \; send-keys C-l \; clear-history \; send-keys
Итак, я какое-то время пользовался подходом plu сверху , но я уже устал от его ограничений (в основном, ⌃Lпроход через бессмыслен, если он не передан в программу, которая его понимает).
Так что я усовершенствовал различные подходы в разных ответах на эту тему; хотя этот подход сложный, он работает как с оболочками, так и с другими командами :
Попробуйте это с tail -f /private/var/log/system.logчем-то!
Предостережения:
Здесь есть одно важное замечание: это невидимое изменение размера очищаемой панели, если это не оболочка. Это может вызвать поведение изменения размера в некоторых приложениях командной строки, прослушивающих SIGWINCHes; но я считаю, что это не большая проблема, потому что это программы, которые вы, скорее всего, не будете пытаться «очистить» в любом случае .
Кроме того, ситуация с цитированием оболочки уже является беспорядком и может легко стать более единообразной при встраивании #{pane_current_command}, поэтому будьте осторожны, возможно, вам придется изменить это на основе вашегоdefault-command настроек.
То же самое относится и к моему тестированию соответствия этой команды "sh"; если у вас есть default-commandчто - то вроде /bin/bash --loginили нечто сложное с участием exec, то текущая команда не может закончиться "sh"; используйте ⌃B :для выполнения, display-message '#{pane_current_command}'если вы хотите увидеть, что проверяется.
Ответы:
Этот же вопрос мучает меня уже довольно давно. Вот лучшее, что я придумал. Поместите это в ваш файл .tmux.conf:
Это связывает ctrl-k с командой tmux clear-history. -N после связывания делает это таким образом, что вам не нужно вводить префикс команды tmux (по умолчанию ctrl-b). Я использую bash, поэтому ctrl-l уже делает то же самое, что набирать «clear» в командной строке. С этими двумя ключами я получаю хорошую комбинацию ctrl-l, ctrl-k, которая перемещает весь буфер прокрутки за пределы экрана («очистить»), а затем удаляет всю эту историю (команда tmux «clear-history»).
Она не так хороша, как комбинация из 1-й клавиши Terminal, iTerm или Konsole, чтобы очистить ее, но это мир лучше, чем вводить все время в историю.
источник
bind k send-keys "clear"\; send-keys "Enter"
для очистки части, но использование встроенногоctrl+l
проще, иclear-history
избавиться от истории прокрутки является хорошим дополнением.Как правильно сказал @juanpaco,
clear-history
это команда для очистки буфера прокрутки.Я добавлю, что мне нравится также очищать, что на экране в той же команде. Выпуск
send-keys -R
сбрасывает (очищает) экран, поэтому я использую следующее в моем.tmux.conf
bind-key b send-keys -R \; clear-history
Это очищает экран и буфер прокрутки.
источник
send-keys
: «Флаг -R вызывает сброс состояния терминала». Вам, вероятно, просто нужно обновить.bind -n C-l send-keys C-l \; clear-history
clear-history
команду, нажмитеCtrl+B
, а затем запустите команду с двоеточием (:
).send-keys -R C-l \; clear-history
.Каждый ответ здесь говорит о добавлении новых привязок клавиш.
Если вы просто хотите делать это время от времени, вам вообще не нужно отображение ...
Префикс по умолчанию
<Ctrl-b>
Просто введите
<prefix>:
в соответствующую панель, а затем введитеclear-history
и нажмите Enter.Одна из замечательных особенностей tmux заключается в том, что вы можете просто запустить любую из таких команд ... или запустить их в оболочке / скрипте, как они
tmux command
... или создать для них комбинацию клавиш.источник
cle
, а затем выполнить автозаполнение<tab>
в первый раз, а затем во второй раз использовать<up arrow>
для доступа к предыдущей записи. Таким образом, это довольно быстро.<Ctrl-b> the
клавиши c`, устанавливается создание нового окна.:
чтобы получить интерактивную подсказку - вот где выЕсли вы хотите объединить
CTRL-L
плюс очистить историю, добавьте это в ваш~/.tmux.conf
:Это даже работает, если вы, например, находитесь в оболочке MySQL.
источник
tail -f some.log
, верно? Есть ли способ совместитьctrl-Z
с этим? Может показаться, что это правильно.Я нашел использование
send-keys -R
немного медленным - вот еще один способ очистить экран и историю с помощью одной командыВложенный вызов tmux используется как наиболее очевидный
bind-key C send-keys "clear" \; send-keys "Enter" \; clear-history
не удается очистить текущий текст экрана из истории - команда clear-history запускается в отдельном потоке для ключей отправки.
источник
bind-key E send-keys "C-k" \; send-keys "C-u" \; send-keys "clear" \; send-keys "Enter" \; run-shell "sleep .3s; tmux clear-history"
Намного проще, чем большинство, я просто создал скрипт оболочки с именем
cls
и запускаю его всякий раз, когда хочу очистить экран и буфер прокрутки.Все это так:
ЦБС
источник
Обнаружил, что это лучше всего работает в TMUX 2.6, очистка экрана, прокрутка, но сохранение запроса, отображаемого после.
Использует Ctrl-L
источник
Ctrl-L используется в консольных приложениях для перерисовки экрана. Я обнаружил, что когда связан с
send-keys -R
нему клавиши со стрелками перестали корректно работать в некоторых приложениях (например, vim, mc).Чтобы сохранить функциональность перерисовки в консольных приложениях, я использовал:
Это требует, чтобы опция tmux была включена
alternate-screen
(по умолчанию).источник
Я использовал некоторые из вышеперечисленных плюс другие источники, чтобы придумать:
Ведущий пробел в «clear && tmux clear-history» предотвращает запись команды в файл истории (при условии, что у вас есть настройки оболочки для обработки лидирующих пробелов таким образом; google «Hist игнорировать пробел» + имя вашей оболочки для более подробной информации). Информация). Мне нравится, чтобы эта команда не появлялась в моей истории, так как она больше встроена в Ctrl-k в Терминале.
Первые ключи отправки Cu и ключи отправки Ck очистят все, что в данный момент набрано в приглашении, чтобы убедиться, что «clear && tmux clear-history» успешна (например, если вы набрали «ABCDEFG» в приглашении и имеете ваш курсор между D и E, это гарантирует, что «ABCD clear && tmux clear-historyEFG» не будет отправлено в оболочку, что приведет к ошибке).
Клавиши отправки "Вверх" и последние клавиши отправки Cu очищают последние элементы из внутренней истории ваших оболочек. Даже с указанным выше пробелом внутренняя история оболочки будет содержать строку «clear ...». Отправка и Ctrl-U избавляется от этого.
Наконец, в iTerm я установил ctrl-k для сопоставления с ctrl-a k (мой префикс tmux установлен на ctrl-a), поэтому я могу набрать ctrl-k, что и мои руки хотят делать из многих лет работы. так. Я делаю это, перейдя в iTerm> Настройки> Профили> Ключи и добавив ярлык для отправки шестнадцатеричного кода "0x01 0x6B". Здесь есть отличная статья, которая дает больше информации об использовании шестнадцатеричных кодов с tmux и iTerm: http://tangledhelix.com/blog/2012/04/28/iterm2-keymaps-for-tmux/
Это в значительной степени дает мне Ctrl-K с Tmux. Единственное, что до сих пор меня раздражает, так это то, что настоящий ctrl-k без tmux не имеет проблем, если у вас есть что-то набранное в командной строке, и вы сохраните то, что набрали при очистке экрана. Как уже упоминалось, этот подход должен прояснить, что набрано, чтобы команда «clear ...» не потерпела неудачу. Но это чертовски близко!
источник
почему нет?
bind -n C-l send-keys C-l
источник
-n C-l
основном говорится «поймай это», и тогда ты сразу же пропускаешь эту вещь. (т.е. это не работает.)… Во-вторых, ваше намерение отключено, потому что⌃L
очищает экран , а не прокручивает назад: если вы нажмете,⌃B [
а затем прокрутите вверх, вы увидите, что все прокрутки по-прежнему записаны; цель этого вопроса, чтобы очистить этот скроллинг (tmux в), а не видимый терминал.После долгих исследований и тратить время. Я нашел лучший способ для меня на Zsh и Terminal.app
Я использую,
prefix-c
чтобы очистить экран иprefix-C
очистить историю и буфер прокрутки и не оставляя строк выше, потому что я нахожу это раздражающим.Без Vim
С Vim
источник
Чтобы быстро исправить отдельные панели tmux, вы можете создать псевдоним ...
источник
Итак, я какое-то время пользовался подходом plu сверху , но я уже устал от его ограничений (в основном,
⌃L
проход через бессмыслен, если он не передан в программу, которая его понимает).Так что я усовершенствовал различные подходы в разных ответах на эту тему; хотя этот подход сложный, он работает как с оболочками, так и с другими командами :
Попробуйте это с
tail -f /private/var/log/system.log
чем-то!Предостережения:
Здесь есть одно важное замечание: это невидимое изменение размера очищаемой панели, если это не оболочка. Это может вызвать поведение изменения размера в некоторых приложениях командной строки, прослушивающих
SIGWINCH
es; но я считаю, что это не большая проблема, потому что это программы, которые вы, скорее всего, не будете пытаться «очистить» в любом случае .Кроме того, ситуация с цитированием оболочки уже является беспорядком и может легко стать более единообразной при встраивании
#{pane_current_command}
, поэтому будьте осторожны, возможно, вам придется изменить это на основе вашегоdefault-command
настроек.То же самое относится и к моему тестированию соответствия этой команды
"sh"
; если у вас естьdefault-command
что - то вроде/bin/bash --login
или нечто сложное с участиемexec
, то текущая команда не может закончиться"sh"
; используйте⌃B :
для выполнения,display-message '#{pane_current_command}'
если вы хотите увидеть, что проверяется.источник