Windows 10 linux bash shell ctrl + dấu cách không đặt dấu trong Emacs


12

Trong Windows 10 tôi đã cài đặt Hệ thống con cho Linux Bash. Nhưng tôi gặp vấn đề với phím tắt trong Emacs Ctrl+ spacekhông đặt điểm đánh dấu.

Những gì tôi đã cố gắng và không giúp đỡ:

  • Tôi đã cố gắng bỏ chọn "bật phím tắt Ctrl" trong menu thuộc tính cho bảng điều khiển windows

  • Tôi đã cố gắng sử dụng thiết bị đầu cuối ConEmu khác nhau nhưng không thành công.

Tôi tự hỏi nếu điều này bằng cách nào đó có liên quan đến ubfox có vấn đề tương tự với không gian ctrl + và windows bash linux đang sử dụng kho lưu trữ ubfox.

Câu trả lời:


3

Không có giải pháp nào cho vấn đề này, về mặt làm cho Ctrl-Space đi qua thiết bị đầu cuối Bash, tại thời điểm viết bài này (ngày 1 tháng 9 năm 2016), có một cách giải quyết có thể đủ cho nhiều người dùng: sử dụng PuTTY để kết nối qua SSH, lực lượng xử lý Ctrl-Space. (Ở chế độ tty, không thể phân biệt Ctrl-Space với Ctrl- @, vì chúng là cùng một mã ký tự, nhưng đó không phải là vấn đề, vì theo mặc định, Emacs được thiết lập để xử lý set-mark-commandtheo cách đó.)

  1. Cài đặt máy chủ OpenSSH với sudo apt-get install openssh-server. Nếu nó đã được cài đặt, hãy xóa nó ( sudo apt-get remove openssh-server) và sau đó cài đặt lại để thiết lập lại tập tin cấu hình.
  2. Chỉnh sửa tệp / etc / ssh / sshd_config (với sudo), như sau:

    • Nếu có một thiết lập dòng không ghi chú PermitRootLogin, hãy nhận xét nó. Thêm một dòng PermitRootLogin no.
    • Thêm một dòng AllowUsers USERNAME, thay thế USERNAME bằng tên người dùng Linux của bạn (nếu bạn không biết đó là gì, hãy chạy lệnh whoamitại dấu nhắc Bash của bạn).
    • Tốt nhất là bạn nên thiết lập xác thực không cần mật khẩu bằng các khóa SSH, nhưng làm thế nào để thực hiện điều đó nằm ngoài phạm vi của câu hỏi này (có rất nhiều hướng dẫn có sẵn; tìm kiếm trên web cho "mật khẩu ssh-keygen"). Trong khi đó, thêm hoặc bỏ ghi chú dòng PasswordAuthentication yes.
    • Đặt UsePrivilegeSeparation no; có khả năng bạn sẽ tìm thấy một dòng trong tập tin nói UsePrivilegeSeparation yes; chỉ cần thay đổi yesthành novà lưu tệp / etc / ssh / sshd_config .

    Nếu có lỗi xảy ra ở đây, bạn có thể khôi phục tệp bằng cách lặp lại bước # 1.

  3. Khởi động máy chủ SSH bằng lệnh sudo service ssh --full-restart.
  4. Sử dụng PuTTY (tải xuống tại đây ), đăng nhập localhostvào trường Tên máy chủ, mọi thứ khác được để mặc định. Bạn sẽ được yêu cầu nhập tên người dùng Linux và mật khẩu của bạn.
  5. Chạy đi emacs. Ctrl-space sẽ đặt dấu theo ý muốn.

(Lưu ý rằng các bước trên sẽ không tự mình làm cho hệ thống của bạn có thể chấp nhận kết nối SSH từ các máy chủ khác . Để làm điều đó, bạn cũng sẽ phải thay đổi quy tắc tường lửa Windows của mình để cho phép cổng TCP vào 22.)

