Màn hình Bash vs Gnu: Thay thế Ctrl-A bằng Ctrl-Shift-A


44

Tôi là người dùng mới đối với Màn hình GNU. Tôi đã sử dụng Bash trong một thời gian rất dài và tôi muốn dùng thử Màn hình GNU.

Như bạn đã biết, GNU Screen sử dụng 'Ca' (Control-A) làm ký tự lệnh. Rắc rối là, điều này cản trở tính năng Chỉnh sửa dòng trong Bash (và GNU Readline), bởi vì Control-A trong Bash sẽ di chuyển đến đầu dòng. "

Tôi biết tôi có thể đặt Ký tự lệnh thành một chuỗi khóa khác , như "^ Q" hoặc "` `" (Backtick), nhưng tôi gặp khó khăn khi tìm một chuỗi khóa khác chưa được sử dụng (^ Q được sử dụng bởi thiết bị đầu cuối , backtick được sử dụng khi viết shell script). Dường như Ký tự Lệnh chỉ có thể dài một hoặc hai ký tự. Tôi có thể đặt ký tự điều khiển Màn hình GNU thành một cái gì đó như "Control-Shift-A" không?

(Tôi chưa thể sử dụng nhiều hơn một siêu liên kết, vì vậy tôi không thể liên kết với tài liệu Bash)


5
Để không bị mất phương hướng khi sử dụng screentrên các hệ thống khác, tốt nhất bạn nên gắn bó với các phím bấm mặc định hoặc ít nhất là tìm hiểu chúng trước. ^A atheo mặc định, sẽ gửi các tổ ^Ahợp phím thông thường . Sẽ hơi bất tiện nếu bạn sử dụng combo đó rất nhiều; Tôi thường sử dụng HOMEchìa khóa thay vì điều này. Nhưng sau đó, điều đó cũng không luôn luôn làm việc.
trực giác

Không có tình yêu ở đây cho không gian Ctrl. Công trình tuyệt vời.
tự đại diện

Câu trả lời:


18

Vấn đề với Control- Shift- Alà hầu hết các chương trình mô phỏng thiết bị đầu cuối không gửi một mã khác cho mã đó từ mã được gửi bởi Control- Avì vậy sẽ không có cách nào để màn hình phân biệt sự khác biệt.

Bạn có thể sử dụng Cq nếu bạn thực hiện stty -ixonđể vô hiệu hóa kiểm soát luồng phần mềm, trên tty. Tôi thường làm điều này để tôi có thể sử dụng Cs để tìm kiếm trên dòng lệnh.

Bạn có thể xem xét C- ^, vì nó dường như thường không liên kết. Đó là Control- Shift- 6trên các bố cục bàn phím ở Hoa Kỳ, nhưng có thể khó nhập vào các bố cục khác.

Hầu hết mọi người không bao giờ sử dụng ký tự điều khiển tty C- \ để gửi SIGQUIT. Để sử dụng nó, hãy vô hiệu hóa chức năng tty với stty quit undefvà liên kết nó làm khóa tiền tố của bạn. Tuy nhiên, điều này có một chút rủi ro, vì nếu bạn nhấn C- \ trên một tty nơi khóa thoát không bị vô hiệu hóa với stty , bạn có thể giết quá trình tiền cảnh thay vì kích hoạt màn hình .

Tôi đã chuyển sang tmux một lúc trước. Mặc định của nó là Cb vì nó được phát triển dưới màn hình và không can thiệp vào mặc định của màn hình . Tôi đã thấy rằng Cb hoạt động khá tốt đối với tôi (tôi thường sử dụng các phím mũi tên để di chuyển một ký tự trên dòng lệnh shell mặc dù tôi sử dụng Mb và Mf để di chuyển bằng từ ngữ).

