Liên kết khóa Emacs trên Mac OS X Leopard


104

Tôi là một người dùng Mac và tôi đã quyết định học Emacs. Tôi đã đọc điều đó để giảm mỏi tay và cải thiện độ chính xác CTRL, CAPS LOCKcác phím và phím nên được hoán đổi. Làm cách nào để thực hiện việc này trong Leopard?

Ngoài ra, trong Terminal, tôi phải sử dụng ESCphím để gọi meta. Có cách nào để lấy phím alt / option để gọi meta thay thế không?

Cập nhật: Mặc dù hiện tại phím điều khiển dễ nhấn hơn nhiều, nhưng phím meta cũng được sử dụng thường xuyên đến mức vị trí của nó trên Bàn phím Apple và MacBook của tôi cũng đáng được chú ý. Trên thực tế, tôi thấy rằng phím điều khiển thực sự dễ đánh hơn, vì vậy tôi đã ánh xạ lại phím điều khiển của mình để hoạt động như một phím meta. Có ai có một giải pháp tốt hơn / tiêu chuẩn hơn?


4
nó tốt hơn để di chuyển nó đến cho apple.stackexchange.com
yetanothercoder

Câu trả lời:


163

Hoán đổi CTRL và CHÌA KHÓA CHỮ HOA

  1. Đi vào Tùy chọn hệ thống
  2. Nhập ngăn tùy chọn Bàn phím & Chuột
  3. Trong tab Bàn phím , bấm Phím bổ trợ ...
  4. Hoán đổi các hành động cho Caps LockControl .

văn bản thay thế

Sử dụng ALT / OPTION làm META

  1. Trong thanh menu, nhấp vào Thiết bị đầu cuối
  2. Nhấp vào Tùy chọn ...
  3. Trong tab Cài đặt , hãy chuyển đến tab Bàn phím
  4. Chọn hộp có nhãn Sử dụng tùy chọn làm khóa meta

văn bản thay thế

Đó là nó! Bạn đang trên con đường trở thành bậc thầy của Emacs!


8
'Sử dụng tùy chọn làm khóa meta' hoạt động, nhưng điều này dẫn đến việc tôi không thể nhập dấu ngoặc nhọn và dấu ngoặc nhọn '[] {} |' vv vì họ đang ở trong Tùy chọn-7 và tùy chọn bây giờ ... cũng ánh xạ tới meta. Bất kỳ ý tưởng?
Martin Wickman

1
@wic: Những nhân vật đó không có khóa riêng sao?
Kyle Cronin

1
Không phải ở đây ở châu Âu. Với bàn phím tiếng Na Uy, chúng được ánh xạ tới alt- 8 và 9 và alt + shift- 8 và 9.
sverrejoh

3
Chuyển đổi bố cục khi viết mã. Sau đó, họ nhận được chìa khóa của riêng họ như họ cần. Tôi là người Thụy Điển và tôi không bao giờ thấy cần phải nhập các ký tự gốc của mình khi viết mã.
Per Wiklander

1
@hhh Các cài đặt dành cho từng bàn phím, vì vậy hãy đảm bảo rằng bạn đã đặt chính xác cho bàn phím ngoài của mình. Nhưng vâng, một khi bạn thực hiện thay đổi, cần làm việc ở khắp mọi nơi trong OS X.
Kyle Cronin

47

Để tham khảo, đây là các ràng buộc chính để di chuyển xung quanh văn bản:

+ - di chuyển sang trái một từ
+ - di chuyển sang phải một từ
+ delete- lùi lại xóa một từ
Shift+ + delete- chuyển tiếp xóa một từ
+ - di chuyển lên một đoạn
+ - di chuyển xuống một đoạn
+ - di chuyển đến đầu dòng hiện tại
+ - di chuyển đến cuối dòng hiện tại
Shift+ bất kỳ lựa chọn nào ở trên mở rộng lựa chọn theo số lượng thích hợp

Bấm rồi kéo - chọn văn bản
Bấm đúp sau đó kéo - chọn văn bản, kéo dài đến đầu từ
Bấm ba lần rồi kéo - chọn văn bản, kết thúc đoạn văn

Shift+ Chọn văn bản bằng chuột - thêm vào vùng chọn (liền nhau)
+ Chọn văn bản bằng chuột - thêm vào vùng chọn (không liền nhau)
+ Kéo - chọn vùng hình chữ nhật (không liền nhau)
+ + kéo - thêm vùng hình chữ nhật vào vùng chọn
Kéo vùng chọn - di chuyển
lựa chọn văn bản + kéo - sao chép văn bản

