Язык .tmux.conf

Вопрос или проблема

Я настраиваю свой .tmux.conf и нашел много примеров кастомизации у других людей.

Вот один пример, который, как утверждается, делает разделение панели tmux более похожим на vim:

set-option -g prefix C-w
unbind-key C-w
bind-key C-w send-prefix
set -g base-index 1

bind-key v split-window -h
bind-key s split-window -v
bind-key h select-pane -L
bind-key j select-pane -D
bind-key k select-pane -U
bind-key l select-pane -R

Каков синтаксис для bind key, set и set-option?

Конфигурационный файл tmux состоит из последовательности команд tmux, которые выполняются при запуске. Все команды и опции объяснены на tmux(1) man page.

Язык – это команды tmux, но синтаксис зависит от версии tmux.

Файл tmux.conf представляет собой последовательность команд tmux, разделенных новыми строками и экранированными точками с запятой (\;). Комментарии начинаются с #.

Вы можете список доступных команд tmux с помощью tmux list-commands.

Если вы пришли к этому вопросу, вы, возможно, ищете синтаксис этого конфигурационного файла, потому что вас интересуют фигурные скобки. Они были введены в tmux 3.0, поэтому плагины, которые написаны для tmux >= 3.0, могут вызвать ошибки в более старых версиях.

И, конечно, страница руководства для более старых версий tmux не упоминает этот синтаксис. (Почему бы и нет? Фигурные скобки еще не были добавлены.)

Но как исправить проблемы с новым синтаксисом?

Пример – это почему я оказался на этой странице. Плагин tmux-mighty-scroll подключает файл tmux.conf, содержащий эту команду:

bind-key -T root WheelUpPane {
  mighty_scroll_select_pane
  if-shell -t "{mouse}" "$PSCHECK #{pane_pid} $MIGHTY_SCROLL_PASS_THROUGH" {
    send-keys -t "{mouse}" -M
  } {
    if-shell -t "{mouse}"   "$PSCHECK #{pane_pid} $MIGHTY_SCROLL_BY_LINE || ( [ '$MIGHTY_SCROLL_FALLBACK_MODE' = 'by-line' ] && #{?alternate_on,true,false} )" {
      mighty_scroll_with_interval Up
    } {
      if-shell -t "{mouse}" "$PSCHECK #{pane_pid} $MIGHTY_SCROLL_BY_PAGE || ( [ '$MIGHTY_SCROLL_FALLBACK_MODE' = 'by-page' ] && #{?alternate_on,true,false} )" {
        send-keys -t "{mouse}" PageUp
      } {
        if-shell -t "{mouse}" "[ '$MIGHTY_SCROLL_FALLBACK_MODE' = 'pass-through' ] && #{?alternate_on,true,false}" {
          send-keys -t "{mouse}" -M
        } {
          mighty_scroll_enter_copy_mode
          mighty_scroll_with_interval -X scroll-up
        }
      }
    }
  }
}

Каждый раз при запуске экран заполняется ошибками, например:

/home/user/.tmux/plugins/tmux-mighty-scroll/tmux.conf:5: unknown command: }

Чтобы изменить, вы можете заменить

some-tmux-command {
 a-nested-command
 a-second-nested-command
}

с \ для экранирования новых строк и \; для разделения последовательных команд tmux:

some-tmux-command     \
  a-nested-command \; \
  a-second-nested-command

.

Ответ или решение

Теоретическая часть

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

Итак, в чем же специфика языка конфигурации tmux? Это набор команд, которые исполняются при запуске сессии tmux. Каждая команда или инструкция в этом файле управляет какой-то определенной функцией или поведением tmux. Команды часто содержат такие ключевые слова как bind-key, set, set-option и др. Каждое из них имеет свои функции и параметры:

  • set-option: Эта команда используется для настройки параметров tmux. Параметры могут быть глобальными (-g) или локальными для сессии. Например, set-option -g prefix C-w изменяет глобальную клавишу префикса.

  • set: Это сокращение для set-option и обладает аналогичной функциональностью. Она применяется для более простого и лаконичного задания настроек.

  • bind-key: Этой командой вы ассоциируете определенные действия с сочетаниями клавиш. Например, bind-key v split-window -h устанавливает сочетание v для горизонтального разделения окна.

Примерная иллюстрация

Рассмотрим примеры, которые вы предоставили, чтобы лучше понять работу команд.

set-option -g prefix C-w
unbind-key C-w
bind-key C-w send-prefix
set -g base-index 1

Данный фрагмент меняет префикс для команд tmux на C-w (Control + w), снимает привязку к этой клавише по умолчанию, чтобы назначить её для отправки префикса, и изменяет базовый индекс панелей на 1, начинав его счет с 1, а не с 0.

bind-key v split-window -h
bind-key s split-window -v
bind-key h select-pane -L
bind-key j select-pane -D
bind-key k select-pane -U
bind-key l select-pane -R

Эти команды переназначают стандартные горячие клавиши tmux на более привычные пользователям Vim. Кнопкам v, s, h, j, k, l соответственно назначаются команды для горизонтального и вертикального разделения окна и перемещения по панелям.

Применение и рекомендации

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

  1. Настройка под собственный рабочий процесс: Изучая примеры других пользователей, у вас есть возможность заимствовать или создавать свои собственные кастомизации. Это помогает сделать интерфейс более интуитивно понятным и эффективным.

  2. Управление совместимостью версий: Если вам необходимо использовать плагины или настройки, требующие определенной версии tmux, стоит обратить внимание на изменения синтаксиса через файлы CHANGES в репозиториях. Например, наличие фигурных скобок в новых версиях.

  3. Отладка ошибок конфигурации: Если вы сталкиваетесь с ошибками в вашей конфигурации, стоит сперва убедиться в корректном использовании синтаксиса команд и их совместимости с вашей версией tmux, как в примере с tmux-mighty-scroll.

В конечном итоге, адекватная настройка .tmux.conf требует понимания как теоретической основы (команды и их функции), так и практического опыта (применение и адаптация под конкретные нужды и версии). Правильное использование конфигурационного файла поможет сделать вашу работу в терминале более продуктивной и приятной.

Оцените материал
Добавить комментарий

Капча загружается...