[Дополнено через полгода использования] Давно была потребность в нескольких буферах обмена между открытыми консольными сессиями. Труднонабираемые пароли, которые нужно повторить в нескольких консолях в разных последовательностях, длинные пути и тп. Использую GNU Screen. Без лишних предисловий, решение, из которого всё понятно:
#cat ~/.screenrc
hardstatus on hardstatus alwayslastline hardstatus string "%w%=%m/%d %c" bind -c pastdemo1 0 paste 0 bind -c pastdemo1 1 paste 1 bind -c pastdemo1 2 paste 2 bind -c pastdemo1 3 paste 3 bind -c pastdemo1 4 paste 4 bind -c pastdemo1 5 paste 5 bindkey "^V" command -c pastdemo1 bind -c copydemo1 0 readreg 0 bind -c copydemo1 1 readreg 1 bind -c copydemo1 2 readreg 2 bind -c copydemo1 3 readreg 3 bind -c copydemo1 4 readreg 4 bind -c copydemo1 5 readreg 5 bindkey "^C" command -c copydemo1
В результате по нажатию
ctrl v 1
в активную сессию пишется первый буфер, по ctrl v 2 второй. Таким образом настроены регистры обмена 0, 1, 2, 3, 4, 5. Получилось некое подобие именованных буферов ViM. что ещё надо для счастья? Риторический вопрос. Конечно же копирование в регистры обмена надо организовать попроще. В этом конфиге копируется стандартный буфер скрина, т.е. чтобы заполнить буфер №2 надо заполнить обычный буфер, то есть выполнить
ctrl A ctrl [
далее выбрать на терминале текст, что необходимо скопировать. Потом только копировать текст из обычного буфера в регистр №2 нажатием клавиш
ctrl c 2
Было бы удобнее, если бы по ctrl c 2 открывался режим копирования, как в стандартный буфер. Ещё хорошо бы если этот биндинг задавался проще - через что-то вроде bind -c copydemo1 * readreg *. Но и это решение достаточно просто.
Ещё так подумал, для true vim way надо использовать не с/v клавиши, а y/p.
Дополнение: на самом деле ctrl-P тоже занята у вимеров. Поэтому самое удобное сочетание это ctrl-y, ctrl-o. Самый лучший конфиг:
hardstatus on
hardstatus alwayslastline
hardstatus string "%w%=%m/%d %c"
bind -c pastdemo1 0 paste 0
bind -c pastdemo1 1 paste 1
bind -c pastdemo1 2 paste 2
bind -c pastdemo1 3 paste 3
bind -c pastdemo1 4 paste 4
bind -c pastdemo1 5 paste 5
bind -c pastdemo1 6 paste 6
bind -c pastdemo1 7 paste 7
bind -c pastdemo1 8 paste 8
bind -c pastdemo1 9 paste 9
bindkey "^O" command -c pastdemo1
bind -c copydemo1 0 readreg 0
bind -c copydemo1 1 readreg 1
bind -c copydemo1 2 readreg 2
bind -c copydemo1 3 readreg 3
bind -c copydemo1 4 readreg 4
bind -c copydemo1 5 readreg 5
bind -c copydemo1 6 readreg 6
bind -c copydemo1 7 readreg 7
bind -c copydemo1 8 readreg 8
bind -c copydemo1 9 readreg 9
bindkey "^Y" command -c copydemo1
ctrl v 1
в активную сессию пишется первый буфер, по ctrl v 2 второй. Таким образом настроены регистры обмена 0, 1, 2, 3, 4, 5. Получилось некое подобие именованных буферов ViM. что ещё надо для счастья? Риторический вопрос. Конечно же копирование в регистры обмена надо организовать попроще. В этом конфиге копируется стандартный буфер скрина, т.е. чтобы заполнить буфер №2 надо заполнить обычный буфер, то есть выполнить
ctrl A ctrl [
далее выбрать на терминале текст, что необходимо скопировать. Потом только копировать текст из обычного буфера в регистр №2 нажатием клавиш
ctrl c 2
Было бы удобнее, если бы по ctrl c 2 открывался режим копирования, как в стандартный буфер. Ещё хорошо бы если этот биндинг задавался проще - через что-то вроде bind -c copydemo1 * readreg *. Но и это решение достаточно просто.
Ещё так подумал, для true vim way надо использовать не с/v клавиши, а y/p.
Дополнение: на самом деле ctrl-P тоже занята у вимеров. Поэтому самое удобное сочетание это ctrl-y, ctrl-o. Самый лучший конфиг:
hardstatus on
hardstatus alwayslastline
hardstatus string "%w%=%m/%d %c"
bind -c pastdemo1 0 paste 0
bind -c pastdemo1 1 paste 1
bind -c pastdemo1 2 paste 2
bind -c pastdemo1 3 paste 3
bind -c pastdemo1 4 paste 4
bind -c pastdemo1 5 paste 5
bind -c pastdemo1 6 paste 6
bind -c pastdemo1 7 paste 7
bind -c pastdemo1 8 paste 8
bind -c pastdemo1 9 paste 9
bindkey "^O" command -c pastdemo1
bind -c copydemo1 0 readreg 0
bind -c copydemo1 1 readreg 1
bind -c copydemo1 2 readreg 2
bind -c copydemo1 3 readreg 3
bind -c copydemo1 4 readreg 4
bind -c copydemo1 5 readreg 5
bind -c copydemo1 6 readreg 6
bind -c copydemo1 7 readreg 7
bind -c copydemo1 8 readreg 8
bind -c copydemo1 9 readreg 9
bindkey "^Y" command -c copydemo1
Комментариев нет:
Отправить комментарий