Làm cách nào để gửi khóa để thoát khỏi chế độ cuộn trong tmux?


7

Tôi có một ánh xạ khóa trong VIM trông như thế này:

map <F5> :silent !tmux send-keys -t 0:0 C-m "python %" C-m<cr>

Khi tôi nhấn F5, vim chạy tập lệnh Python hiện tại của tôi trong phiên tmux 0, cửa sổ 0. Tuy nhiên, nếu cửa sổ 0 hiện ở trạng thái cuộn (tức là Shift-PGUp hoặc cuộn chuột), tmux sẽ chạy lệnh nhưng sẽ không cuộn đầu ra mới.

Làm cách nào để gửi một khóa đến cửa sổ tmux sẽ phá vỡ nó ra khỏi chế độ cuộn? (Tôi muốn nó cuộn trên đầu ra)

Lưu ý : Tôi thường thoát khỏi chế độ cuộn bằng cách nhấn Esc, nhưng tôi không thể tìm ra cách gửi phím Escape bằng cách sử dụng tmux send-keys. Tôi đã thử gửi C-[nhưng không được.

Câu trả lời:


3

Bạn có thể gửi lối thoát theo nghĩa đen (và dòng mới) với trích dẫn ANSI-C (có thêm về điều đó ở đây ), ví dụ để gửi lối thoát tới 0:0:

tmux send-keys -t 0:0 $'\e'

Đối với ánh xạ của bạn, giả sử tôi hiểu chính xác, bạn có thể làm một cái gì đó như thế này:

map  <F5> :silent !tmux send-keys -t 0:0 $'\e'"python"$'\n'<CR>

Lưu ý rằng lối thoát sẽ luôn được gửi, vì vậy để giải quyết vấn đề về vỏ nhận được lối thoát, bạn có thể gửi thêm một dòng mới:

map  <F5> :silent !tmux send-keys -t 0:0 $'\e'$'\n'"python"$'\n'<CR>

+1. Cảm ơn lời khuyên của ANSI! (Tôi đang tìm kiếm một cái gì đó như thế). Thật không may, gửi mã Esc không hoạt động; Tôi tự hỏi liệu có phải vì tôi đang chạy tmux trong cửa sổ terminal và chức năng cuộn ngược được cung cấp bởi trình giả lập thiết bị đầu cuối chứ không phải tmux. Trong tâm trí của tôi, mã Esc là mã Esc, nhưng có vẻ như thiết bị đầu cuối hoặc tmux sẽ không chấp nhận nó.
Gilead

Bạn có thể kiểm tra xem ESC có thực sự đạt đến tmux không. Chạy: cat | od -t x2bên trong tmux và thực thi: tmux send-keys $'\e\n\004'từ một nơi khác (đó là ESC, NL, Cd). Bạn sẽ thấy 0a1bhoặc 1b0atùy thuộc vào kiến ​​trúc endianess của bạn.
Thor

Cho rằng, những gì bạn cần là kích hoạt scrollTtyOutputcho thiết bị đầu cuối của bạn, phụ thuộc vào thiết bị đầu cuối.
Thor

1
Tôi nghĩ bạn có nghĩa là thoát ra khỏi tmuxcuộn, chỉ cần đọc lại câu hỏi của bạn và thấy rằng tôi đã sai. Sẽ xóa câu trả lời này trong thời gian ngắn.
Thor

Có vẻ như nó là không đủ với scrollTtyOutputtùy chọn cho thiết bị đầu cuối. Nếu lệnh chạy vào tmux, nó không được đăng ký làm đầu ra đầu cuối. Tôi có một công việc thực sự xấu xí xung quanh đó, tôi sẽ đăng nó nếu không có gì khác được đề xuất.
Thor
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.