Необходимо будет выйти из всех символов, которые специальны в 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'
Вертикально
select-layout even-vertical
Обычно присваиваемый: Ctrl+b, Alt+2
Горизонтально
select-layout even-horizontal
Обычно присваиваемый: Ctrl+b, Alt+1
Можно использовать пространство ctrl-b для циклического повторения посредством разметок с ровным интервалом, но это не обязательно сохранит расположение, которое Вы имели.
bind-key -r Space next-layout
. Затем C-b
Space
Space
Space
...
– BenC
24.11.2014, 16:01
Я не знаю единственного ключевого ярлыка, но возможно это помогает Вам:
Можно попытаться записать некоторый сценарий, чтобы сделать расположение и связать ключ к сценарию. Можно сделать это при помощи tmux
команда pipe-pane [-o] [-t target-pane] [shell-command]
записать текущий макет в сценарий. Затем необходимо считать расположение, подготовленное использованием сценария tmux
команда select-layout
.
В командной строке вы можете использовать
tmux select-layout tiled
, чтобы сделать все разбиения примерно одинакового размера. Вы также можете привязать это к ключевой команде.
Мне было трудно найти магическое заклинание, которое можно разделить на 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
ctrl b
, а затем :resize-pane -M
, а затем просто используйте мышь! (требует, чтобы mouse-mode
был включен)
tmux предоставляет некоторые предварительно определенные макеты, сделайте tmux select-layout
и у вас будет несколько вариантов:
even-horizontal even-vertical main-horizontal main-vertical tiled
C-b M-2
Управление-b средствами, иM-2
средства alt+2. – Christophe De Troyer 21.06.2014, 23:49C-...
иM-...
emacs-ims, M-означает "meta", который является [Высокий звук] в сочетании с или [Esc], сопровождаемый ключом, на который ссылаются, обе опции выглядят одинаково по проводу, но существует возможность, что Ваш GUI может захватывать [Высокий звук] последовательность – Jasen 17.07.2015, 06:56