Сначала я сказал себе: Я просто go и посмотрю исходный код Tmux. Я узнаю, как он обрабатывает копирование / вставку и копирует поведение для некоторого числа предопределенных регистров, скажем, 26 для каждой буквы латинского алфавита . Поэтому я сделал это и, к моему удивлению, обнаружил, что функциональность уже есть, хотя и не очень хорошо разрекламирована.
Концепция называется buffers
там и предоставляет простой интерфейс set-buffer
, delete-buffer
и paste-buffer
. Поэтому я решил создать привязки в моем .tmux.conf
- один для замены выбранного пользователем буфера выбранным текстом (сначала выполните delete-buffer
, а затем set-buffer
), а другой для вставки из выбранного пользователем буфера , Это почти сработало, за исключением того, что по какой-то причине delete-buffer
не изящно обрабатывал несуществующие буферы. Моя идея заключалась в том, чтобы инициализировать 26 буферов под соответствующими буквами и все было сделано. Сегодня я попробовал свой подход без инициализированных буферов, и он все еще работал. Возможно, новые версии Tmux справятся с этим лучше. В любом случае, ниже я вставляю соответствующий фрагмент конфигурации:
# Initialize alphabetic registers to avoid the problem with 'delete-buffer'
# This might *not* be necessary in newer versions of Tmux
run "tmux set-buffer -b a \"$(echo ' ')\""
run "tmux set-buffer -b b \"$(echo ' ')\""
run "tmux set-buffer -b c \"$(echo ' ')\""
run "tmux set-buffer -b d \"$(echo ' ')\""
run "tmux set-buffer -b e \"$(echo ' ')\""
run "tmux set-buffer -b f \"$(echo ' ')\""
run "tmux set-buffer -b g \"$(echo ' ')\""
run "tmux set-buffer -b h \"$(echo ' ')\""
run "tmux set-buffer -b i \"$(echo ' ')\""
run "tmux set-buffer -b j \"$(echo ' ')\""
run "tmux set-buffer -b k \"$(echo ' ')\""
run "tmux set-buffer -b l \"$(echo ' ')\""
run "tmux set-buffer -b m \"$(echo ' ')\""
run "tmux set-buffer -b n \"$(echo ' ')\""
run "tmux set-buffer -b o \"$(echo ' ')\""
run "tmux set-buffer -b p \"$(echo ' ')\""
run "tmux set-buffer -b q \"$(echo ' ')\""
run "tmux set-buffer -b r \"$(echo ' ')\""
run "tmux set-buffer -b s \"$(echo ' ')\""
run "tmux set-buffer -b t \"$(echo ' ')\""
run "tmux set-buffer -b u \"$(echo ' ')\""
run "tmux set-buffer -b v \"$(echo ' ')\""
run "tmux set-buffer -b w \"$(echo ' ')\""
run "tmux set-buffer -b x \"$(echo ' ')\""
run "tmux set-buffer -b y \"$(echo ' ')\""
run "tmux set-buffer -b z \"$(echo ' ')\""
# Copy to user-selected register
bind -T copy-mode r command-prompt -1 -p '(register)' 'delete-buffer -b %1 ; send -X copy-pipe "tmux set-buffer -n %1"'
# Paste from user-selected register
bind -T prefix C-] command-prompt -1 -p '(register)' 'paste-buffer -b %1'
Способ использования этой настройки заключается в следующем:
- , чтобы поместить текст в регистр, в котором вы отметили его
copy-mode
, нажмите r и ответьте на запрос имени регистра - , чтобы вставить команду C -b C -] и ответить на запрос - буфер содержимое будет вставлено в точку