Emacs pada pengikatan tombol Mac OS X Leopard


104

Saya pengguna Mac dan saya telah memutuskan untuk mempelajari Emacs. Saya telah membaca bahwa untuk mengurangi ketegangan tangan dan meningkatkan akurasi, kunci CTRLdan CAPS LOCKharus ditukar. Bagaimana cara melakukan ini di Leopard?

Juga, di Terminal saya harus menggunakan ESCkunci untuk memanggil meta. Apakah ada cara untuk mendapatkan kunci alt / option untuk memanggil meta?

update: Meskipun tombol kontrol lebih mudah untuk ditekan sekarang, tombol meta juga cukup sering digunakan sehingga posisinya di MacBook dan Apple Keyboard saya juga perlu diperhatikan. Faktanya, saya menemukan bahwa tombol kontrol sebenarnya lebih mudah untuk dipukul, jadi saya telah memetakan ulang kunci kontrol saya untuk bertindak sebagai kunci meta. Apakah ada yang punya solusi standar yang lebih baik / lebih?


4
lebih baik memindahkannya ke untuk apple.stackexchange.com
yetanothercoder

Jawaban:


163

Menukar CTRL dan CAPS LOCK

  1. Masuk ke System Preferences
  2. Masuk ke panel preferensi Keyboard & Mouse
  3. Di tab Keyboard , klik Modifier Keys ...
  4. Tukar tindakan untuk Caps Lock dan Control .

teks alt

Menggunakan ALT / OPTION sebagai META

  1. Di bilah menu, klik Terminal
  2. Klik Preferensi ...
  3. Di bawah tab Pengaturan , buka tab Keyboard
  4. Centang kotak berlabel opsi Gunakan sebagai kunci meta

teks alt

Itu dia! Anda seharusnya sudah siap untuk menjadi master Emacs!


8
'Gunakan opsi sebagai kunci meta' berfungsi, tapi ini mengakibatkan saya tidak bisa mengetikkan tanda kurung dan pipa '[] {} |' dll karena mereka ada di Opsi-7 dan opsi sekarang ... juga memetakan ke meta. Ada ide?
Martin Wickman

1
@wic: Bukankah karakter-karakter itu memiliki kuncinya sendiri?
Kyle Cronin

1
Tidak di sini di Eropa. Dengan keyboard norwegian, mereka dipetakan ke alt- 8 dan 9 dan alt + shift- 8 dan 9.
sverrejoh

3
Ganti tata letak saat membuat kode. Kemudian mereka mendapatkan kunci mereka sendiri sebagaimana mestinya. Saya orang Swedia dan saya tidak pernah merasa perlu mengetik karakter asli saya saat membuat kode.
Per Wiklander

1
@hhh Setelannya adalah per keyboard, jadi pastikan Anda telah menyetelnya dengan benar untuk keyboard eksternal Anda. Tapi ya, begitu Anda membuat perubahan, itu akan berfungsi di mana saja di OS X.
Kyle Cronin

47

Sebagai referensi, berikut adalah key binding untuk memindahkan teks:

+ - pindah ke kiri satu kata
+ - pindah ke kanan satu kata
+ delete- kembali hapus satu kata
Shift+ + delete- foward hapus satu kata
+ - pindah ke atas satu paragraf
+ - pindah ke bawah satu paragraf
+ - pindah ke awal baris saat ini
+ - pindah ke akhir dari baris saat ini
Shift+ salah satu dari pilihan perpanjang di atas dengan jumlah yang sesuai

Klik lalu seret - pilih teks
Klik dua kali lalu seret - pilih teks, membungkus ke ujung kata
Klik tiga kali lalu seret - pilih teks, membungkus ke ujung paragraf

Shift+ Pilih teks dengan mouse - tambahkan ke pilihan (bersebelahan)
+ Pilih teks dengan mouse - tambahkan ke pilihan (tidak bersebelahan)
+ Seret - pilih area persegi panjang (tidak bersebelahan)
+ + seret - tambahkan area persegi panjang ke pilihan
Seret pilihan - pindahkan teks
+ pilihan tarik - salin teks

