Используйте tmux для создания качественного терминала

Linux

tmux

tmux is a terminal multiplexer

tmuxэто терминальный мультиплексор, который также является источником его названияt(terminal) mux(multiplexer), вы можете управлять несколькими терминалами на одном экране!

существуетmacвыгода отiterm2, вы довольно удобно управляете несколькими окнами терминала. Но в линуксе,iterm2Это вне досягаемости кнута,tmuxпреимущества раскрываются.

Насколько я понимаю,tmuxМного преимуществ на Linux или Mac

  1. Разделенный экран

    Истинный,iterm2Разделение экрана также возможно, ноiterm2Один недостаток в том, чтоiterm for Mac. если вместеiterm2а такжеsshесли,iterm2Разделение экрана требует постоянногоssh <server>, следствием этого является наличие нескольких пользовательских подключений, использующихwhoКоманда для проверки количества зарегистрированных пользователей.

  2. attach

    attachМожет играть роль в защите сцены не из-заssh timeoutИ потерянная рабочая среда.

  3. Простое управление и возможность настройки

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

Что касается того, насколько это красиво, то это отражено в настраиваемом стиле строки состояния, где вы можете установить стиль, расположение, стиль текущего окна и насыщенность информацией строки состояния. Напримерgpakosz/.tmuxКонфигурация

tmux

В этой главе будут рассмотрены следующие

  • Как установить на contos/mactmux
  • Автоматизируйте массовые установки с помощью ansibletmux
  • tmuxОбщие операции

Установить

Если вы на Mac, вы можете использоватьbrew install tmuxУстановите TMUX, просто и быстро.

Но вы на Centos, если вы используете напрямуюyumДля установки ПО будет установлена ​​очень старая версия, и многие полезные функции будут недоступны. потом напрямую черезисходный код tmuxЭто хорошая идея, чтобы скомпилировать и установить его самостоятельно

# 安装软件依赖
$ yum install -y gcc automake libevent-devel ncurses-devel glibc-static

# 下载源代码
$ git clone git@github.com:tmux/tmux.git

# 切换到 2.8 版本
$ git checkout 2.8
$ cd tmux

# 编译源码
$ sh autogen.sh && ./configure && make

# 查看版本号
$ ./tmux -V
tmux 2.8

Автоматизируйте установку с помощью ansible

Использование исходного кода для компиляции и установки слишком тривиально и подвержено ошибкам, и может потребоваться установка на несколько серверов.tmux, в этом случае используйтеansibleВыполнение автоматической установки является хорошим вариантом.оansibleОбратитесь к этой серии статейИспользуйте ansible для автоматизированной эксплуатации и обслуживания.

$ git clone git@github.com:shfshanyue/ansible-op.git

# 一次性给多服务器上安装 tmux
$ ansible-playbook -i hosts tmux.yml

tmuxКонфигурация этой доступной роли находится вмоя конфигурация tmuxначальство. Файл конфигурации выглядит следующим образом

# 安装依赖软件
- name: prepare
  yum:
    name: "{{item}}"
  with_items:
    - gcc
    - automake
    - libevent-devel
    # 字符终端处理库
    - ncurses-devel
    - glibc-static

# 下载 tmux 源文件
- name: install tmux
  git:
    repo: https://github.com/tmux/tmux.git
    dest: ~/Documents/tmux
    version: 2.8

- name: make tmux
  shell: sh autogen.sh && ./configure && make
  args:
    chdir: ~/Documents/tmux/

# 使 tmux 全局可执行
- name: copy tmux
  copy:
    src: ~/Documents/tmux/tmux
    dest: /usr/bin/tmux
    remote_src: yes
    mode: 0755

# 使用我的配置文件
- name: clone config file
  when: USE_ME
  git:
    repo: https://github.com/shfshanyue/tmux-config.git 
    dest: ~/Documents/tmux-config

- name: copy config file
  copy:
    src: ~/Documents/tmux-config/.tmux.conf
    dest: ~/.tmux.conf
    remote_src: yes