Trong một câu trả lời khác, bạn nói, "nhưng putty không phải là một thiết bị đầu cuối cục bộ." Tôi không chắc chắn nếu bạn không biết rằng bạn có thể sử dụng localhosttheo cách này hoặc nếu bạn đã loại bỏ PuTTY vì chi phí hoạt động lớn hơn so với thiết bị đầu cuối cục bộ. Nếu sau này, tôi sẽ không lo lắng, một phiên SSH tương tác là một tải cực kỳ nhẹ. (Đó chắc chắn nhiều ít tải hơn chạy một hệ thống X Window, do đó bạn có thể chạy một GUI Emacs hoặc một xterm!)

Bất lợi thực sự duy nhất khi chạy theo cách này so với thiết bị đầu cuối thẳng là các sự kiện dán được gửi từng chữ cái, như thể bạn nhập nội dung của bảng tạm rất nhanh, có thể gây ra các cặp điện, sự cố, mở rộng đoạn trích, v.v. ngọn lửa. (Dán không được khiến các lệnh hợp âm phát ra, vì có logic để phát hiện dán đang diễn ra và vô hiệu hóa các hợp âm phím cho đến khi quá trình dán kết thúc.)

Và cũng có ít nhất một lợi thế rất lớn so với thiết bị đầu cuối Bash tiêu chuẩn: các sự kiện chuột được PuTTY hỗ trợ theo hình thức mà Emacs có thể phản hồi, vì vậy, trớ trêu thay, bạn có thể di chuyển điểm bằng chuột trong PuTTY ngay cả khi bạn có thể ' t với thiết bị đầu cuối địa phương.


5

Tôi sử dụng ConEmu. Không có cách nào thanh lịch, nhưng nó có thể được giải quyết bằng cách sử dụng macro.

  1. Mở "Cài đặt" (Nhấp vào biểu tượng trên cùng).
  2. Nhấp vào "Phím & Macro".
  3. Ở phía bên tay phải, cuộn xuống cho đến khi bạn thấy các tùy chọn "Macro 01" .. "Macro 32" và chọn bất kỳ tùy chọn nào khả dụng (không quan trọng).
    Hãy lấy Macro 01 cho ví dụ này.
  4. Chọn "Space" trong menu thả xuống thứ 1.
  5. Chọn "Ctrl" trong menu thả xuống thứ 2. Để lại 2 menu thả xuống còn lại không bị ảnh hưởng.
  6. Dán bên dưới trong trường Macro GUI :

    keys("\e");keys("x");keys("s");keys("e");keys("t");keys("-");keys("m");keys("a");keys("r");keys("k");keys("-");keys("c");keys("o");keys("m");keys("m");keys("a");keys("n");keys("d");keys("\n")
  7. Trên cơ bản gửi M-x select-mark-commandchuỗi đến emacs. Bây giờ bấm vào "Lưu cài đặt".


Nó sẽ trông như thế này cuối cùng:

nhập mô tả hình ảnh ở đây


hoạt động như quyến rũ. Tuyệt diệu!
chriskelly

2

Khi chạy showkey -atrong giao diện điều khiển windows / ubfox-bash, nó hiển thị rằng không gian ctrl + chỉ gửi một không gian đơn giản.

Và đó là vấn đề tương tự với phiên ssh với bất kỳ không gian ctrl + máy linux nào khác được gửi dưới dạng không gian đơn giản.

Hành vi tương tự là với bất kỳ thiết bị đầu cuối dựa trên cửa sổ nào khác (conemu, consolez, MobaXTerm) - ngoại trừ putty có thể xử lý tốt việc này nhưng putty không phải là thiết bị đầu cuối cục bộ.

Tôi nghĩ các thiết bị đầu cuối Windows không có ánh xạ cho một số trình tự. Vấn đề tương tự là với các kết hợp khác như ctrl + 1 ctrl + 2 .. vv Ở đây bắt buộc là thiết bị đầu cuối có thể xử lý ánh xạ bàn phím cho nó giống như putty chẳng hạn.

Tôi tin rằng vấn đề này nên được khắc phục trong các phiên bản tương lai của thiết bị đầu cuối bash windows.