Ctrl+ A- di chuyển đến đầu đoạn hiện tại
Ctrl+ B- di chuyển sang trái một ký tự
Ctrl+ D- chuyển tiếp xóa
Ctrl+ E- di chuyển đến cuối đoạn hiện tại
Ctrl+ F- di chuyển sang phải một ký tự
Ctrl+ H- xóa
Ctrl+ K- xóa phần còn lại của đoạn hiện tại
Ctrl+ L- căn giữa cửa sổ hiện tại dòng
Ctrl+ N- di chuyển xuống một dòng
Ctrl+ O- chèn dòng mới sau con trỏ
Ctrl+ P- di chuyển lên một dòng
Ctrl+ T- chuyển vị (hoán đổi) hai ký tự xung quanh
Ctrl+ V- di chuyển đến cuối, sau đó sang trái một ký tự
Ctrl+ Y- dán văn bản đã xóa trước đó vớiCtrl - K

Thêm Optionvào Ctrl+ Fhoặc Ctrl+ Bđể di chuyển một từ thay vì một ký tự tại một thời điểm.


Một nguồn tốt khác là trang này hcs.harvard.edu/~jrus/Site/System%20Bindings.html
Gourneau

3
Ch không xóa trong bash và trong hộp văn bản Mac OS X Cocoa, nhưng nó có ích trong emacs.
asmeurer

11

Câu trả lời khác rất đầy đủ, nhưng tôi cũng đề cập đến việc tôi chỉ đặt phím caps lock thành phím điều khiển thứ hai thay vì hoán đổi chúng.

Ngoài ra, bạn sẽ nhận thấy rằng phần lớn các trường nhập văn bản trong Mac OS X đã chấp nhận các tổ hợp phím emacs (^ Đầu dòng, ^ E cuối dòng, ^ P, ^ N, ^ K, ^ Y, v.v.)

chúc may mắn


6
Có thể bạn đang làm gì đó - Tôi không thể nhớ lần cuối cùng tôi khóa mũ người dùng.
Kyle Cronin

11

Tôi thực sự thích câu trả lời do Kyle Cronin cung cấp, nhưng tôi muốn thêm một điều - hãy đảm bảo bạn chọn bàn phím phù hợp để điều này hoạt động. Nếu bạn đã cắm bàn phím ngoài vào máy tính xách tay của mình, thì sẽ có thêm một hộp thả xuống và bạn sẽ cần thực hiện việc này cho cả hai bàn phím (hoặc ít nhất là cho bàn phím ngoài của bạn). Ảnh chụp màn hình bên dưới hiển thị hộp thoại "Chọn Bàn phím" - Tôi đã chọn "Bàn phím Joint Mac", là cách nói của MacBook với bàn phím ngoài GoldTouch - mặc định là bàn phím tích hợp sẵn.
Ảnh chụp màn hình hiển thị hộp thoại "Chọn bàn phím"

Một khi tôi đã tìm ra điều đó - điều này rất hiệu quả đối với tôi!


9

Nếu bạn sử dụng emac qua kết nối ssh hoặc thông qua một máy không nằm trên máy tính cục bộ của bạn, các nút lên / xuống trang sẽ cuộn qua bộ đệm đầu cuối - theo kinh nghiệm của tôi, không quá hữu ích.

Bạn có thể đặt trang xuống và các nút trang lên để gửi các lệnh thích hợp đến emac. Trong emacs, bạn có thể cuộn qua bộ đệm emacs như sau:

  • Trang lên: Ctl-v
  • Xuống trang: Esc-v

Vì vậy, để thiết bị đầu cuối gửi các lệnh này đến emac, hãy làm theo hướng dẫn ở trên để thay đổi các phím Alt cho Meta. Tuy nhiên, thay vì đặt tùy chọn "use option as meta", hãy tìm tùy chọn "page down" và "page up".

Trang dưới

Nhấp đúp vào tùy chọn "trang xuống" để chỉnh sửa nó. Thay đổi Hành động thành "gửi chuỗi đến trình bao" và nhập \ 026 làm chuỗi. Lưu nó.

Trang lên

Nhấp đúp vào nút "trang lên" để chỉnh sửa nó. Thay đổi Hành động thành "gửi chuỗi đến trình bao" và nhập \ 033v làm chuỗi. Lưu nó.