- name: delete tmux-config 
  file:
    name: ~/Documents/tmux-config
    state: absent

быстрый старт

период, термин

  • serverсодержит несколькоsession
  • sessionсодержит несколькоwindow
  • windowпохожий наiterm2изTab, в том числе несколькоpane, следующий китайский будет переведен как окно
  • paneпохожий наiterm2изPane, следующий китайский язык будет переведен на панель

запускать

# 新建一个 tmux session
$ tmux

Разделенный экран

существуетtmuxИспользуйте сочетания клавиш в средеprefix %а такжеprefix "полный разделенный экран

Посмотреть все ярлыки

prefix ?

tmux высокочастотный режим

Отправить ключ префикса на терминал

Я привык к<Crtl-s>Чтобы быть ключом префикса, префикс по умолчанию устанавливается как<Ctrl-b>.send-prefixпредставляет отправку префиксного ключа на терминал,send-prefix -2Представляет новую комбинацию клавиш, представляющую ключ префикса.

# 以下命令直接在 tmux 命令模式执行,或者加关键字 `tmux` 在 shell 中执行,或者写入配置文件 ~/.tmux.conf 中生效
# `prefix :` 可以进入 tmux 命令模式

$ set -g prefix2 C-s
$ bind C-s send-prefix -2

держите ssh подключенным

каждый раз новыйsessionПринесите свое имя, когдаattach.

небольшая командаdetach, ярлык по умолчанию<prefix> d, сначала будетdetachсбросить токsession.

префикс по умолчанию<Ctrl-b>

$ tmux new -s shanyue

# 或者使用快捷键 prefix + d
$ tmux detach
$ tmux attach -t shanyue

Быстрое перемещение панелей

Команда перемещения панелиselect-pane, который можно настроить какvimкоманда перемещения.

# 以下命令直接在 tmux 命令模式执行,或者加关键字 `tmux` 在 shell 中执行,或者写入配置文件 ~/.tmux.conf 中生效
# `prefix :` 可以进入 tmux 命令模式

# bind 绑定快捷键
# -r 可重复按键
# select-pane 选择面板
$ bind -r h select-pane -L 
$ bind -r l select-pane -R
$ bind -r j select-pane -D
$ bind -r k select-pane -U

Среди них параметр-rПредставляет повторяющиеся ключи, такие какprefix r rвыражатьprefix r, prefix r. Время нажатия клавиши должно быть передано черезrepeat-timeустановить, как правило, 500 мс.

Кроме того, вы также можете включить поддержку мыши, чтобы быстро перемещать панель с помощью мыши.

Переименовать имя окна

rename-windowДля команды переименовать имя окна используется клавиша быстрого доступа по умолчаниюprefix ,

Но есть небольшая проблема, каждый раз после переименования имени окна, ввод нескольких пробелов будет автоматически переименовывать его снова, и мой труд снова будет уничтожен...

Вам нужно настроить следующие две конфигурации, чтобы отключить их, и, наконец, вы можете переименовать их.

# 以下命令直接在 tmux 命令模式执行,或者加关键字 `tmux` 在 shell 中执行,或者写入配置文件 ~/.tmux.conf 中生效
# `prefix :` 可以进入 tmux 命令模式

set -wg allow-rename off                                                            
set -wg automatic-rename off

Включить поддержку мыши

$ tmux set -g mouse on

По умолчанию поддержка мыши отключена, после включения мышь поддерживает копирование, прокрутку, переключение панелей, переключение окон и изменение размера.

Функция поддержки мыши очень мощная, до сих пор она успешно создавалаiterm2. Но мне не очень нравится режим мыши, поэтому я его запретил.

Более того, после включения поддержки мыши любой может управлять моим терминалом, и при этом нет никакой силы.

сохранить текущий путь

Недавно открытыйpaneа такжеwindow, сохранить текущий путь. Добавить аргументы к предыдущим командам-c, указывающий путь к новому окну или панели.