Thậm chí tệ hơn, nó dường như không vượt qua ctrl- @, đó là ràng buộc khác cho dấu-set. Nếu ai đó đang ở trong một ràng buộc thực sự, họ có thể sử dụng lệnh set-mark-mark Mx. Điều đúng đắn cần làm bây giờ, có lẽ, là đặt một ràng buộc quan trọng cho một cái gì đó khác.
Jim Hunziker

@JimHunziker Cho rằng đó set-mark-commandcó lẽ là lệnh được sử dụng thường xuyên nhất trong Emacs (ngoài self-insert-command), đào tạo lại ngón tay của một người vì đó là một câu hỏi thực sự rất dốc, đặc biệt là nếu bạn đã sử dụng Emacs trong hơn 25 năm như tôi.
Trey

@Trey đã thêm một câu trả lời khác, nếu bạn không ngại chạy xming trên windows
Pawel Dubiel

@PawelDubiel Xem câu trả lời của tôi vừa được thêm. (Tôi đã đưa ra các hướng dẫn chi tiết hơn mức cần thiết cho bạn để giúp những người đọc sau này.) Bạn đã loại bỏ PuTTY vì một số lý do, nhưng không nói lý do đó là gì. Đây chắc chắn là một tùy chọn giúp tải hệ thống ít hơn nhiều so với xming + thiết bị đầu cuối X.
Trey

2

Dự án này cho phép bạn sử dụng MinTTY làm thiết bị đầu cuối thay thế: https://github.com/mintty/wsltty . Nó có nguồn gốc từ PuTTY, nhưng không yêu cầu SSH. Và giống như PuTTY, nó xử lý không gian Ctrl tốt.


1

Sự cố này hiện đã được khắc phục trong Windows 10 build 14965 . Kiểm tra:

[Environment]::OSVersion

Và cài đặt bản cập nhật nếu bạn chưa có!


Vui lòng thêm chi tiết vào câu trả lời của bạn - liên kết có thể ngừng hoạt động tại một số điểm mà tại đó câu trả lời của bạn trở nên vô dụng.
djsmiley2k TMW

0

Có một hack vì chúng ta có thể cài đặt X Server cho Windows

1 lần cài đặt đầu tiên xming cho windows

2 bắt đầu xming

3 sau đó từ windows bash cài đặt

sudo apt-get install rxvt-unicode-256color

4 rồi mở cmd.exevà chạy

bash.exe -c "urxvtd -q -o -f; bash" 

bây giờ chúng tôi đang ở trong bash console và chạy

(DISPLAY=:0 urxvtc &)

5 Tại thời điểm này, chúng ta sẽ thấy một thiết bị đầu cuối mới trong Xming. Và chúng ta có thể chạy emacs trong chế độ đầu cuối.

emacs -nw

Và tất cả các ràng buộc bây giờ chỉ hoạt động tốt

các cuộc thảo luận liên quan ở đây https://github.com/Microsoft/BashOnWindows/issues/531


Tại sao đây là một cách giải quyết tốt hơn để sử dụng PuTTY? Nếu bạn định chạy Emacs ở chế độ GUI, tôi sẽ hiểu, nhưng việc bạn sử dụng -nwlàm cho nó chạy trong một thiết bị đầu cuối, giống như với PuTTY, ngoại trừ bây giờ bạn phải chạy toàn bộ hệ thống cửa sổ thứ hai từ thử nghiệm nhanh của tôi, điều đó sẽ tiêu tốn của bạn gần 500 MB bộ nhớ ngoài việc chạy sshd và PuTTY và sẽ có chi phí CPU cao hơn tương tự.
Trey

@trey 500MB bạn có chắc không? trên hệ thống của tôi chính xác là 5mb
Pawel Dubiel

Ah, tôi đọc sai các đơn vị, bạn nói đúng. Nhưng số sshd + PuTTY có thể so sánh là khoảng 25% của số khác, bất kể đó là gì ;-)
Trey
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.