7

Không chắc liệu bạn có hoàn toàn kết hôn với việc sử dụng Emacs từ thiết bị đầu cuối hay không, nhưng một lựa chọn khác là sử dụng Carbon Emacs (yêu thích của tôi) và Aquamacs (rất giống Mac). Carbon Emacs sử dụng phím lệnh cho meta, điều này rất hay vì bạn có thể thực hiện các lệnh Control-Meta chỉ bằng cách nhấn giữ Control và Command thay vì nhấn phím thoát trước rồi đến chuỗi phím điều khiển.

Ngoài ra, nếu bạn là một người dùng Emacs nghiêm túc, tôi khuyên bạn nên mua một bàn phím phù hợp để lập trình (đó là một bàn phím hoàn toàn có thể lập trình lại được). Tôi sử dụng một chiếc Kinesis, hơi tiền một chút nhưng chúng cực kỳ bền và khá đẹp.


4

Cá nhân tôi có khóa mũ thiết lập để hoạt động giống như lệnh trên tùy chọn hệ thống và sau đó trên tệp emacs init.el của tôi có:

(setq mac-command-modifier 'ctrl)

và điều này cho phép tôi sử dụng caps lock làm lệnh trong hầu hết các ứng dụng osx và điều khiển trong emacs. hoạt động đủ tốt cho tôi.


4

Niềm vui của bạn chỉ mới bắt đầu. Các thủ thuật khác bao gồm:

  • Sử dụng phím shift trái và phải cũng được (và) để nhập nhanh.
  • Sửa lại phím fn của bạn hoặc một phím khác để trở nên "siêu".
  • Làm cho khóa mũ được kiểm soát, nhưng chỉ với một khóa khác. Tự nó, nó là sự trốn thoát.

Đọc bài viết xuất sắc tại http://stevelosh.com/blog/2012/10/a-modern-space-cadet/ để biết thêm thông tin.


việc này thật là tuyệt! cám ơn! Tôi thậm chí còn không nghĩ đến việc thực hiện logic có điều kiện đó cho nút capslock. ốm quá!
wle8300

3

Chủ đề này đã được bắt đầu cách đây 5 năm và không có đề cập đến ns-win.elhoặc xây dựng --with-ns. Đây là tất cả các liên kết chính có sẵn (ngoài hộp) trong Emacs Trunk tính đến tháng 10 năm 2013. Và tất nhiên, bạn có thể tạo của riêng mình. Cá nhân tôi có một cái init.elvới tất cả các ràng buộc chính của tôi có thể được sử dụng với Windows XP thông qua Parallels trên OSX và cả với OSX nguyên bản. Vì người dùng có thể xác định các phím tắt của riêng mình, tôi không thấy cần phải sửa lại bàn phím trong tùy chọn hệ thống (với bàn phím Apple US) trừ khisử dụng bàn phím không bao gồm phím Command. Nhưng, liệu tôi có vứt bỏ đống bàn phím bấm chuột của IBM có tích hợp trackpoint không? Dĩ nhiên là không. :) Tôi đang mang theo những chiếc bàn phím bấm chuột IBM của mình vào cuộc sống tiếp theo. Bất kỳ căng thẳng tay nào rất có thể là do tư thế cổ tay / cánh tay / khuỷu tay không đúng, không phải do đánh điều khiển hoặc khóa mũ. Độ chính xác được cải thiện thông qua thực hành và với sự giúp đỡ của một ông chủ đang nhìn qua vai bạn để biết bạn đang tiến triển như thế nào - tức là, một chút áp lực để làm việc hiệu quả hơn :)

