Emacs C-. không làm việc trong thiết bị đầu cuối


11

Tôi sử dụng GNU Emacs, thường giống như emacs -nwkhởi chạy phiên bản đầu cuối (trái ngược với phiên bản GUI có cửa sổ).

Tôi viết các bài báo ở trường LaTeXđể tôi sử dụng flyspell-modeđể kiểm tra chính tả trong các emacs. Điều này hoạt động tốt trong phiên bản GUI, nhưng trong một thiết bị đầu cuối, tôi gặp vấn đề với tổ hợp phím C-.( Ctrl- .). Trong một tty, điều này không có gì, và trong terminatorhoặc gnome-terminal, điều này chỉ đơn giản là nhập ".".

Tôi có thể làm gì để khiến nó làm những gì nó làm trong phiên bản có cửa sổ (hiển thị các gợi ý chính tả cho một từ sai chính tả)?

EDIT: Trong trường hợp này có vấn đề, tôi đang sử dụng Ubuntu 12.04 với Emacs 23.3.1 (mà tôi tin là mặc định từ repo 12.04).


1
Tương tự ở đây. Bạn đã thử Esc- x flyspell-mode? Điều này làm việc cho tôi.
Masroor

Vâng, vâng. Tôi luôn bắt đầu flyspell-modevới M-x, nhưng ESC xdường như không tạo ra sự khác biệt.
cg505

1
Tương tự ở đây. Tuy nhiên tôi đã tìm thấy một keybinding mặc định hoạt động cho cả hai phiên bản ESC-TAB.
McNisse

Vâng, ESC TABhoặc M-TABcả hai làm việc cho tôi. Cảm ơn vì mẹo @McNisse.
cg505

Câu trả lời:


4

Có vẻ như phần quan trọng của câu hỏi này đã được trả lời trong các bình luận, nhưng để giải quyết nguyên nhân gốc rễ trong trường hợp bạn tò mò, tôi nghĩ ctrl-. không hoạt động trong một thiết bị đầu cuối vì một số hạn chế của trình giả lập thiết bị đầu cuối. Trong một thiết bị đầu cuối tiêu chuẩn, ctrl được xác định để gửi mã ASCII của khóa bạn nhấn trừ 64 (đây là lý do tại sao ctrl-J (74) gửi dòng mới (10) và ví dụ ctrl-I (73) gửi tab (9) ). Vì mã ASCII của thời kỳ là 46, trừ 64 sẽ cho -18, không hợp lệ vì nó âm và không có mã ASCII âm và do đó không có gì để emacs nhận và hiểu.

Khi bạn chạy emacs ở chế độ cửa sổ, cơ chế giả lập thiết bị đầu cuối bị bỏ qua và thay vào đó, việc xử lý bàn phím mạnh mẽ hơn của X11 được sử dụng, có thể xử lý các phím tắt khó hiểu hơn (thay vì giảm từng phím tắt xuống một ký tự ASCII, chương trình nhận được khóa gốc cộng với tất cả các sửa đổi áp dụng, riêng biệt). Vì vậy, có lẽ không thể làm cho các emacs dựa trên tty xử lý ctrl-. trừ khi bạn thực hiện các sửa đổi tùy chỉnh cho trình giả lập thiết bị đầu cuối của bạn (và có thể cả emacs).


1
Câu trả lời này thực sự thú vị. Tôi tìm hiểu sâu hơn và phát hiện ra DEC VT100 hoạt động tương tự nhưng khác biệt, nói đúng ra. Dưới đây là những gì nó làm khi phím điều khiển và phím khác được nhấn cùng nhau: 1) tra cứu bảng ASCII bằng mã quét bàn phím 2) tra cứu bảng mã điều khiển hợp lệ bằng ASCII 3) nếu nó hợp lệ, che dấu bit5 và bit6 của ASCII 4 ) gửi đi. Vì vậy, ctrl-J, ctrl-j và ctrl- * đều có thể gửi ra nhưng kiểm tra tính hợp lệ đã giới hạn các kết hợp. Xem phần hướng dẫn kỹ thuật DEC VT100 phần 4-43 (trang PDF 93).
Kenji Noguchi

Tôi có thể chụp 'C-.'tốt với emacs trong xterm nhưng không phải với urxvt hoặc st. Bất cứ ý tưởng tại sao đó có thể là trường hợp?
stewSquared

0

Mặc dù câu trả lời ở trên đưa ra một lời giải thích tốt về lý do tại sao nó không hoạt động, nhưng nó không thực sự giải quyết làm thế nào để nó hoạt động. Để iTerm2bạn có thể giải quyết điều này bằng cách thêm một ánh xạ chính cho chuỗi thoát . Tôi tưởng tượng sẽ có một cái gì đó tương tự trong terminatorhoặcgnome-terminal

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.