Pertanyaan Apa kombinasi Kontrol umum dalam pengaturan terminal


Saya ingin memiliki panduan yang baik untuk kombinasi tombol Kontrol umum yang digunakan dalam shell bash (dan sejenisnya) dan kombinasi yang digunakan oleh program-program umum yang digunakan dalam shell tersebut.

Motivasi khusus saya adalah untuk dapat menjalankan layar GNU pada satu komputer, ssh ke komputer kedua dan menggunakan layar dan irssi pada komputer itu. Jadi saya perlu menggunakan sesuatu selain Ctrl-A untuk mengontrol salah satu sesi layar. Jadi saya perlu tahu apa saja kombinasi tombol Kontrol yang aman untuk digunakan.

Tapi saya membayangkan daftar ini akan berguna bagi orang lain yang ingin mengikat tindakan khusus untuk Mengontrol kombinasi tombol.

Saya rasa kita akan lebih baik mengelompokkan kombinasi tombol Kontrol oleh aplikasi (misalnya bash itu sendiri, layar, vim, emacs), untuk membuatnya mudah untuk mengenali aplikasi yang Anda gunakan atau dapat abaikan. Jadi tolong satu aplikasi per jawaban - harap itu berhasil.


7
2018-03-15 22:46


asal


Untuk mengatasi motivasi khusus Anda, saya akan enggan menjalankan layar-dalam-layar jika Anda dapat menghindarinya: mengapa Anda ingin menggunakan layar untuk mempertahankan koneksi ssh ke sesi layar lain? Titik layar adalah memungkinkan ssh untuk menutup tanpa kehilangan program aktif Anda. Saya akan menyarankan untuk hanya ssh ke komputer kedua di terminal terpisah. Jika Anda memang harus melakukannya (saya telah melakukannya di masa lalu), saya menemukan ada beban kognitif yang kurang jika saya hanya meninggalkan binding kunci default saja. Anda dipaksa untuk sadar ketika Anda berada di layar dalam juga. - Zac Thompson


Jawaban:


Pesta sendiri menggunakan pustaka GNU readline, seperti halnya banyak program baris perintah interaktif lainnya. Readline memiliki bindings kunci default berikut yang meniru perilaku emacs:

Bergerak di jalur:

  • Ctrl + A  Pergi ke awal baris yang sedang Anda ketikkan
  • Ctrl + E  Pergi ke ujung baris yang sedang Anda ketikkan

Mengedit teks di telepon:

  • Ctrl + U  Menghapus baris sebelum posisi kursor. Jika Anda berada di ujung baris, bersihkan seluruh baris.
  • Ctrl + H  Sama seperti backspace
  • Ctrl + W  Hapus kata sebelum kursor
  • Ctrl + K  Hapus baris setelah kursor
  • Ctrl + T  Tukar dua karakter terakhir sebelum kursor
  • Esc + T Tukar dua kata terakhir sebelum kursor

Lain:

  • Ctrl + L  Menghapus Layar, mirip dengan perintah yang jelas
  • Ctrl + R  Mari Anda mencari melalui perintah yang digunakan sebelumnya
  • Ctrl + C  Bunuh apa pun yang Anda jalankan
  • Ctrl + D  Keluar dari shell saat ini
  • Ctrl + Z  Menempatkan apa pun yang Anda jalankan ke dalam proses latar belakang yang ditangguhkan. fg mengembalikannya.

6



Ini untuk emacs (set -o emacs) binding kunci (bind -p). Mereka akan berbeda untuk vi (set -o vi) binding kunci. - Dennis Williamson
@Dennis ya, tetapi kunci sebenarnya ditentukan oleh perpustakaan baca, yang banyak menggunakan program. Bash memiliki 'set -o vi' tetapi program lain tidak. Jadi meskipun bash digunakan dengan kunci vi, ini masih akan bertentangan dengan program lain. Saya memperbarui jawaban ini dan menambahkan satu untuk emacs. - Zac Thompson
@Zac: Tapi kamu bisa set editing-mode vi dalam sebuah inputrc mengajukan. - Dennis Williamson


