Với một số thủ thuật, có thể lấy bộ đệm tmux trở lại thông qua PuTTY và trên máy khách. Tôi thực hiện điều này bằng cách sử dụng mã thoát ANSI cho cổng "AUX" (máy in nối tiếp).
Dưới đây chỉ là một việc thực hiện các phương pháp mà chuyển nhượng:
1) Trong server-side tmux.conf
, thêm:
# Send the tmux copy buffer to a file. The file is read for ANSI printing by "t" alias in .bashrc
bind -t vi-copy y copy-pipe 'cat > ~/.tmux-buffer'
2) Trong server-side .bashrc
, thêm:
t() {
# Configure a PuTTY profile to send "t" as the "Remote command". This
# function will automatically reattach to an existing tmux session if one
# exists, or start a new one. This function also repeatedly sends our
# homemade tmux clipboard back to the PuTTY client in the form of an ANSI
# printer escape sequence. The contents of the homemade clipboard are
# populated by `bind -t vi-copy y copy-pipe 'cat > ~/.tmux-buffer'` in
# tmux.conf. It is expected that the PuTTY client will be configured to
# print to a "Microsoft XPS Document Writer" which saves the printer output
# to a file. The file is subsequently read by an AutoHotkey macro, and the
# contents are made available for paste.
[[ "$TERM" == "xterm" ]] || return 0 # This prevents recursive runs, in case t() is called after tmux is started.
{ while :; do tput mc5; cat ~/.tmux-buffer; tput mc4; sleep 5; done } &
tmux attach || tmux
}
3) Trên máy khách (Microsoft Windows), tạo máy in mới:
- Thêm một máy in
- Tạo một cổng mới> Local Cảng
- Nhập tên cổng> "
PuTTY_Printer_File
"
- Driver> Microsoft XPS Document Writer
- tên Printer> "
PuTTY Printer
"
- Tùy chọn: In trang thử nghiệm và đảm bảo trang hiển thị trong nội dung của tệp @ "
%USERPROFILE%\Documents\PuTTY_Printer_File
"
4) Trong PuTT phía khách hàng cấu hình Y:
- Set ga> "Máy in để gửi ra máy in ANSI để:" để vừa được tạo ra máy in có tên là "
PuTTY Printer
"
- Set Kết nối> SSH> "Remote lệnh:" thành "
t
" (tham khảo .bashrc chức năng ở trên)
tại thời điểm này bạn có thể gửi nội dung của tmux đệm cho khách hàng PuTTY của bạn bằng cách làm nổi bật một số văn bản trong bản sao chế độ tmux, và nhấn y
. Văn bản đã chọn sẽ kết thúc ở trên %USERPROFILE%\Documents\PuTTY_Printer_File
trở lại trên máy khách. Nếu bạn muốn tiến thêm một bước và mô phỏng "dán" ra khỏi tệp này, bạn có thể sử dụng chuỗi phím nóng để đọc nội dung của tệp và chèn nó. Dưới đây là một ví dụ thúc đẩy AutoHotKey, nhưng có thể bạn sẽ đạt được kết quả tương tự trong PowerShell nếu bạn thích.
5) Client-side AutoHotkey vĩ mô:
;### Get contents of PuTTY ANSI printer device output and paste it
#v:: ;Winkey + v
FileRead, PuTTYPrinter, %USERPROFILE%\Documents\PuTTY_Printer_File
SendInput %PuTTYPrinter%
PuTTYPrinter = ; Free up memory
return
6) Hoàn thành thủ tục sử dụng:
- Kết nối với máy chủ với PuTTY và được thả vào tmux bởi t function().
- Khi đã sẵn sàng để chọn văn bản cho sao chép, sử dụng tmux hotkey cho copy-mode (
Ctrl + b
, [
)
- Di chuyển con trỏ với các phím mũi tên
- Bắt đầu lựa chọn với
spacebar
- lựa chọn End và sao chép nó với
y
- Quay lại phía khách hàng đang chạy PuTTY,
WindowsKey + v
sẽ dán lựa chọn
Vì hình ảnh đáng giá 1.000 từ, đây là tổng quan về những gì đang xảy ra: https://media.licdn.com/mpr/mpr/AAEAAQAAAAAAAAfiAAAAJDYzM2RmMzYzLTk1NmQtNGQxMi1iN2YyLTQ4NGUxNjExMmVlOA.png
Câu trả lời này là sai. Islab mô tả nó tốt nhất dưới đây. Nó là cả hai có thể và rắc rối miễn phí. Câu trả lời đơn giản là kích hoạt chuột và giữ phím Shift và bạn có thể sử dụng chuột để sao chép văn bản vào khay nhớ tạm của Windows. Tôi làm điều này hàng ngày với Win7 và tmux chạy trong Putty. Tôi đã không thử chuột để dán. Đối với tôi, tôi dán bất kỳ văn bản nào tôi có trong clipboard của Windows vào thiết bị đầu cuối putty (thường vào thứ tôi đang chỉnh sửa trong Vim) bằng cách sử dụng Shift + Insert. – Alnilam
@FooBar: Bạn làm việc cho văn bản hiện tại, câu trả lời của tôi liên quan đến trường hợp chung sao chép số lượng tùy ý (tức là cũng vô hình) của văn bản. –
@IngoKarkat: Sau khi cẩn thận đọc lại OP, tôi đã sửa chữa và xin lỗi. Tôi đã xem qua bài viết này bởi vì tôi cần phải chỉ cần sao chép văn bản ra khỏi một cửa sổ duy nhất trong Tmux đến một cái gì đó trong Windows. Phím shift và chế độ con chuột giải quyết cho điều đó. OP là phàn nàn vì điều này không làm việc cho văn bản trong Vim trong một cửa sổ nhân (chia theo chiều dọc) bởi vì con chuột làm nổi bật kéo dài chảo. Một giải pháp có thể là sử dụng tính năng phóng to khung và sau đó dịch chuyển làm nổi bật văn bản. Số dòng phải được tắt trong Vim hoặc bạn cũng yank những số đó. Những gì bạn sẽ xem xét như là một ví dụ về văn bản "vô hình", mặc dù? – Alnilam