Ctrl+ A- pindah ke awal paragraf saat ini
Ctrl+ B- pindah ke kiri satu karakter
Ctrl+ D- maju hapus
Ctrl+ E- pindah ke akhir paragraf saat ini
Ctrl+ F- pindah ke kanan satu karakter
Ctrl+ H- hapus
Ctrl+ K- hapus sisa paragraf saat ini
Ctrl+ L- pusatkan jendela pada arus baris
Ctrl+ N- pindah ke bawah satu baris
Ctrl+ O- sisipkan baris baru setelah kursor
Ctrl+ P- pindah ke atas satu baris
Ctrl+ T- transpose (tukar) dua karakter di sekitarnya
Ctrl+ V- pindah ke akhir, lalu ke kiri satu karakter
Ctrl+ Y- tempel teks yang sebelumnya dihapus denganCtrl - K

Tambahkan Optionke Ctrl+ Fatau Ctrl+ Buntuk memindahkan kata alih-alih satu karakter sekaligus.


Sumber daya bagus lainnya adalah halaman ini hcs.harvard.edu/~jrus/Site/System%20Bindings.html
Gourneau

3
Ch menghapus di bash dan di kotak teks Mac OS X Cocoa, tapi itu membantu di emacs.
asmeurer

11

Jawaban lainnya sangat lengkap, tetapi selain itu saya akan menyebutkan bahwa saya hanya mengatur kunci caps lock ke tombol kontrol kedua alih-alih menukarnya.

Selain itu, Anda akan melihat bahwa sebagian besar bidang entri teks di Mac OS X sudah menerima penekanan tombol emacs (^ Awal baris, ^ E akhir baris, ^ P, ^ N, ^ K, ^ Y, dll)

semoga berhasil


6
Anda mungkin mengetahui sesuatu - Saya tidak ingat kapan terakhir kali saya menggunakan caps lock.
Kyle Cronin

11

Saya sangat suka jawaban yang diberikan oleh Kyle Cronin, tetapi saya ingin menambahkan satu hal - pastikan Anda memilih keyboard yang sesuai agar ini berfungsi. Jika Anda memiliki keyboard eksternal yang dicolokkan ke laptop Anda, maka ada kotak drop-down tambahan dan Anda harus melakukan ini untuk kedua keyboard (atau setidaknya untuk keyboard eksternal Anda). Tangkapan layar di bawah ini menunjukkan kotak dialog "Select Keyboard" - Saya telah memilih "Joint Mac Keyboard", yang merupakan cara MacBook mengatakan keyboard eksternal GoldTouch - defaultnya adalah keyboard internal.
Tangkapan layar menampilkan dialog "Pilih Keyboard"

Setelah saya mengetahuinya - ini sangat cocok untuk saya!


9

Jika Anda menggunakan emacs melalui koneksi ssh, atau melalui mesin yang tidak ada di komputer lokal Anda, tombol page up / page down scroll melalui buffer terminal - menurut pengalaman saya, tidak terlalu membantu.

Anda dapat mengatur tombol halaman ke bawah dan halaman ke atas untuk mengirimkan perintah yang sesuai ke emacs. Di emacs, Anda dapat menelusuri buffer emacs seperti ini:

  • Halaman Atas: Ctl-v
  • Halaman Bawah: Esc-v

Jadi, agar terminal mengirimkan perintah ini ke emacs, ikuti petunjuk di atas untuk mengubah tombol Alt untuk Meta. Namun, alih-alih menyetel opsi "gunakan opsi sebagai meta", temukan opsi "turun halaman" dan "naik halaman".

Halaman bawah

Klik dua kali opsi "turun halaman" untuk mengeditnya. Ubah Action menjadi "send string to shell" dan masukkan \ 026 sebagai string. Simpan itu.

Page Up

Klik dua kali tombol "naik halaman" untuk mengeditnya. Ubah Action menjadi "send string to shell" dan masukkan \ 033v sebagai string. Simpan itu.


7

Tidak yakin apakah Anda benar-benar menikah untuk menggunakan Emacs dari terminal, tetapi opsi lain adalah menggunakan Carbon Emacs (favorit saya) dan Aquamacs (sangat mirip Mac). Carbon Emacs menggunakan tombol perintah untuk meta, ini bagus karena Anda dapat melakukan perintah Control-Meta hanya dengan menahan Control dan Command ke bawah alih-alih menekan tombol escape kemudian urutan tombol kontrol.

Selain itu, jika Anda adalah pengguna Emacs yang serius, saya sangat menyarankan agar Anda mendapatkan keyboard yang sesuai untuk pemrograman (yang dapat diprogram ulang dengan sendirinya). Saya menggunakan Kinesis, ini sedikit uang tetapi sangat tahan lama dan cukup bagus.


