Как насчет того, чтобы включить строку /etc/hosts
переопределение соответствующих адресов? например,
130.89.149.226 ftp.debian.org
195.20.242.89 security.debian.org
Здесь для документов нужны новые строки. Например, в сценарии оболочки, можно записать
cat <<EOF >somefile; echo done
file contents
EOF
Я не думаю, что tmux позволяет Вам поместить новые строки там, и даже если бы он сделал, то это не было бы хорошим подходом. Что, если сами данные содержат HERE
один на строке (например, потому что Вы копируете Ваш .tmux.conf
)?
Я предлагаю записать содержимое буфера во временный файл. Непротестированный:
bind-key p save-buffer ~/.tmux-buffer \; run-shell "xsel -i -b <~/.tmux-buffer && rm ~/.tmux-buffer"
Существует состояние состязания при использовании этой команды в двух отдельных tmux экземплярах. Я не знаю, как решить это.
Решение для Mac OS X. Выполните эти 2 шага:
Используйте обходное решение Chris Johnsen: https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard
Добавьте этот код к своей конфигурации tmux (~/.tmux.conf)
# paste clipboard into tmux buffer
bind v run-shell "reattach-to-user-namespace -l zsh -c 'tmux set-buffer \\"$(pbpaste)\\"; tmux paste-buffer'"
# put tmux buffer into x clipboard
bind y run-shell "reattach-to-user-namespace -l zsh -c 'tmux show-buffer | pbcopy'"
Существует решение на Дуге использование Wiki xclip
:
# move tmux copy buffer into x clipboard
bind-key C-y save-buffer /tmp/tmux-buffer \; run-shell "cat /tmp/tmux-buffer | xclip"
save-buffer
зарегистрировать надежно в общем каталоге? Иначе вставление его /tmp
дыра в системе безопасности. Существует бесполезное использование cat
, и удаление временного файла отсутствует. Затем это - вопрос xsel
по сравнению с xclip
, которые эквивалентны здесь, и у Вас есть мой (indenpendently записанный) решение.
– Gilles 'SO- stop being evil'
28.06.2011, 00:09
Это должно работать:
# move x clipboard into tmux paste buffer
bind C-p run "tmux set-buffer \"$(xclip -o)\"; tmux paste-buffer"
# move tmux copy buffer into x clipboard
bind C-y run "tmux save-buffer - | xclip -i"
TMUX
переменные среды.
– Gilles 'SO- stop being evil'
10.07.2011, 19:05
C-p
был бы: bind C-p run "xclip -o | tmux load-buffer - ; tmux paste-buffer"
- никакие проблемы заключения в кавычки или командная строка не ограничивают проблемы.
– docwhat
23.02.2012, 05:37
copy-mode
?
– Ehtesh Choudhury
05.02.2013, 20:56
xclip -o
опция не сделала работавший для меня так, я изменился на bind C-c run "tmux save-buffer - | xclip -selection c"\; display-message "Buffer copied to clipboard"
– Pawka
23.08.2013, 15:46
Это создает прочь из ответа Alex и использует материал, который не существовал в то время.
Если Вы используете домашнее пиво (и если Вы не, почему Вы не?) затем можно просто сделать это:
brew install reattach-to-user-namespace
Затем в Вашем ~/.tmux.conf
:
set-option -g default-command "reattach-to-user-namespace -l zsh" # or bash...
bind C-c run "tmux save-buffer - | reattach-to-user-namespace pbcopy"
bind C-v run "reattach-to-user-namespace pbpaste | tmux load-buffer - && tmux paste-buffer"
Для копирования буфера с tmux (необходимо было уже скопировать что-то с помощью tmux) в область монтажа Mac использовать <tmux-key> Control-c
. Это теперь будет доступно для Command-v
или pbpaste
Для вставки чего-то от области монтажа Mac использовать <tmux-key> Control-v
.
tmux show-buffer
какая вызванная строка переносят проблемы tmux save-buffer -
решенный это.
– event_jr
18.03.2012, 07:00
save-buffer
к stdout. Можно заменить -
с именем файла и это сохранит его там. Это препятствует тому, чтобы Вы писали (и имели для чистки) файл.
– docwhat
15.04.2012, 07:54
После попытки другого решения вот моя заключительная установка:
# move x clipboard into tmux paste buffer
bind C-p run "xclip -o | tmux load-buffer -
# move tmux copy buffer into x clipboard
bind C-y run "tmux save-buffer - | xclip -i -selection clipboard"
использование сохранять-буфера вместо выставочного буфера дает реальные данные без данных как показано с разрывами строки, когда Вы находитесь в разделениях.
Я также использую это для начала выбора/копии в tmux режиме копии:
bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' copy-selection
Я предполагаю, что могло быть возможно объединить выбор копии с 'y' ключом И переместить его в x буфер обмена.
Мне не нравится иметь дополнительные нажатия клавиш, таким образом, я хотел что-то более амбициозное. Перейдите к режиму копии с [выделите правильный текст и затем нажмите] для копирования текста в буфер обмена.
Кроме того, tmux нравится включать новые строки в выражения, которые переносятся (и странно те новые строки находятся в неправильном месте! Они не то, где выражение, перенесенное на экране). Таким образом, я хотел, чтобы C-] скопировал выражение, удаляющее новые строки.
На tmux 1.6 я попробовал это:
bind [ copy-mode
bind -t vi-copy ] run "tmux send-keys Enter; tmux show-buffer | xclip -i -selection clipboard;"
bind -t vi-copy C-] run "tmux send-keys Enter; tmux show-buffer | perl -pe 's/\n//' | xclip -i -selection clipboard;"
но это не работало, потому что tmux не кажется счастливым связать сложные вещи с таблицей vi-копии. Таким образом, я закончил тем, что делал это вместо этого:
bind [ copy-mode \; \
bind -n ] run \
"tmux send-keys Enter; \
tmux show-buffer | xclip -i -selection clipboard; \
tmux unbind -n C-]; \
tmux unbind -n ]" \; \
bind -n C-] run \
"tmux send-keys Enter; \
tmux show-buffer | perl -pe 's/\n//' | xclip -i -selection clipboard; \
tmux unbind -n C-]; \
tmux unbind -n ]"
Это приводит к странным вещам (], или C-] будет действовать забавный в следующий раз, когда Вы используете их, но только однажды), если Вы выходите от режима копии в другом отношении, кроме того] или C-]. Это могло быть зафиксировано еще с некоторой привязкой, которую я воображаю, но это делает то, что я хочу большую часть времени.
Я пытаюсь выяснить достойный способ скопировать то, что я имею в буфере tmux в мой буфер обмена. Я попробовал несколько разных вещей как
Для привязки стиля emacs существует несколько различных вариантов. (Vi-стиль должен быть подобным?) Типичная привязка для того, чтобы сделать "выбор копии" в emacs является M-w, таким образом, было бы очень удобно иметь ту же привязку в tmux.
1 - Было бы идеальным, но является нерабочим (из-за tmux ограничения?)
unbind-key -t emacs-copy M-w
bind-key -t emacs-copy M-w copy-selection\; \
run-shell "tmux save-buffer - | xsel --input --clipboard"
2 - Компромисс, который работает хорошо на меня: Примите использование другой привязки клавиш для emacs-копии в tmux. Используйте, например, C-M-w. (Эта привязка, которая будет определена "глобально" - не только в режиме копии - но и только полезная в режиме копии),
bind-key -n C-M-w send-keys M-w\; \
run-shell "tmux save-buffer - | xsel --input --clipboard"
Немного измененный вариант принятого ответа, который я приготовил.
Я также предпочитаю использовать системный буфер обмена (Ctrl-C, Ctrl-V) в дополнение к xclip's primary
буфер обмена по умолчанию (тот, который Вы получаете с выбором мыши и мышью, щелкает средней кнопкой). Для выбора системного буфера обмена необходимо передать -selection clipboard
аргумент xclip
.
Также при копировании буфера в буфер обмена, мне нравится способность выбрать, какой буфер я хочу скопировать. Это сделано с помощью choose-buffer
и затем передавая буфер аргумент save-buffer
использование -b %%
.
# Copy into clipboard
bind C-c choose-buffer "run \"tmux save-buffer -b %% - | xclip -i -selection clipboard\""
# Paste from clipboard
bind C-v run "xclip -o -selection clipboard | tmux load-buffer - ; tmux paste-buffer"
# Copy into primary
bind C-y choose-buffer "run \"tmux save-buffer -b %% - | xclip -i \""
# Paste from primary
bind C-p run "xclip -o | tmux load-buffer - ; tmux paste-buffer"
ОБНОВЛЕНИЕ: Так или иначе с tmux 1.8 и двумя из моих установок openSUSE 12.2, я вижу подвешивание когда tmux run-shell
вызывается с xclip
чтение из stdin по каналу. Я вместо этого решил дать xsel
попытка и это, кажется, работают. Это эквивалентное использование привязок клавиш xsel
. Я также использовал &&
объединять команды в цепочку во вставке для большей устойчивости.
# Copy into clipboard
bind C-c choose-buffer "run \"tmux save-buffer -b '%%' - | xsel -i -b\""
# Paste from clipboard
bind C-v run "xsel -o -b | tmux load-buffer - && tmux paste-buffer"
# Copy into primary
bind C-y choose-buffer "run \"tmux save-buffer -b '%%' - | xsel -i\""
# Paste from primary
bind C-p run "xsel -o | tmux load-buffer - && tmux paste-buffer"
copy-pipe
команда была добавлена с версии 1.8. Это копирует выбор в буфер tmux и передает его по каналу к команде. Теперь нет никакой потребности в привязке префикса. Вот пример:
bind -t vi-copy y copy-pipe "xclip"
# For OS X users:
bind -t vi-copy y copy-pipe "reattach-to-user-namespace pbcopy"
Теперь, когда у Вас есть некоторый текст, выбранный в copy-mode
, y скопирует тот текст в буфер tmux, а также буфер обмена ОС. Однако не помогает, хотите ли Вы получить текст с буфера обмена на буфер tmux.
bind-key -T copy-mode-vi y send-keys -X copy-pipe "xclip"
и для OS X: bind-key -T copy-mode-vi y send-keys -X copy-pipe "reattach-to-user-namespace pbcopy"
– Jason Axelson
09.12.2017, 21:01
Многие из этих ответов не сработали для моего Убунту 14.04 на zsh as-is. Не уверен, имеет ли моя оболочка какое-либо отношение к этому, но вот моя рабочая версия использования этой стратегии для копирования, и этой стратегии для вставки.
bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' copy-pipe "xclip -sel clip -i"
bind-key ] run-shell "xclip -sel clip -o | tmux load-buffer - ; tmux paste-buffer"
Некоторые заметки:
-sel клипа -i
. Эта строка объединяет буфер yank в tmux и отправляет его в xclip. -sel клипом -o
Это прекрасно работает теперь для моей установки vim/zsh/tmux.
Вы можете попробовать плагин tmux-yank . Это позволяет копировать прямо в системный буфер обмена (OS X и Linux) и некоторые другие полезности, такие как восстановление текущей строки оболочки.
И улучшенная версия ответа @Leif может быть:
tmux bind-key '[' run "tmux copy-mode;
tmux bind-key -n ']' run \"tmux send-keys Enter; tmux save-buffer - | xclip -i -selection clipboard;
tmux unbind-key -n ']'\";
tmux bind-key -n q run \"tmux unbind -n ']'; tmux send-keys q\";
tmux bind-key -n C-c run \"tmux unbind -n ']'; tmux send-keys C-c\""
Таким образом, нет никаких последствий, если вы выйдете из режима копирования другим способом кроме ], приведенный выше код обернут в tundle/tmux-yank плагин tmux для копирования текста tmux в системный буфер обмена, он нацелен на tmux >= 1.6 в операционных системах X и Linux.
В OS-X с tmux версии 2.2 или новее будет работать следующее:
bind-key -t emacs-copy MouseDragEnd1Pane copy-pipe "pbcopy"
bind-key -t vi-copy MouseDragEnd1Pane copy-pipe "pbcopy"
Это мой довольно длинный ответ, который должен исправить две основные проблемы, связанные с использованием xclip для копирования буфера из удаленного (ssh) сеанса tmux:
Для меня ответ @ Grauwolf с xclip
не работал (делает панель tmux полностью невосприимчивой).
Я выяснил, почему в Страница Tmux вики Arch :
xclip также может использоваться для этой цели, в отличие от xsel, он лучше работает при печати необработанного битового потока, не подходящего для текущей локали. Тем не менее, лучше использовать xsel вместо xclip, потому что xclip не закрывает STDOUT после чтения из буфера tmux. Таким образом, tmux не знает, что задача копирования завершена, и продолжает ждать завершения работы xclip, что приводит к тому, что tmux не отвечает. Обходной путь - перенаправить STDOUT xclip на / dev / null
Таким образом, привязка должна быть:
bind-key C-y run "tmux save-buffer - | xclip -i -sel clip > /dev/null"
Теперь это будет работать, если ваш сеанс tmux является локальным.
Если вы используете tmux вместо ssh -X , есть большая вероятность, что этот не будет работать напрямую.
Это потому, что переменная оболочки $ DISPLAY
должна быть установлена правильно.
Итак, для меня полное рабочее решение - это поместить следующие строки в мой ~ / .tmux.conf
:
set-option -g update-environment "DISPLAY"
bind-key C-y run "export DISPLAY=`tmux show-env | sed -n 's/^DISPLAY=//p'`; tmux save-buffer - | xclip -i -selection clipboard >/dev/null"
# Or more concise:
bind-key C-y run "tmux save-buffer - | xclip -i -selection clipboard -d `tmux show-env | sed -n 's/^DISPLAY=//p'` >/dev/null
Для вставки из основного:
bind-key C-p run "xclip -d `tmux show-env | sed -n s/^DISPLAY=//p` -o | tmux load-buffer - && tmux paste-buffer"
Я не совсем понимаю, почему $ DISPLAY
неправильно установлен при поиске .tmux.conf
, поэтому вот почему я должен извлечь его с помощью tmux show-env
и sed
.
Если у вас tmux> = 1.8, вы можете адаптировать эту команду с помощью copy-pipe
:
bind-key -t vi-copy y copy-pipe 'xclip -in -selection clipboard -d `tmux show-env | sed -n s/^DISPLAY=//p` >/dev/null'
Я используюcopyq
менеджер многострочного буфера обмена. (Работает с Windows, OSX, Linux.)
Добавьте следующие строки в~/.tmux.conf
:
set-window-option -g mode-keys vi
bind C-y run 'out=`tmux save-buffer - ` && copyq add "$out"'
cygwin
требует copyq.exe
местоположение в~/.bashrc
:
export PATH="$PATH:/cygdrive/c/Program Files (x86)/CopyQ"
mktemp
который является широко доступным – Grief 08.07.2016, 22:40$PPID
в оболочке, запущенной tmux). Но как Вы получаете переменное имя файла (однако, оно создается) в аргументsave-buffer
? Я предполагаюsave-buffer - | …
как в ответе Grauwolf, который покончил с временным файлом в целом? – Gilles 'SO- stop being evil' 08.07.2016, 22:44