Emacs บน MacOS X Leopard การผูกคีย์


103

ฉันเป็นผู้ใช้ Mac และฉันตัดสินใจที่จะเรียนรู้ Emacs ฉันได้อ่านแล้วว่าเพื่อลดความเมื่อยล้าของมือและปรับปรุงความแม่นยำควรสลับปุ่มCTRLและ CAPS LOCKฉันจะทำสิ่งนี้ใน Leopard ได้อย่างไร?

นอกจากนี้ใน Terminal ฉันต้องใช้ESCคีย์เพื่อเรียกใช้เมตา มีวิธีใดบ้างในการรับปุ่ม alt / option เพื่อเรียกใช้ meta แทน?

อัปเดต:แม้ว่าตอนนี้จะกดปุ่มควบคุมได้ง่ายกว่ามาก แต่เมตาคีย์ก็ยังใช้บ่อยพอที่จะทำให้ตำแหน่งบน MacBook และแป้นพิมพ์ Apple ของฉันได้รับความสนใจเช่นกัน อันที่จริงฉันพบว่าปุ่มควบคุมนั้นตีง่ายกว่าจริง ๆ ดังนั้นฉันจึงรีแมปปุ่มควบคุมเพื่อทำหน้าที่เป็นเมตาคีย์ ใครมีวิธีแก้ปัญหาที่ดีกว่า / ได้มาตรฐานกว่านี้ไหม?


4
ดีกว่าที่จะย้ายไปสำหรับapple.stackexchange.com
yetanothercoder

คำตอบ:


163

การสลับ CTRL และ CAPS LOCK

  1. ไปที่System Preferences
  2. เข้าสู่บานหน้าต่างการตั้งค่าแป้นพิมพ์และเมาส์
  3. ในแท็บKeyboardคลิกModifier Keys ...
  4. สลับการกระทำสำหรับCaps Lockและการควบคุม

ข้อความแสดงแทน

ใช้ ALT / OPTION เป็น META

  1. ในแถบเมนูคลิกTerminal
  2. คลิกค่ากำหนด ...
  3. ภายใต้แท็บการตั้งค่าไปที่แท็บแป้นพิมพ์
  4. เลือกช่องที่มีข้อความว่าใช้ตัวเลือกเป็นเมตาคีย์

ข้อความแสดงแทน

แค่นั้นแหละ! คุณควรจะก้าวไปสู่การเป็นปรมาจารย์ Emacs!


8
'ใช้ตัวเลือกเป็นเมตาคีย์' ใช้งานได้ แต่ผลลัพธ์นี้ทำให้ฉันไม่สามารถพิมพ์วงเล็บปีกกาและท่อ "[] {} | ' ฯลฯ เนื่องจากพวกเขาอยู่ใน Option-7 และตัวเลือกตอนนี้ ... แผนที่ดีกับ meta ความคิดใด ๆ ?
Martin Wickman

1
@wic: ตัวละครเหล่านั้นไม่มีกุญแจของตัวเองเหรอ?
Kyle Cronin

1
ไม่ได้อยู่ที่นี่ในยุโรป ด้วยแป้นพิมพ์ภาษานอร์เวย์จะถูกแมปกับ alt- 8 และ 9 และ alt + shift- 8 และ 9
sverrejoh

3
สลับเค้าโครงเมื่อเขียนโค้ด จากนั้นพวกเขาก็ได้รับกุญแจของตัวเองอย่างที่ควรจะเป็น ฉันเป็นคนสวีเดนและฉันไม่จำเป็นต้องพิมพ์อักขระพื้นเมืองของฉันในขณะที่เขียนโค้ด
Per Wiklander

1
@hhh การตั้งค่าเป็นไปตามแป้นพิมพ์ดังนั้นตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่าอย่างถูกต้องสำหรับแป้นพิมพ์ภายนอกของคุณ แต่ใช่เมื่อคุณทำการเปลี่ยนแปลงแล้วควรใช้งานได้ทุกที่ใน OS X
Kyle Cronin

47

สำหรับการอ้างอิงนี่คือการผูกคีย์สำหรับการเลื่อนไปรอบ ๆ ข้อความ:

+ - เลื่อนไปทางซ้ายหนึ่งคำ
+ - เลื่อนไปทางขวาหนึ่งคำ
+ delete- กลับลบหนึ่งคำ
Shift+ + delete- foward ลบหนึ่งคำ
+ - เลื่อนขึ้นหนึ่งย่อหน้า
+ - เลื่อนลงหนึ่งย่อหน้า
+ - ย้ายไปที่จุดเริ่มต้นของบรรทัดปัจจุบัน
+ - เลื่อนไปที่จุดสิ้นสุด ของบรรทัดปัจจุบัน
Shift+ ใด ๆ ข้างต้นขยายการเลือกตามจำนวนที่เหมาะสม

