С tmux на OSX, как я могу сделать команду + k более понятной?

20

Когда я использую терминал в OSX, я часто использую +, Kчтобы очистить экран и буфер прокрутки. Это глубоко в мышечной памяти.

Я начал ковыряться с tmux, и одна из неприятностей заключается в том, что + Kстирает весь экран, панели и все. Мне бы хотелось, чтобы это влияло только на сфокусированную панель.

Можно ли как-то настроить это поведение?

Натан Лонг
источник

Ответы:

21

Настройте iTerm2 для отправки команды очистки

Настройки -> Ключи -> + (добавить новый глобальный ярлык)

  • Сочетание клавиш: ⌘ + k
  • Действие: Отправить текст
  • значение:

Снимите флажок \ п

В качестве альтернативы настройте iTerm2 для эффективного сопоставления ⌘ + k с ctrl + l

  • Сочетание клавиш: ⌘ + k
  • Действие: Отправить шестнадцатеричный код
  • значение:

0x0c

Таким образом, вы не увидите, как мигает текст, а команда очистки не будет загрязнять вашу историю.

Джордж Якуб
источник
2
Простое и элегантное решение. Спасибо, мой друг.
Рафаэль
Прекрасное решение! Вы сделали мой опыт Tmux гораздо более приятным. Спасибо :)
Мэтт Дарби
Просто предупреждение, это будет мигать текст в терминал
Jay
1
Это здорово, но оно зависит от clearкоманды и поэтому не будет работать внутри консоли irb или rails.
Роберт
17

Вы можете использовать prefix+ r, после + K, чтобы перерисовать окно tmux.

Если вы можете отказаться от привычки, обычный ctrl+ lработает нормально для каждой панели.

скромный
источник
3
Ctrl + l - это не то же самое, что cmd + k, потому что вы все еще можете прокрутить вверх и просмотреть старую историю с помощью Ctrl + l. Если вы, например, следите за журналом, который быстро заполняет ваш прокрутку, cmd + k неоценим, потому что вы точно знаете, когда вы в последний раз остановились. Ctrl + l не сделает это для вас.
Бьорн
@BjornTipling ⌘ + K - это особенность эмулятора терминала, и она не будет работать внутри tmux ... эта привязка предназначена для очистки статического stdout, а не tmux, и других программ, таких как vim / emacs / weechat / mutt, отображаются
скромно
1
+1 за нарушение привычки, я не могу перестать делать это до сегодняшнего дня. Лучше всего набирать clearвместо этого, я думаю,
zanona
3

Вы можете добавить следующие строки в свой .tmux.conf:

# clear the current pane
bind -n C-k send-keys C-l \; clear-history

Затем перезагрузите конфигурацию tmux. Теперь вы можете использовать вашу клавишу привязки +k(например, Ctrl+ b, k), чтобы очистить текущую панель.

Я не знаю синтаксис для OSX, но я думаю, вы можете легко адаптировать строку.

хаа
источник
Я вижу, что C-lочищает экран и clear-historyочищает буфер прокрутки. Что делает \;часть?
Натан Лонг,
он работает как @NathanLong
Jay
3

bind -n C-k send-keys -R \; send-keys C-l \; clear-history

Получил это отсюда

Реквизит для него. Это работает для меня так же, как Cmd+kработает на эмуляторе терминала, и работает для меня на MacOS 10.12.5 с iTerm2.

Энрико Борба
источник
Работает как шарм, даже когда работает команда вроде tail -f ...или сервер!
Дерек