Создать собственную команду в tmux


3

Я знаю, как связать ключ с командой в tmux, но я хочу создать собственную команду (которую вы можете набирать с помощью префикса key + двоеточие). В этой пользовательской команде я хочу выполнить пару других команд.

Моя идея состоит в том, чтобы иметь что-то вроде этого:

no-side-status() {
    set status-left-length 0
    set status-right-length 0
}

side-status() {
    set status-left-length 50
    set status-right-length 150
}

Так что я могу напечатать :no-side-status чтобы скрыть левую и правую строки состояния, и введите :side-status восстановить левую и правую строки состояния.

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


Вы можете иметь свои собственные функции bash, если хотите. Не уверен, о каких статусных барах ты говоришь.
MinusFour

@MinusFour Строки состояния tmux ..
gitaarik

Попробуйте добавить ключевое слово function к вашим функциям и добавить их внизу вашего ~ / .bashrc. Затем выполните их как no-side-status () из вашего сеанса tmux.
MinusFour

@MinusFour Я понимаю, что могу сделать функцию bash и поговорить с tmux через tmux команда, но я хотел бы сделать функцию tmux, которую я могу выполнить, набрав prefix-key + : а затем имя команды. Потому что, если я нахожусь в сеансе VIM или что-то еще, я не хочу возвращаться в bash для выполнения этой команды.
gitaarik

Когда вы находитесь в Vim, вы можете выполнить ту же команду с помощью!. Например:! No-side-status (). Если вы ищете ту же команду от Vim и Bash, то я не уверен, возможно ли это.
MinusFour

Ответы:


1

Первоначально, tmux не имеет никакой поддержки пользовательских команд, кроме запуска сценариев внешней оболочки.

Есть мод, добавляющий полноценную поддержку сценариев в tmux: http://ershov.github.io/tmux/

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

proc no-side-status {} {
    set status-left-length 0
    set status-right-length 0
}

proc side-status {} {
    set status-left-length 50
    set status-right-length 150
}

Чтобы использовать из командной строки tmux просто введите C-b : а также side-status или же no-side-status,

Чтобы связать это с использованием ключа bind C-p tcl side-status,


0

bind C-p run "/usr/bin/notify-send Foo"


Как это отвечает на мой вопрос?
gitaarik

Частичный ответ, что вы можете привязать ярлык к функции внешней оболочки. (что вы можете набрать с префиксом ключ + двоеточие)
guneysus

Я не пытаюсь привязать функцию внешней оболочки к ярлыку.
gitaarik

0

Это полный ответ. Вы можете иметь две конфигурации Tmux. Один содержит

set status-left-length 0
set status-right-length 0
bind-key R source-file ~/.tmux.alternative.conf \; \
                    display-message "Alternative configuration loaded"

Другие содержат

set status-left-length 50
set status-right-length 15
bind-key R source-file ~/.tmux.conf \; \
                    display-message "Default configuration loaded"

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

Удачи. Кажется, трудно без взлома ядра tmux. Вы должны рассмотреть приведенные выше ответы, привязав ключ к скриптам / функциям оболочки.
guneysus
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.