Как я одинаково балансирую tmux (1) разделенные области?

Необходимо будет выйти из всех символов, которые специальны в regexps, не просто обратных косых чертах, но также и [.*^$ и s разделитель (для sed). В Perl используйте quotemeta функция.

Дальнейшая проблема с Вашей попыткой - это, когда Вы работаете set -- $line, оболочка выполняет свое собственное расширение: это выполняет globbing в дополнение к разделению слова, поэтому если Ваша строка содержит a* b* и существуют названные файлы a1 и a2 в текущем каталоге затем Вы будете заменять a1 с a2. Необходимо выключить globbing с set -f в этом подходе.

Вот решение, которое искажает заменяющий список непосредственно в список sed аргументов. Это предполагает, что нет никакого пробела в исходных текстах и текстах замены, но что-либо кроме пространства и новой строки нужно рассматривать правильно. Первая замена добавляет a \ прежде чем символы, для которых нужны защита и вторая замена, поворачивают каждую строку из foo bar в -e s/foo/bar/g. Предупреждение, непротестированное.

set -f
sed_args=$(<replacement sed -e 's~[/.*[\\^$]~\\&~g' \
                            -e 's~^\([^ ]*\)  *\([^ ]*\).*~-e s/\1/\2/g~')
sed -i $sed_args target

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

perl -i -pe 'BEGIN {
   open R, "<replacement" or die;
   while (<R>) {
       chomp;
       ($from, $to, @ignored) = split / +/;
       $s{$from} = $to;
   }
   close R;
   $regexp = join("|", map {quotemeta} keys %s);
}
s/($regexp)/$s{$1}/ego'
230
28.02.2012, 22:53
7 ответов

Вертикально

select-layout even-vertical
Обычно присваиваемый: Ctrl+b, Alt+2

Горизонтально

select-layout even-horizontal
Обычно присваиваемый: Ctrl+b, Alt+1

302
27.01.2020, 19:28
  • 1
    Для других людей, которые задаются вопросом: C-b M-2 Управление-b средствами, и M-2 средства alt+2. –  Christophe De Troyer 21.06.2014, 23:49
  • 2
    m-2 означает ESC+2 для меня на Debian с помощью Терминала Gnome. Вероятно, зависит от установки. –  arcyqwerty 24.11.2014, 07:06
  • 3
    C-... и M-... emacs-ims, M-означает "meta", который является [Высокий звук] в сочетании с или [Esc], сопровождаемый ключом, на который ссылаются, обе опции выглядят одинаково по проводу, но существует возможность, что Ваш GUI может захватывать [Высокий звук] последовательность –  Jasen 17.07.2015, 06:56
  • 4
    Только для помещения этого здесь в случае, если это помогает кому-то еще, потому что я постоянно смущаюсь, "вертикальный" и "горизонтальный", направление интервала - то есть, выбирание ровно-вертикального создаст расположение, где три области сложены вертикально, равные по высоте, где ровно-горизонтальный создаст расположение, где три области бок о бок, равняются по ширине –  A. Wilson 22.03.2016, 18:20
  • 5
    Как сделать M-2 на macOS с клавиатурой, где "2" требует нажимающего сдвига (как французская клавиатура)? Я не успешно выполнялся, с различными комбинациями высокого звука, управления, команды, Escape и смещался + 2 … –  Eric O Lebigot 07.04.2018, 12:05

Можно использовать пространство ctrl-b для циклического повторения посредством разметок с ровным интервалом, но это не обязательно сохранит расположение, которое Вы имели.

100
27.01.2020, 19:28
  • 1
    Идея позади приема (если Вы хотите отобразить его на что-то еще или адаптировать его): bind-key -r Space next-layout. Затем C-b Space Space Space... –  BenC 24.11.2014, 16:01
  • 2
    Существует ли способ знать, какое расположение я выбрал, и как быстро перейти к нему снова? –  hughes 17.04.2015, 00:15

Я не знаю единственного ключевого ярлыка, но возможно это помогает Вам:

Можно попытаться записать некоторый сценарий, чтобы сделать расположение и связать ключ к сценарию. Можно сделать это при помощи tmuxкоманда pipe-pane [-o] [-t target-pane] [shell-command] записать текущий макет в сценарий. Затем необходимо считать расположение, подготовленное использованием сценария tmuxкоманда select-layout .

7
27.01.2020, 19:28

В командной строке вы можете использовать

tmux select-layout tiled

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

21
27.01.2020, 19:28

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

# Split session into FOUR EQUAL quadrants
tmux selectp -t 0    # select the first (0) pane
tmux splitw -h -p 50 # split it into two halves
tmux selectp -t 0    # select the first (0) pane
tmux splitw -v -p 50 # split it into two halves

tmux selectp -t 2    # select the new, second (2) pane
tmux splitw -v -p 50 # split it into two halves
tmux selectp -t 0    # go back to the first pane
2
27.01.2020, 19:28

ctrl b, а затем :resize-pane -M, а затем просто используйте мышь! (требует, чтобы mouse-modeбыл включен)

3
27.01.2020, 19:28

tmux предоставляет некоторые предварительно определенные макеты, сделайте tmux select-layoutи у вас будет несколько вариантов:

even-horizontal even-vertical main-horizontal main-vertical tiled

1
18.11.2021, 16:19

Теги

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