(define-key global-map [?\s-,] 'customize)
(define-key global-map [?\s-'] 'next-multiframe-window)
(define-key global-map [?\s-`] 'other-frame)
(define-key global-map [?\s-~] 'ns-prev-frame)
(define-key global-map [?\s--] 'center-line)
(define-key global-map [?\s-:] 'ispell)
(define-key global-map [?\s-?] 'info)
(define-key global-map [?\s-^] 'kill-some-buffers)
(define-key global-map [?\s-&] 'kill-this-buffer)
(define-key global-map [?\s-C] 'ns-popup-color-panel)
(define-key global-map [?\s-D] 'dired)
(define-key global-map [?\s-E] 'edit-abbrevs)
(define-key global-map [?\s-L] 'shell-command)
(define-key global-map [?\s-M] 'manual-entry)
(define-key global-map [?\s-S] 'ns-write-file-using-panel)
(define-key global-map [?\s-a] 'mark-whole-buffer)
(define-key global-map [?\s-c] 'ns-copy-including-secondary)
(define-key global-map [?\s-d] 'isearch-repeat-backward)
(define-key global-map [?\s-e] 'isearch-yank-kill)
(define-key global-map [?\s-f] 'isearch-forward)
(define-key global-map [?\s-g] 'isearch-repeat-forward)
(define-key global-map [?\s-h] 'ns-do-hide-emacs)
(define-key global-map [?\s-H] 'ns-do-hide-others)
(define-key global-map [?\s-j] 'exchange-point-and-mark)
(define-key global-map [?\s-k] 'kill-this-buffer)
(define-key global-map [?\s-l] 'goto-line)
(define-key global-map [?\s-m] 'iconify-frame)
(define-key global-map [?\s-n] 'make-frame)
(define-key global-map [?\s-o] 'ns-open-file-using-panel)
(define-key global-map [?\s-p] 'ns-print-buffer)
(define-key global-map [?\s-q] 'save-buffers-kill-emacs)
(define-key global-map [?\s-s] 'save-buffer)
(define-key global-map [?\s-t] 'ns-popup-font-panel)
(define-key global-map [?\s-u] 'revert-buffer)
(define-key global-map [?\s-v] 'yank)
(define-key global-map [?\s-w] 'delete-frame)
(define-key global-map [?\s-x] 'kill-region)
(define-key global-map [?\s-y] 'ns-paste-secondary)
(define-key global-map [?\s-z] 'undo)
(define-key global-map [?\s-|] 'shell-command-on-region)
(define-key global-map [s-kp-bar] 'shell-command-on-region)
;; (as in Terminal.app)
(define-key global-map [s-right] 'ns-next-frame)
(define-key global-map [s-left] 'ns-prev-frame)

(define-key global-map [home] 'beginning-of-buffer)
(define-key global-map [end] 'end-of-buffer)
(define-key global-map [kp-home] 'beginning-of-buffer)
(define-key global-map [kp-end] 'end-of-buffer)
(define-key global-map [kp-prior] 'scroll-down-command)
(define-key global-map [kp-next] 'scroll-up-command)

;; Allow shift-clicks to work similarly to under Nextstep.
(define-key global-map [S-mouse-1] 'mouse-save-then-kill)
(global-unset-key [S-down-mouse-1])


0

Tôi đã tạo một bộ ràng buộc khá toàn diện ở đây để sử dụng bên ngoài Terminal.

Cá nhân tôi không thể sử dụng bàn phím máy tính xách tay mac do không có phím điều khiển bên phải.

Thay vào đó, tôi đã sử dụng Microsoft Natural Ergonomic Keyboard 4000 trong hơn 7 năm: nó có các phím Ctrl và Alt thực sự chất lượng, được định vị tốt và sau khi tải xuống trình điều khiển của nó , các phím "Start" và "Application" được ánh xạ lại cho Mac Phím cmd, cũng mập và dễ bị hụt hẫng.

Để tránh những lo lắng về công thái học, tôi đã tự tập cho mình cách sử dụng Ctrl, Alt và Cmd giống như cách chúng ta sử dụng Shift - nhấn chúng bằng tay đối diện với tay đang gõ phím thực. (Đó là, tôi chỉ để Caps Lock như cũ.)


0

Tôi đặt caps lock để kiểm soát trong tùy chọn hệ thống và tôi có phần sau trong init.el của mình để đặt lệnh thành meta và tùy chọn thành super:

(custom-set-variables
 '(ns-alternate-modifier (quote super))
 '(ns-command-modifier (quote meta)))

0

Tôi muốn giới thiệu 2 phần mềm SeilKarabiner . Chỉ cần cài đặt Seil và làm theo các hướng dẫn trong phần mềm, bạn sẽ có thể đạt được những gì mình muốn. Theo kinh nghiệm của tôi, Karabiner mạnh hơn. Tôi có một bàn phím tiếng Nhật có cách bố trí khác với những bàn phím bình thường. Tôi có một số đoạn mã sửa lại hai phím phụ trên bàn phím của tôi thành F18 và F19 để sử dụng vào mục đích khác. Bạn có thể sử dụng cú pháp tương tự để chỉnh sửa tệp "private.xml" của mình nhằm thực hiện nhiều việc hơn.

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.