Команда открытия новой панелиsplit-window

# 以下命令直接在 tmux 命令模式执行,或者加关键字 `tmux` 在 shell 中执行,或者写入配置文件 ~/.tmux.conf 中生效
# `prefix :` 可以进入 tmux 命令模式

bind c new-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
bind '"' split-window -c "#{pane_current_path}"

развернуть текущую панель

Командаtmux resize-pane -Z, клавиша быстрого доступа по умолчаниюprefix z. Для получения более подробной информации нажмитеprefix zВойдите в полноэкранный режим, когда закончите, нажмите еще раз, чтобы возобновить. Довольно крутая функция.

кувырок

первое использованиеtmuxкогда используешьwebpack, выводится много, а полезные сообщения об ошибках затираются. В этот момент очень важно повернуть экран вверх. Теперь, чтобы сказатьtmux windowСледующие два режима,

  • default-mode

    только что вошелtmuxРежим по умолчанию.

  • copy-mode

    согласно сprefix [клавиша для входа в этот режим, аналогичныйvi(emacs)изnormal mode, поддерживает копирование, вставку, поиск и перелистывание страниц. конкретноviещеemacsЕго можно обнаружить в соответствии со следующей командой, указывающей на просмотр глобальных настроек окна.mode-keys, по умолчанию будетvi, если нет, установите его вviбар~

    $ tmux show-window-options -g mode-keys
    

    а такжеviКоманда та же, например, страница вверх и вниз (половина экрана) может использоватьсяC-dтак же какC-u, конечно, вы также можете использоватьhjkl.

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

скопировать и вставить

сказано вышеcopy-mode, а затем скопировать и вставить. Войтиcopy-modeназад,vначать выбирать,yскопировать и выйтиcopy-mode. использоватьprefix ]вставить.

Копировать и вставлять в Linux — самая важная и практичная функция.

v & yДля пользовательской конфигурации конфигурация выглядит следующим образом

bind -t vi-copy v begin-selection
bind -t vi-copy y copy-selection

Операция копирования сохранит содержимое вbuffer, ознакомьтесь со следующими командами, чтобы иметь возможность более эффективно работать с буфером

$ tmux list-buffers           # 列出所有 buffer
$ tmux show-buffer -b [name]  # 显示最近 buffer,也可指定 buffer name
$ tmux choose-buffer&emsp;&emsp;    &emsp;# 进入选择 buffer 界面,更加灵活

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

Найти ключевые слова

с момента входаcopy-mode,знакомыйviдрузья должны знать, что поиск/а также?.

Быстро найти окно

Предположим, вы создали несколько новых окон и вам нужно быстро найти определенное окно.Хотя вы знаете содержимое этого окна, вы забыли номер окна.Как решить эту проблему?

Команда, которая имеет хорошее решение, этоfind-window, лучше использовать сочетания клавиш по умолчаниюprefix f. Введите ключевое слово содержимого окна, вы можете быстро найти окно, но есть небольшой недостаток, т.Не могу найти панель!

Last but not least

человек tmux!**Недостаточно быть опытным, не читая документацию, и недостаточно быть опытным, не читая исходный код. ** Поэтому обычно вам нужно читать больше документов и больше команд.

резюме

В этой главе вы сможете научиться использовать tmux на сервере для одновременного управления несколькими окнами, а в сочетании с использованием vim вы сможете работать на сервере в той мере, в какой хотите. Для использования, настройки и плагинов vim обратитесь к предыдущей главе.vim быстрый запуск, настройка и плагины.


Добро пожаловать в публичный аккаунт ** Shanyuexing **, я буду регулярно делиться некоторыми статьями о интерфейсе, бэкэнде, эксплуатации и обслуживании, а также будут ежедневные обзоры и сводки о технологиях и жизни, добро пожаловать, чтобы обратить внимание на биржи.

欢迎关注公众号山月行,在这里记录我的技术成长,欢迎交流