คลิกจากนั้นลาก - เลือกข้อความ
ดับเบิลคลิกแล้วลาก - เลือกข้อความตัดไปที่ปลายคำ
คลิกสามครั้งจากนั้นลาก - เลือกข้อความตัดไปที่ปลายย่อหน้า

Shift+ เลือกข้อความด้วยเมาส์ - เพิ่มตัวเลือก (ติดกัน)
+ เลือกข้อความด้วยเมาส์ - เพิ่มตัวเลือก (ไม่ต่อเนื่องกัน)
+ ลาก - เลือกพื้นที่สี่เหลี่ยม (ไม่ต่อเนื่องกัน)
+ + ลาก - เพิ่มพื้นที่สี่เหลี่ยมในการเลือก
ตัวเลือกลาก - ย้าย ข้อความ
+ ลากการเลือก - คัดลอกข้อความ

Ctrl+ A- ย้ายไปที่จุดเริ่มต้นของย่อหน้าปัจจุบัน
Ctrl+ B- เลื่อนไปทางซ้ายหนึ่งอักขระ
Ctrl+ D- ไปข้างหน้าลบ
Ctrl+ E- ย้ายไปยังจุดสิ้นสุดของย่อหน้าปัจจุบัน
Ctrl+ F- เลื่อนไปทางขวาหนึ่งอักขระ
Ctrl+ H- ลบ
Ctrl+ K- ลบส่วนที่เหลือของย่อหน้าปัจจุบัน
Ctrl+ L- จัดกึ่งกลางหน้าต่างที่ปัจจุบัน บรรทัด
Ctrl+ N- เลื่อนลงหนึ่งบรรทัด
Ctrl+ O- แทรกบรรทัดใหม่หลังเคอร์เซอร์
Ctrl+ P- เลื่อนขึ้นหนึ่งบรรทัด
Ctrl+ T- เปลี่ยน (สลับ) อักขระรอบ ๆ สองตัว
Ctrl+ V- เลื่อนไปที่จุดสิ้นสุดจากนั้นเหลือหนึ่งอักขระ
Ctrl+ Y- วางข้อความที่ลบก่อนหน้านี้ด้วยCtrl - K

เพิ่มOptionไปที่Ctrl+ FหรือCtrl+ Bเพื่อย้ายคำแทนทีละอักขระ


แหล่งข้อมูลที่ดีอีกอย่างคือหน้านี้hcs.harvard.edu/~jrus/Site/System%20Bindings.html
Gourneau

3
Ch จะลบใน bash และในกล่องข้อความ MacOS X Cocoa แต่จะช่วยใน emacs
asmeurer

11

คำตอบอื่น ๆ นั้นสมบูรณ์มาก แต่นอกจากนี้ฉันยังพูดถึงว่าฉันเพิ่งตั้งค่าปุ่ม caps lock เป็นปุ่มควบคุมที่สองแทนที่จะสลับกัน

นอกจากนี้คุณจะสังเกตเห็นว่าช่องป้อนข้อความส่วนใหญ่ใน Mac OS X ยอมรับการกดแป้น emac แล้ว (^ จุดเริ่มต้นของบรรทัด ^ E ท้ายบรรทัด ^ P ^ N ^ K ^ Y ฯลฯ )

โชคดี


6
คุณอาจกำลังทำอะไรบางอย่าง - ฉันจำครั้งสุดท้ายที่ใช้แคปล็อกไม่ได้
Kyle Cronin

11

ฉันชอบคำตอบของ Kyle Cronin มาก แต่ฉันต้องการเพิ่มสิ่งหนึ่ง - ตรวจสอบให้แน่ใจว่าคุณได้เลือกแป้นพิมพ์ที่เหมาะสมเพื่อให้ใช้งานได้ หากคุณเสียบแป้นพิมพ์ภายนอกเข้ากับแล็ปท็อปของคุณจะมีช่องแบบเลื่อนลงเพิ่มเติมและคุณจะต้องดำเนินการนี้กับแป้นพิมพ์ทั้งสอง (หรืออย่างน้อยก็สำหรับแป้นพิมพ์ภายนอกของคุณ) ภาพหน้าจอด้านล่างแสดงกล่องโต้ตอบ "เลือกแป้นพิมพ์" - ฉันได้เลือก "แป้นพิมพ์ร่วมสำหรับ Mac" ซึ่งเป็นวิธีการพูดของแป้นพิมพ์ภายนอก GoldTouch ของ MacBook - ค่าเริ่มต้นคือแป้นพิมพ์ในตัว
ภาพหน้าจอแสดงกล่องโต้ตอบ "เลือกแป้นพิมพ์"