4

Secara pribadi saya memiliki pengaturan caps lock untuk berperilaku seperti perintah pada preferensi sistem dan kemudian pada file init.el emacs saya memiliki:

(setq mac-command-modifier 'ctrl)

dan ini memungkinkan saya menggunakan caps lock sebagai perintah di sebagian besar aplikasi osx dan sebagai kontrol di emacs. bekerja cukup baik untuk saya.


4

Kegembiraan Anda baru saja dimulai. Trik lainnya termasuk:

  • Gunakan tombol shift kiri dan kanan untuk juga menjadi (dan) untuk mengetik cepat.
  • Petakan ulang kunci fn Anda atau kunci lain menjadi "super".
  • Jadikan caps lock menjadi kontrol, tetapi hanya dengan kunci lain. Dengan sendirinya, itu adalah pelarian.

Baca artikel yang sangat bagus di http://stevelosh.com/blog/2012/10/a-modern-space-cadet/ untuk informasi lebih lanjut.


ini luar biasa! Terima kasih! Saya bahkan tidak berpikir untuk melakukan logika bersyarat untuk tombol capslock. sangat sakit!
wle8300

3

Utas ini dimulai 5 tahun yang lalu dan tidak ada penyebutan ns-win.elatau pembuatan --with-ns. Berikut adalah semua binding kunci yang tersedia (di luar kotak) di Emacs Trunk mulai Oktober 2013. Dan, tentu saja, Anda dapat membuatnya sendiri. Secara pribadi, saya memiliki satu init.eldengan semua binding kunci saya yang dapat digunakan dengan Windows XP melalui Parallels di OSX, dan juga dengan OSX secara native. Karena pengguna dapat menentukan pintasan keyboardnya sendiri, saya tidak merasa perlu untuk memetakan ulang keyboard di preferensi sistem (dengan keyboard Apple AS) kecualimenggunakan keyboard yang tidak menyertakan tombol Command. Tapi, apakah saya akan membuang simpanan keyboard klik IBM saya dengan trackpoint bawaan? Tentu saja tidak. :) Saya membawa keyboard klik IBM saya ke kehidupan berikutnya. Ketegangan tangan apa pun kemungkinan besar disebabkan oleh posisi pergelangan tangan / lengan / siku yang tidak tepat, bukan oleh kontrol pemukulan versus caps lock. Keakuratan ditingkatkan melalui latihan, dan dengan bantuan atasan melihat dari balik bahu Anda untuk melihat bagaimana Anda akan datang - yaitu, sedikit tekanan untuk menjadi lebih produktif :)

(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

Saya telah membuat satu set binding yang cukup lengkap di sini untuk digunakan di luar Terminal.

Secara pribadi, saya tidak dapat menggunakan keyboard laptop mac karena tidak adanya tombol kontrol yang tepat.

Alih-alih, saya telah menggunakan Microsoft Natural Ergonomic Keyboard 4000 selama lebih dari 7 tahun: tombol Ctrl dan Alt yang diposisikan dengan baik dan sangat gemuk, dan setelah mengunduh drivernya, tombol "Start" dan "Application" secara sepele dipetakan ulang ke Mac Kunci cmd, yang juga gendut dan mudah tertekan.

Untuk menghindari masalah ergonomis emacs, saya telah melatih diri saya untuk menggunakan Ctrl, Alt, dan Cmd dengan cara yang sama kita menggunakan Shift - menekannya dengan tangan yang berlawanan dengan yang mengetik tombol sebenarnya. (Artinya, saya membiarkan Caps Lock apa adanya.)


0

Saya mengatur caps lock untuk mengontrol preferensi sistem dan saya memiliki yang berikut di init.el saya untuk mengatur perintah ke meta dan opsi ke super:

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

0

Saya ingin merekomendasikan 2 software Seil dan Karabiner . Dengan hanya menginstal Seil dan mengikuti instruksi dalam perangkat lunak, Anda seharusnya dapat mencapai apa yang Anda inginkan. Dari pengalaman saya, Karabiner lebih kuat. Saya memiliki keyboard Jepang yang tata letaknya berbeda dari yang normal. Saya memiliki beberapa cuplikan yang memetakan ulang dua tombol tambahan pada keyboard saya ke F18 dan F19 untuk penggunaan lain. Anda dapat menggunakan sintaks yang sama untuk mengedit file "private.xml" Anda untuk melakukan lebih banyak hal.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.