Я могу сделать область tmux “липкой”?

Ну, его довольно "легкое" с именованными каналами (mkfifo). Я поместил легкий в кавычки, потому что, если программы не разработаны для этого, мертвая блокировка вероятна.

mkfifo fifo0 fifo1
( prog1 > fifo0 < fifo1 ) &
( prog2 > fifo1 < fifo0 ) &
( exec 30<fifo0 31<fifo1 )      # write can't open until there is a reader
                                # and vice versa if we did it the other way

Теперь, там обычно буферизует включенный в письменной форме stdout. Так, например, если обе программы были:

#!/usr/bin/perl
use 5.010;
say 1;
print while (<>);

Вы ожидали бы бесконечный цикл. Но вместо этого, оба зашли бы в тупик; необходимо было бы добавить $| = 1 (или эквивалентный) для выключения выходной буферизации. Мертвая блокировка вызывается, потому что обе программы ожидают чего-то на stdin, но они не видят его, потому что его нахождение в stdout буфере другой программы, и еще не было записано в канал.

Обновление: слияние предложений от Stéphane Charzelas и Joost:

mkfifo fifo0 fifo1
prog1 > fifo0 < fifo1 &
prog2 < fifo0 > fifo1

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

9
29.11.2013, 11:00
2 ответа

Это подходит в списке рассылки каждый однажды в a в то время как.

Нет, не возможно иметь область больше чем в одном окне.

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

5
27.01.2020, 20:07

Как Chris говорит, нет никакой встроенной функциональности для разрешения маркировки области как липкой, и этот вид имеет смысл, потому что нисколько не сразу очевидно, как обработать реструктуризацию всех областей на всех других окнах, когда Вы переключаете "неподвижность" некоторой конкретной области на текущем окне. Это обычно был бы плохой пользовательский опыт смешать с расположением способом, которое даже не видимо пользователю.

Можно найти полезным связывание как это:

bind -n M-k move-pane -t ':+'
bind -n M-j move-pane -t ':-'

Это было бы дружественным для пользователя Vim, привыкшего к J и K для перемещения левого и правого. С этим связывают, tmux будет вступать и глотать Alt+K и Alt+J для перемещения активной области в правые и левые окна, соответственно.

Это будет дергать текущее окно, в котором Вы находитесь и наполняете его в смежное tmux окно. Можно даже, вероятно, указать который индекс вставить область в расположение целевого окна. См. страницу справочника для других опций, которым можно дать move-pane.

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

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

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

Одна последняя опция развлечь состоит в том, чтобы использовать вложенный tmux: Поместите свою липкую область в родителя tmux и имейте другую область, содержат tmux, который размещает остальную часть Ваших терминалов. Таким образом, можно передвинуть в дочернем tmux свободно. Проблема с этим состоит в том, что необходимо будет придумать что-то осуществимое, потому что по умолчанию необходимо будет нажать клавишу префикса дважды, чтобы сделать те же задачи. Очень раздражающий также. Я имею, связывает, это разумно "туннелирует" через любого, вложил tmuxes, но логика этих неэффективных схем передачи сообщений быстро становится трудной справиться. И ограничение с этим - то, что "липкая область" здесь должна охватить общую высоту или ширину, это не может быть угол.

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

3
27.01.2020, 20:07
  • 1
    Если это имеет значение я думаю, а не липкий позволяемый, потому что действительно трудно определить, что сделать с другими окнами, должна быть область клона, которую те, которые действительно хотят липкость, могли использовать для достижения того же результата. И откровенно это - область клона, которую я искал, которые приводят меня сюда, также. Это было бы хорошей функцией. –  Tommi Kyntola 12.11.2014, 21:05

Теги

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