เมื่อฉันคิดออกแล้ว - สิ่งนี้เหมาะกับฉันมาก!


9

หากคุณใช้ emac ผ่านการเชื่อมต่อ ssh หรือผ่านเครื่องที่ไม่ได้อยู่ในเครื่องคอมพิวเตอร์ของคุณปุ่มเลื่อนหน้าขึ้น / ลงจะเลื่อนผ่านบัฟเฟอร์เทอร์มินัล - จากประสบการณ์ของฉันไม่เป็นประโยชน์มากเกินไป

คุณสามารถตั้งค่าหน้าลงและปุ่มเลื่อนหน้าเพื่อส่งคำสั่งที่เหมาะสมไปยัง emacs ใน emacs คุณสามารถเลื่อนดูบัฟเฟอร์ emacs ได้ดังนี้:

  • เลื่อนหน้าขึ้น: Ctl-v
  • เลื่อนหน้าลง: Esc-v

ดังนั้นเพื่อให้เทอร์มินัลส่งคำสั่งเหล่านี้ไปยัง emacs ให้ทำตามคำแนะนำด้านบนเพื่อเปลี่ยนปุ่ม Alt สำหรับ Meta อย่างไรก็ตามแทนที่จะตั้งค่าตัวเลือก "use option as meta" ให้ค้นหาตัวเลือก "page down" และ "page up"

เลื่อนหน้าลง

ดับเบิลคลิกตัวเลือก "เลื่อนหน้าลง" เพื่อแก้ไข เปลี่ยนActionเป็น"send string to shell"และป้อน\ 026เป็นสตริง บันทึกไว้

เลื่อนหน้าขึ้น

ดับเบิลคลิกที่ปุ่ม "page up" เพื่อแก้ไข เปลี่ยนActionเป็น"send string to shell"และป้อน\ 033vเป็นสตริง บันทึกไว้


7

ไม่แน่ใจว่าคุณแต่งงานแล้วโดยใช้ Emacs จากเทอร์มินัลหรือไม่ แต่อีกทางเลือกหนึ่งคือใช้ Carbon Emacs (ที่ฉันชอบ) และ Aquamacs (เหมือน Mac มาก) Carbon Emacs ใช้คีย์คำสั่งสำหรับเมตานี่เป็นสิ่งที่ดีเพราะคุณสามารถทำคำสั่ง Control-Meta ได้เพียงแค่กด Control และ Command ค้างไว้แทนที่จะกดปุ่ม Escape ครั้งแรกจากนั้นตามลำดับคีย์ควบคุม

นอกจากนี้หากคุณเป็นผู้ใช้ Emacs ที่จริงจังฉันขอแนะนำให้คุณใช้แป้นพิมพ์ที่เหมาะสำหรับการเขียนโปรแกรม (นั่นคือแป้นพิมพ์ที่สามารถตั้งโปรแกรมใหม่ได้อย่างสมบูรณ์ด้วยตัวเอง) ฉันใช้ Kinesis มันเป็นเงินเล็กน้อย แต่มีความทนทานสูงและค่อนข้างดี


4

โดยส่วนตัวแล้วฉันตั้งค่า caps lock ให้ทำงานเหมือนคำสั่งในการตั้งค่าระบบจากนั้นในไฟล์ emacs init.el ของฉันมี:

