Tmux - Горячая клавиша (или команда) для перехода к отмеченной панели.

Самое быстрое решение:

[ -n "$(tail -c1 file)" ] && printf '\n' >>file 

  1. Очень быстро.
    Для файла среднего размера seq 99999999 >fileэто занимает миллисекунды.
    Другие решения занимают много времени:

    [ -n "$(tail -c1 file)" ] && printf '\n' >>file  0.013 sec
    vi -ecwq file                                    2.544 sec
    paste file 1<> file                             31.943 sec
    ed -s file <<< w                             1m  4.422 sec
    sed -i -e '$a\' file                         3m 20.931 sec
    
  2. Работает в ash, bash, lksh, mksh, ksh93, attsh и zsh, но не в yash.

  3. Не изменяет временную метку файла, если нет необходимости добавлять новую строку.
    Все другие решения, представленные здесь, изменяют метку времени файла.
  4. Все приведенные выше решения действительны для POSIX.

Если вам нужно решение, переносимое на yash (и все другие оболочки, перечисленные выше ), это может немного усложниться:

f=file
if       [ "$(tail -c1 "$f"; echo x)" != "$(printf '\nx')" ]
then     printf '\n' >>"$f"
fi
1
17.04.2020, 12:09
1 ответ

Хороший вопрос. Вы имеете в виду помеченную панель или у вас есть собственное представление о «помеченной панели»?

В первом случае вы можете пометить панель с помощью C-b mи использовать цель {marked}, чтобы перейти к ней

bind Q switch-client -t'{marked}'

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

bind Q run "tmux set -g @mymarkedpane #{pane_id}"

Затем клавиша переключается на нее с привязкой клавиш, например:

bind W run "tmux switch-client -t#{@mymarkedpane}"

Если вам нужна помеченная панель для каждого сеанса, а не только для одного, удалите -gиз команды set.

3
19.03.2021, 02:28

Теги

Похожие вопросы