Ngẫu nhiên, tác giả của tmux sử dụng Ca trong các phiên chính của mình và luôn gõ Ca hai lần (cho dù trong phiên tmux hay không). Nếu bạn sẵn sàng chấp nhận thói quen này, có vẻ như đó là một sự thỏa hiệp hợp lý vì Ca thứ hai sẽ là một điểm không phù hợp trong hầu hết các bối cảnh chỉnh sửa giống như Emacs. Nó sẽ không hoạt động như vậy nếu bạn thường sử dụng các chương trình / bối cảnh bên ngoài màn hình trong đó Ca thứ hai sẽ không phải là không hoạt động.

Theo mặc định, Ca Ca bị ràng buộc với lệnh khác (chuyển sang màn hình hoạt động gần đây nhất) trong màn hình . Để Ca Ca gửi Ca thực tế và có cửa sổ chuyển đổi Ca o, hãy đặt các mục sau vào .screenrc:

escape ^A^A
bind o other

2
Điều này nghe có vẻ tốt, sau đó tôi nhận ra rằng trong Màn hình GNU, gõ Ca hai lần sẽ chuyển sang cửa sổ được hiển thị trước đó. Có lẽ tôi có thể ánh xạ "Ca Ca" sang thứ khác, mặc dù tôi không thực sự chắc chắn làm thế nào (Có vẻ như tôi cần chỉ định ' esc
Stefan Lasiewski

1
@Stefan Lasiewski: Rất tiếc, tôi quên rằng Ca Ca không gửi Ca theo mặc định. Xem phần bổ sung ở cuối câu trả lời cho một chút cấu hình khiến Ca Ca gửi Ca và Ca o chuyển sang cửa sổ trước.
Chris Johnsen

Hoạt động tuyệt vời! Ca Ca sẽ gửi Ca thực tế đến lớp vỏ bên dưới và Ca o 'sẽ chuyển sang cửa sổ' khác '. Để gửi 'Ca' đến Bash, nhấn 'Ca' hai lần. Điều này nên là không có bên ngoài màn hình và không gây ra vấn đề.
Stefan Lasiewski

41

Không cần cách giải quyết.
Để di chuyển đến đầu dòng trong khi sử dụng màn hình trong bash, hãy sử dụng

Control- A(phát hành và sau đó)A


Nói chung, nếu có một ký tự điều khiển màn hình xung đột với phím tắt bash, trước tiên, phím tắt bash Controlsẽ được thay thế bằng Control-A

Tương tự như vậy đối với các phím tắt chỉnh sửa dòng khác.


cảm ơn, tôi đã không làm điều này bây giờ, mặc dù nó dễ dàng. thực sự không cần phải cấu hình lại bất cứ điều gì tôi thích câu trả lời của bạn nhất
harald

+1 ty - đây là lựa chọn tốt nhất. Điều thú vị là, trong khi thử điều này, tôi đã vô tình gặp Ca Ca và tìm thấy một combo tuyệt vời khác.
kfmfe04

3

Tôi sử dụng C- \ cho Màn hình và tôi không thể giới thiệu đủ. Bạn có thể gặp bất kỳ định nghĩa quan trọng nào khác về tai nạn nhưng thường không phải là C- \. Đó là những gì tôi thích về nó.


3

Tôi sử dụng cái nàyscreenrc

escape ^bb

Ví dụ: Để tách bạn gõ ctrl-b d


0

Tôi sử dụng ctrl-_ (cũng có thể được tạo bởi ctrl + 7 và thường là ctrl + /) với screen / tmux.


0

Tôi sử dụng ctrl-z hầu hết thời gian, nhưng cũng sử dụng ctrl-x cho một số. Tôi không sử dụng ngắt 'dừng' nhiều như vậy, nhưng khi cần, tôi có thể gõ ^ zz. Điều này cũng cho phép tôi bắt đầu các phiên màn hình phụ trên các máy chủ từ xa sử dụng ctrl-a mặc định. Và nếu tôi bắt đầu phiên thứ ba (trên máy chủ thứ ba), thì tôi có thể sử dụng ctrl-x. Ctrl-x là chức năng khóa màn hình, trong nhiều môi trường không phải là tất cả thông thường (vì màn hình thường chạy bên trong trình giả lập thiết bị đầu cuối).

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.