(setq mac-command-modifier 'ctrl)

และสิ่งนี้ช่วยให้ฉันใช้ caps lock เป็นคำสั่งในแอปพลิเคชัน osx ส่วนใหญ่และเป็นการควบคุมใน emacs ทำงานได้ดีพอสำหรับฉัน


4

ความสุขของคุณเพิ่งเริ่มต้น เทคนิคอื่น ๆ ได้แก่ :

  • ใช้แป้น Shift ซ้ายและขวาเพื่อเป็น (และ) สำหรับการพิมพ์ที่รวดเร็ว
  • ทำการแมปคีย์ fn หรือคีย์อื่นให้เป็น "super"
  • ทำให้ caps lock เป็นตัวควบคุม แต่ต้องใช้คีย์อื่นเท่านั้น ด้วยตัวของมันเองมันคือการหลบหนี

อ่านบทความดีๆได้ที่http://stevelosh.com/blog/2012/10/a-modern-space-cadet/สำหรับข้อมูลเพิ่มเติม


มันสุดยอดมาก! ขอบคุณ! ฉันไม่ได้คิดที่จะทำตรรกะเงื่อนไขสำหรับปุ่ม capslock ป่วยหนัก!
wle8300

3

กระทู้นี้ถูกตั้งเมื่อ 5 ปีที่ผ่านมาและมีการกล่าวถึงไม่มีหรือสร้างns-win.el --with-nsนี่คือการผูกคีย์ทั้งหมดที่พร้อมใช้งาน (นอกกรอบ) ใน Emacs Trunk ณ เดือนตุลาคม 2013 และแน่นอนคุณสามารถสร้างของคุณเองได้ โดยส่วนตัวฉันมีหนึ่งเดียวที่init.elมีการผูกคีย์ทั้งหมดของฉันที่สามารถใช้กับ Windows XP ผ่าน Parallels บน OSX และ OSX โดยกำเนิด เนื่องจากผู้ใช้สามารถกำหนดแป้นพิมพ์ลัดของตนเองได้ฉันจึงไม่จำเป็นต้องทำการแมปแป้นพิมพ์ใหม่ในการตั้งค่าระบบ (ด้วยแป้นพิมพ์ของ Apple US) เว้นแต่โดยใช้แป้นพิมพ์ที่ไม่มีแป้น Command แต่ฉันจะทิ้งที่ซ่อนของคีย์บอร์ด IBM clicky ที่มี trackpoint ในตัวหรือไม่? ไม่แน่นอน :) ฉันใช้คีย์บอร์ด IBM Clicky กับตัวเองในชีวิตหน้า อาการตึงมือมักเกิดจากตำแหน่งข้อมือ / แขน / ข้อศอกที่ไม่เหมาะสมไม่ใช่จากการกดปุ่มควบคุมกับแคปล็อค ความแม่นยำได้รับการปรับปรุงให้ดีขึ้นผ่านการฝึกฝนและด้วยความช่วยเหลือของเจ้านายที่มองข้ามไหล่ของคุณเพื่อดูว่าคุณมาได้อย่างไรนั่นคือความกดดันเล็กน้อยเพื่อให้ได้ประสิทธิผลมากขึ้น :)

(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

ฉันได้สร้างชุดการผูกที่ค่อนข้างครอบคลุมที่นี่สำหรับใช้ภายนอก Terminal

โดยส่วนตัวแล้วฉันไม่สามารถใช้แป้นพิมพ์แล็ปท็อป mac ได้เนื่องจากไม่มีปุ่มควบคุมที่ถูกต้อง

แต่ฉันใช้Microsoft Natural Ergonomic Keyboard 4000มานานกว่า 7 ปีแล้วมันมีปุ่ม Ctrl และ Alt ที่อยู่ในตำแหน่งที่ดีจริงๆและหลังจากดาวน์โหลดไดรเวอร์แล้วปุ่ม "Start" และ "Application" จะถูกแมปใหม่กับ Mac เล็กน้อย ที่สำคัญ Cmd ซึ่งอ้วนและซึมเศร้าได้ง่าย

เพื่อหลีกเลี่ยงความกังวลด้านการยศาสตร์ของ emac ฉันได้ฝึกฝนตัวเองให้ใช้ Ctrl, Alt และ Cmd แบบเดียวกับที่เราใช้ Shift - กดพวกเขาด้วยมือตรงข้ามกับแป้นที่พิมพ์จริง (นั่นคือฉันแค่ปล่อย Caps Lock ตามที่เป็นอยู่)


0

ฉันตั้งค่า caps lock เพื่อควบคุมในการตั้งค่าระบบและฉันมีสิ่งต่อไปนี้ใน init.el ของฉันเพื่อตั้งค่าคำสั่งเป็น meta และตัวเลือกเป็น super:

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

0

ผมอยากจะแนะนำ 2 โปรแกรม SeilและKarabiner เพียงแค่ติดตั้ง Seil และปฏิบัติตามคำแนะนำในซอฟต์แวร์คุณก็จะสามารถบรรลุสิ่งที่คุณต้องการได้ จากประสบการณ์ของฉัน Karabiner มีพลังมากกว่า ฉันมีแป้นพิมพ์ภาษาญี่ปุ่นที่มีเค้าโครงแตกต่างจากแป้นพิมพ์ปกติ ฉันมีตัวอย่างข้อมูลที่รีแมปปุ่มพิเศษสองปุ่มบนแป้นพิมพ์เป็น F18 และ F19 สำหรับการใช้งานอื่น ๆ คุณสามารถใช้ไวยากรณ์เดียวกันเพื่อแก้ไขไฟล์ "private.xml" เพื่อทำสิ่งต่างๆได้มากขึ้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.