Layar Bash vs. Gnu: Ganti Ctrl-A dengan Ctrl-Shift-A

44

Saya pengguna baru ke Layar GNU. Saya sudah menggunakan Bash untuk waktu yang sangat lama, dan saya ingin mencoba Layar GNU.

Seperti yang Anda ketahui, Layar GNU menggunakan 'Ca' (Control-A) sebagai karakter perintah. Masalahnya adalah, ini mengganggu fitur Line Editing di Bash (dan GNU Readline), karena Control-A di Bash akan Pindah ke awal baris. "

Saya tahu saya dapat mengatur Karakter Perintah ke urutan kunci lain , seperti "^ Q" atau "` `" (Backtick), tetapi saya mengalami kesulitan menemukan urutan kunci lain yang belum digunakan (^ Q digunakan oleh terminal , backtick digunakan saat menulis skrip shell). Tampaknya Karakter Perintah hanya boleh panjang satu atau dua karakter. Dapatkah saya mengatur karakter kontrol Layar GNU menjadi sesuatu seperti "Control-Shift-A"?

(Saya belum dapat menggunakan lebih dari satu hyperlink, jadi saya tidak dapat menautkan ke dokumentasi Bash)

Stefan Lasiewski
sumber
5
Demi tidak menjadi bingung ketika menggunakan screenpada sistem lain, Anda mungkin lebih baik tetap dengan ikatan kunci default, atau setidaknya untuk mempelajarinya terlebih dahulu. ^A aakan, secara default, mengirim ^Akombo tombol yang biasa . Agak merepotkan jika Anda sering menggunakan kombo itu; Saya biasanya menggunakan HOMEkunci bukan karena ini. Tapi itu juga tidak selalu berhasil.
intuited
Tidak ada cinta di sini untuk Ctrl-space. Bagus sekali.
Wildcard

Jawaban:

18

Masalahnya dengan Control- Shift- Aadalah bahwa kebanyakan program emulasi terminal tidak mengirim kode berbeda dari kode yang dikirim oleh Control- A, jadi tidak akan ada cara bagi layar untuk membedakannya.

Anda mungkin dapat menggunakan Cq jika Anda stty -ixonmenonaktifkan "kontrol aliran perangkat lunak" pada tty. Saya biasanya melakukan ini sehingga saya bisa menggunakan Cs untuk mencari di baris perintah.

Anda mungkin mempertimbangkan C- ^, karena biasanya tidak terikat. Ini adalah Control- Shift- 6pada tata letak keyboard AS, tetapi mungkin sulit untuk mengetik pada tata letak lain.

Kebanyakan orang tidak pernah menggunakan karakter tty control C- \ untuk mengirim SIGQUIT. Untuk menggunakannya, nonaktifkan fungsi tty dengan stty quit undefdan ikat sebagai kunci awalan Anda. Ini agak berisiko, karena jika Anda menekan C- \ pada tty di mana tombol keluar belum dinonaktifkan dengan stty , Anda mungkin membunuh proses latar depan alih-alih mengaktifkan layar .

Saya beralih ke tmux beberapa waktu lalu. Default adalah Cb karena dikembangkan di bawah layar dan tidak mengganggu layar default 's . Saya telah menemukan bahwa Cb bekerja dengan cukup baik untuk saya (saya biasanya menggunakan tombol panah untuk gerakan karakter tunggal pada baris perintah shell-meskipun saya menggunakan Mb dan Mf untuk bergerak dengan kata-kata).

Kebetulan, penulis tmux menggunakan Ca dalam sesi utamanya dan selalu mengetik Ca dua kali (apakah dalam sesi tmux atau tidak). Jika Anda mau mengadopsi kebiasaan ini, sepertinya kompromi yang layak karena Ca kedua harus menjadi no-op di sebagian besar konteks pengeditan seperti Emacs. Itu tidak akan berfungsi begitu akan jika Anda sering menggunakan program / konteks di luar layar di mana Ca kedua tidak akan menjadi no-op.

Secara default, Ca Ca terikat ke perintah lain (beralih ke layar yang paling baru aktif) di layar . Agar Ca Ca mengirim Ca yang sebenarnya dan memiliki jendela pengalih Ca, letakkan yang berikut di Anda .screenrc:

escape ^A^A
bind o other
Chris Johnsen
sumber
2
Ini kedengarannya bagus, kemudian saya menyadari bahwa di Layar GNU, mengetik Ca dua kali akan beralih ke jendela yang ditampilkan sebelumnya. Mungkin saya bisa memetakan "Ca Ca" ke sesuatu yang lain, walaupun saya tidak begitu yakin bagaimana melakukan itu (Sepertinya saya perlu menentukan 'escape xy' atau 'meta' untuk ini) Lihat gnu.org/software/screen/ manual / screen.html # Other-Window
Stefan Lasiewski
1
@Stefan Lasiewski: Ups, saya lupa bahwa Ca Ca tidak mengirim Ca secara default. Lihat tambahan di akhir jawaban untuk sedikit konfigurasi yang membuat Ca Ca mengirim Ca dan beralih ke jendela sebelumnya.
Chris Johnsen
Bagus sekali! Ca Ca akan mengirim Ca yang sebenarnya ke shell yang mendasarinya dan Ca o 'akan beralih ke jendela' lain '. Untuk mengirim 'Ca' ke Bash, tekan 'Ca' dua kali. Ini harus menjadi no-op di luar layar, dan seharusnya tidak menyebabkan masalah.
Stefan Lasiewski
41

Tidak perlu untuk solusinya.
Untuk pindah ke awal garis saat menggunakan layar dalam bash, gunakan

Control- A(lepaskan lalu)A


Secara umum, jika ada konflik karakter kontrol layar dengan pintasan bash, pintasan bash pertama Controlakan diganti dengan Control-A

Demikian juga untuk pintasan pengeditan baris lainnya.

skyshock21
sumber
terima kasih, saya tidak sekarang ini, meskipun itu mudah. memang tidak perlu mengkonfigurasi ulang apa pun. Saya suka jawaban Anda.
Harald
+1 ty - sejauh ini, opsi terbaik. Lucunya, ketika mencoba ini, saya menabrak Ca Ca secara tidak sengaja dan menemukan kombo hebat lainnya.
kfmfe04
3

Saya menggunakan C- \ untuk Layar dan saya tidak cukup merekomendasikannya. Anda dapat menemukan definisi kunci lainnya pada kecelakaan tetapi tidak umumnya C- \. Itu yang saya sukai.

MikeHoss
sumber
3

Saya menggunakan ini.screenrc

escape ^bb

Contoh: Untuk melepaskan Anda ketik ctrl-b d

guettli
sumber
0

Saya menggunakan ctrl-_ (yang juga dapat diproduksi oleh ctrl + 7 dan biasanya ctrl + /) dengan layar / tmux.

greywh
sumber
0

Saya menggunakan ctrl-z sebagian besar waktu, tetapi juga menggunakan ctrl-x untuk beberapa. Saya tidak menggunakan interupsi 'stop' sebanyak itu, tetapi ketika dibutuhkan, saya bisa mengetikkan ^ zz. Ini juga memungkinkan saya untuk memulai sesi layar sekunder pada server jauh yang menggunakan ctrl-a default. Dan jika saya memulai sesi ketiga (pada server ketiga), maka saya dapat menggunakan ctrl-x. Ctrl-x adalah fungsi lockscreen, yang dalam banyak lingkungan tidak seperti biasanya (karena layar sering berjalan di dalam emulator terminal).

Arcege
sumber