Vim menggunakan:

  • Ctrl-B  kembali (ke atas) satu layar
  • Ctrl-D  turun setengah layar
  • Ctrl-E  gulir teks ke atas (kursor tidak bergerak kecuali harus)
  • Ctrl-F  Foreward (down) satu layar
  • Ctrl-G  menunjukkan status
  • Ctrl-H  menghapus
  • Ctrl-J  baris ke bawah
  • Ctrl-L  layar segarkan
  • Ctrl-N  pindah satu baris (atau gulir maju melalui pelengkapan otomatis)
  • Ctrl-P  naik satu baris (atau gulir mundur melalui pelengkapan otomatis)
  • Ctrl-R  ulangi (setelah undo)
  • Ctrl-T  buka file / kode yang Anda edit sebelum lompat tag terakhir
  • Ctrl-U  setengah layar
  • Ctrl-V  masuk ke mode blok visual
  • Ctrl-W  digunakan untuk mengelola jendela terpisah
  • Ctrl-Y  gulir teks ke bawah (kursor tidak bergerak kecuali harus)

1





Emacs menggunakan segalanya. Dari http://www.cs.rutgers.edu/LCSR-Computing/some-docs/emacs-chart.html :

  • C-SP set-mark-command
  • C-a awal-of-line
  • C-b backward-char
  • C-c keluar-rekursif-edit
  • C-d delete-char
  • C-e akhir-of-line
  • C-f forward-char
  • C-g (tidak secara eksplisit disebutkan dalam tautan di atas, tetapi digunakan sebagai 'batal' saat memasukkan perintah)
  • Perintah bantuan C-h
  • C-i (TAB) indent-for-tab-command
  • C-j (LFD) baris baru-dan-indent
  • C-k kill-line
  • C-l recenter
  • C-m (RET) baris baru
  • C-n baris selanjutnya
  • C-o open-line
  • C-p baris sebelumnya
  • C-q kutipan-insert
  • C-r isearch-mundur
  • C-s isearch-forward
  • C-t transpose-chars
  • C-u universal-argumen
  • Gulir c-v
  • C-w kill-region
  • C-x Control-X-prefix
  • C-y yank
  • C-z menangguhkan-emacs
  • C-] abort-rekursif-edit
  • C-_ undo

1





Tampaknya Ctrl + Q akan menjadi kunci pelarian yang ideal untuk layar GNU, apakah ada alasan yang sepertinya tidak ada yang menyarankannya?

Satu-satunya downside yang dapat saya pikirkan adalah pada Mac OS X Command + Q adalah pintasan keyboard untuk menghentikan aplikasi yang akan sedikit berbahaya jika dibingungkan Ctrl + Q.

Jika tidak, dari jawaban saat ini dan penelitian saya sendiri tampaknya tidak ada konflik Ctrl + Q.


1



Terminal Anda berhenti dan mulai fitur biasanya dikendalikan oleh C-s dan C-q, tetapi tidak terlalu umum (benar saya jika saya salah) bahwa orang-orang menggunakan ini sama sekali karena caranya lebih mudah untuk menyalurkan lebih sedikit, lebih banyak atau alat pemrosesan lainnya. Saya akan mengatakan dengan aman bahwa Anda dapat mengulang C-q tanpa banyak hazzle. Dalam cangkang saya, saya selalu mengubah pengaturan stty untuk memulai dan berhenti untuk menghindari menghentikan sementara keluaran secara tidak sengaja, saya melakukan ini dengan: stty start '' stop '' di skrip startup bash saya. - Mattias Ahnberg
FYI: Saat menggunakan PuTTY, Jika Anda secara tidak sengaja menekan Ctrl + s (XOFF) Anda perlu Ctrl + q untuk mendapatkan sesi Anda merespons lagi. - Dave Forgac


Banyak aplikasi menggunakan pustaka GNU readline, jadi keybindings itu bagus untuk diketahui. Anda dapat mempelajarinya di halaman manual readline (2), mudah dilihat di sini:
http://linux.die.net/man/3/readline


1





Layar GNU dengan menggunakan default Ctrl-A sebagai kunci komandonya.


0



Untuk menggunakan Bash emacs-mode Ctrl-A (awal-of-line) saat menjalankan layar, tekan Ctrl-A diikuti oleh A (atau tekan Home). - Dennis Williamson