tmux: отправлять и выполнять выделенный код на другой панели.

Файлы в /etc/rc.d/init.d предоставляются дистрибутивом. Хотя иногда они могут редактироваться локально, это довольно редко. Список и версию файлов можно легко восстановить на основе других подсказок, а содержимое файлов можно получить у поставщика операционной системы. Открытое чтение этого каталога не является проблемой безопасности.

Если ваш аудитор не находит такого рода проблем, уволите его и найдите лучшую.

4
22.02.2019, 19:32
3 ответа

Я верю, что вы можете достичь того, чего хотите,:

1 )вход в режим копирования (префикс [)

2 )выделение некоторого текста(скорее всего v (isual select )/y ​​(ank))

3 )отправка на другую панель черезtmux paste-buffer -t [left/right]

Вот доказательство концепции, которую я только что набросал:

Учитывая скрипт Ruby с именем foo.rb в вашем текущем каталоге:

# foo.rb
x = "hello there"
puts x

... и две панели, разделенные по вертикали (bash в сеансе слева/irb справа ), если вы запустите cat foo.rb, войдите в режим копирования -, извлеките содержимое файла, а затем запустите tmux paste-buffer -t rightна левой панели, вы должны увидеть следующий вывод на правой панели:

λ irb
2.5.1 :001 > x = "hello there"
 => "hello there"
2.5.1 :002 > puts x
hello there
 => nil

Оттуда вы можете написать сценарий оболочки и/или подключить привязку клавиш, чтобы вам не приходилось вводить/вызывать tmux paste-buffer -t [left/right].

paste-bufferдолжен также обрабатывать «окончание на ввод» для вас. Из записи paste-bufferсправочной страницы tmux:

When output, any linefeed (LF) characters in the paste buffer are replaced with a separator, by default carriage return (CR).

Если разделитель по умолчанию не работает по какой-либо причине, вы также можете указать его, используя paste-buffer -s....

1
27.01.2020, 21:01

Для тех, кто погуглит об этом позже, вот окончательные, полностью -измененные строки из моего.tmux.conf (, вдохновленные ответом pdoherty926 на мой вопрос здесь ).

С этой комбинацией привязок клавиш у меня есть два нажатия клавиш :F5, чтобы начать копирование с того места, где -когда-либо был мой курсор в момент, когда я нажимаю F5, и F6, чтобы закончить копирование и выполнить код в другая панель:

# These are lines that anybody using vim-like copy/paste will have
set-window-option -g mode-keys vi
bind P paste-buffer
bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' copy-selection
# These are the lines that make F5/F6 do their thing
bind-key -n F5 copy-mode \; send-keys v
bind-key -n F6 send-keys y \; paste-buffer -t %1 \; send-keys -t %1 C-m

Причина, по которой я сделал это таким образом, заключается в том, что вы не можете напрямую связать команды начала -выбора и копирования -выбора -, например, «связать -клавишу -n F5 копировать -режим \ ; начать -выделение» не будет работать, но если я свяжу «v», чтобы начать -выделение в режиме копирования (, стандартный vim -, например, привязку ), а затем F5 выполнит «отправить -клавиши v" после входа в режим копирования, это работает.

Если вы используете сеанс ssh, настроенный для обработки ретрансляции кликов мыши, вы также можете добавить следующее:

setw -g mode-mouse on
set -g mouse-select-window on

С этими строками (в дополнение к приведенным выше ), теперь все, что вам нужно сделать, это выделить код с помощью мыши и нажать F6, чтобы запустить его. (Если вам когда-нибудь понадобится обойти захват мыши -кликом -, пока эти строки находятся в вашем.tmux.conf, просто удерживайте нажатой клавишу Shift во время щелчка.)

0
27.01.2020, 21:01

(опоздал на вечеринку, но все же )Вот плагин vim, который делает именно то, что вы хотите:jpalardy/vim-slime

1
16.08.2020, 18:53

Теги

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