Mac OS X Leopard tuş bağlamalarında Emacs


104

Ben bir Mac kullanıcısıyım ve Emacs öğrenmeye karar verdim. Ben ettik okumak eli yorgunluğunu azaltmak ve doğruluğunu geliştirmek için bu CTRLve CAPS LOCKanahtarlar takas edilmelidir. Bunu Leopard'da nasıl yaparım?

Ayrıca, Terminal'de ESCmeta çağırmak için anahtarı kullanmam gerekiyor. Bunun yerine meta çağırmak için alt / option anahtarını almanın bir yolu var mı?

güncelleme: Kontrol tuşuna basmak artık çok daha kolay olsa da, meta anahtar da yeterince sık kullanılıyor ki MacBook ve Apple Klavyemdeki konumu da dikkati hak ediyor. Aslında, kontrol anahtarına basmanın aslında daha kolay olduğunu fark ettim, bu yüzden bir meta anahtar görevi görecek şekilde kontrol anahtarımı yeniden eşledim. Daha iyi / daha standart bir çözümü olan var mı?


Yanıtlar:


163

CTRL ve CAPS LOCK'u Değiştirme

  1. Gidin Sistem Tercihleri
  2. Klavye ve Fare tercih bölmesine girin
  3. In Klavye sekmesine tıklayın Değiştirici Keys ...
  4. Caps Lock ve Control için eylemleri değiştirin .

alternatif metin

ALT / OPTION'ı META olarak kullanma

  1. Menü çubuğunda Terminal'i tıklayın.
  2. Tercihler'i tıklayın ...
  3. Ayarlar sekmesinin altında Klavye sekmesine gidin
  4. Seçeneği meta anahtar olarak kullan etiketli kutuyu işaretleyin

alternatif metin

Bu kadar! Emacs ustası olma yolunda emin adımlarla ilerlemelisiniz!


8
'Seçeneği meta anahtar olarak kullan' işe yarıyor, ancak bu benim parantez ve boru yazamama neden oluyor '[] {} |' vb Option-7'de olduklarından ve şimdi seçenek ... meta ile iyi eşleşir. Herhangi bir fikir?
Martin Wickman

1
@wic: Bu karakterlerin kendi anahtarları yok mu?
Kyle Cronin

1
Burada Avrupa'da değil.
Norveççe

3
Kodlama sırasında düzeni değiştirin. Sonra gerektiği gibi kendi anahtarlarını alırlar. Ben İsveçliyim ve kodlama sırasında asla yerli karakterlerimi yazma ihtiyacı duymuyorum.
Wiklander için

1
@hhh Ayarlar klavye başınadır, bu nedenle harici klavyeniz için doğru ayarladığınızdan emin olun. Ama evet, değişikliği
Kyle Cronin

47

Referans için, metinde dolaşmak için temel bağlamalar şunlardır:

+ - bir kelime sola git
+ - bir kelime sağa git
+ delete- geri bir kelimeyi sil
Shift+ + delete- ileri bir kelimeyi sil
+ - bir paragraf yukarı git
+ - bir paragraf aşağı git
+ - şu anki satırın başına git
+ - sona git mevcut satırın
Shift+ yukarıdakilerden herhangi biri seçimi uygun miktarda genişlet

Tıklayın ve sürükleyin - metni seçin
Çift tıklayın ve sürükleyin - metni seçin, kelime uçlarına
kaydırın Üç kez tıklayın ve sürükleyin - metni seçin, paragraf uçlarına kaydırın

Shift+ Fareyle metin seçin - seçime ekleyin (bitişik)
+ Fareyle metin seçin - seçime ekleyin (bitişik olmayan)
+ Sürükle - dikdörtgen alanı seçin (bitişik olmayan)
+ + sürükleyin - seçime dikdörtgen alan ekleyin Seçimi
sürükle - taşı metin
+ seçimi sürükle - metni kopyala

Ctrl+ A- hamle geçerli paragrafın başlamak
Ctrl+ Bhamle bir karakter bıraktı -
Ctrl+ Dileri silme -
Ctrl+ E- Geçerli paragrafın sonuna hareket
Ctrl+ Fdoğru bir karakter hareket -
Ctrl+ H- silme
Ctrl+ K- Geçerli paragraf silme kalanı
Ctrl+ Lakımı merkezi pencere - satır
Ctrl+ N- bir satır aşağı git
Ctrl+ O- imleçten sonra yeni satır ekle
Ctrl+ P- bir satır yukarı git
Ctrl+ T- çevreleyen iki karakteri transpoze et (takas et)
Ctrl+ V- sona git, sonra bir karakter sola git
Ctrl+ Y- önceden silinmiş metni yapıştırCtrl - K

Ekle Optioniçin Ctrl+ Fveya Ctrl+ Bseferinde bir karakter yerine bir kelime taşımak için.


Bir başka iyi kaynak da bu sayfadır hcs.harvard.edu/~jrus/Site/System%20Bindings.html
Gourneau

3
Ch, bash'ta ve Mac OS X Cocoa metin kutularında siler, ancak emac'lerde yardımcı olur.
asmeurer

11

Diğer cevap çok tamamlandı, ancak ek olarak, büyük harf kilidi anahtarını değiştirmek yerine ikinci bir kontrol anahtarına ayarladığımı da belirtmek isterim.

Ayrıca, Mac OS X'teki metin giriş alanlarının büyük çoğunluğunun emacs tuş vuruşlarını kabul ettiğini fark edeceksiniz (^ A satır başı, ^ E satır sonu, ^ P, ^ N, ^ K, ^ Y, vb.)

iyi şanslar


6
Bir şeye bağlı olabilirsiniz - Kullanıcıların en son ne zaman büyük harf kilitlediğini hatırlayamıyorum.
Kyle Cronin

11

Kyle Cronin tarafından sağlanan cevabı gerçekten çok beğendim, ancak bir şey eklemek istiyorum - bunun çalışması için uygun klavyeyi seçtiğinizden emin olun. Dizüstü bilgisayarınıza takılı harici bir klavyeniz varsa, ek bir açılır kutu vardır ve bunu her iki klavye için (veya en azından harici klavyeniz için) yapmanız gerekecektir. Aşağıdaki ekran görüntüsü "Klavye Seç" iletişim kutusunu göstermektedir - MacBook'un GoldTouch harici klavye demenin yolu olan "Birleşik Mac Klavyesi" ni seçtim - varsayılan, yerleşik klavyedir.
"Klavye Seç" iletişim kutusunu gösteren ekran görüntüsü

Bunu bir kez anladığımda - bu benim için harika çalışıyor!


9

Emac'leri bir ssh bağlantısı üzerinden veya yerel bilgisayarınızda olmayan bir makine üzerinden kullanırsanız, sayfa yukarı / sayfa aşağı düğmeleri terminal arabelleğinde kayar - tecrübelerime göre, pek yardımcı olmuyor.

Emacs'e uygun komutları göndermek için sayfa aşağı ve sayfa yukarı düğmelerini ayarlayabilirsiniz. Emacs'de, emacs arabelleğinde şu şekilde gezinebilirsiniz:

  • Sayfa Yukarı: Ctl-v
  • Sayfa Aşağı: Esc-v

Bu nedenle, terminalin bu komutları emacs'e göndermesini sağlamak için, Meta için Alt tuşlarını değiştirmek için yukarıdaki talimatları izleyin. Ancak, "seçeneği meta olarak kullan" seçeneğini ayarlamak yerine "sayfa aşağı" ve "sayfa yukarı" seçeneklerini bulun.

Sayfa Aşağı

Düzenlemek için "sayfa aşağı" seçeneğini çift tıklayın. Değişim Eylem için "kabuk gönderme dize" ve girmek \ 026 dize. Onu kurtar.

Sayfa yukarı

Düzenlemek için "sayfa yukarı" düğmesini çift tıklayın. Değişim Eylem için "kabuk gönderme dize" ve girmek \ 033v dize. Onu kurtar.


7

Terminalden Emacs kullanmakla tamamen evli olup olmadığınızdan emin değilim, ancak başka bir seçenek Carbon Emacs (benim favorim) ve Aquamacs (çok Mac benzeri) kullanmaktır. Carbon Emacs meta için komut anahtarını kullanır, bu güzeldir çünkü Control-Meta komutlarını önce escape sonra kontrol tuşu dizisine basmak yerine Control ve Command tuşunu basılı tutarak yapabilirsiniz.

Ayrıca, ciddi bir Emacs kullanıcısıysanız, programlama için uygun (kendi başına tamamen yeniden programlanabilen) bir klavye edinmenizi tavsiye ederim. Kinesis kullanıyorum, biraz para ama son derece dayanıklı ve oldukça hoşlar.


4

Kişisel olarak, sistem tercihlerinde komut gibi davranmak için setup caps lock'a sahibim ve ardından emacs init.el dosyamda:

(setq mac-komut-değiştirici 'ctrl)

ve bu, çoğu osx uygulamasında komut olarak ve emacs'de kontrol olarak büyük harf kilidi kullanmama izin veriyor. benim için yeterince iyi çalışıyor.


4

Sevinciniz daha yeni başlıyor. Diğer püf noktaları şunları içerir:

  • Hızlı yazma için (ve) olmak üzere sol ve sağ kaydırma tuşlarını kullanın.
  • Fn anahtarınızı veya başka bir anahtarı "süper" olacak şekilde yeniden eşleyin.
  • Büyük harf kilidini kontrol edin, ancak yalnızca başka bir anahtarla yapın. Kendi başına bir kaçış.

Daha fazla bilgi için http://stevelosh.com/blog/2012/10/a-modern-space-cadet/ adresindeki mükemmel makaleyi okuyun .


bu harika! Teşekkürler! Capslock düğmesi için bu koşullu mantığı yapmayı düşünmedim bile. çok hasta!
wle8300

3

Bu konu 5 yıl önce başladı ve bundan bahsedilmiyor ns-win.elveya inşa edilmiyor --with-ns. Ekim 2013 itibarıyla Emacs Trunk'ta bulunan (kutudan çıkar çıkmaz) tüm anahtar bağlamaları burada bulabilirsiniz. Ve tabii ki kendinizinkini de oluşturabilirsiniz. Kişisel olarak, init.elOSX üzerinde Parallels aracılığıyla Windows XP ile ve ayrıca OSX ile yerel olarak kullanılabilen tüm anahtar bağlamalarıma sahip bir tane var . Kullanıcı, / onu kendi klavye kısayolları tanımlayabilirsiniz beri, (bir Apple ABD klavye ile birlikte) sistem tercihlerinde klavye eşleştirmek için gerek görmüyorum süreceKomut tuşunu içermeyen bir klavye kullanarak. Ancak, izleme noktası yerleşik olan IBM tıklamalı klavye zulamı çöpe atar mıydım? Tabii ki değil. :) IBM clicky klavyemi bir sonraki hayata taşıyacağım. Herhangi bir el gerginliği, büyük olasılıkla uygun olmayan bilek / kol / dirsek pozisyonundan kaynaklanır, kontrole karşı kapak kilidine vurmaktan değil. Doğruluk, alıştırma yoluyla ve nasıl ilerleyeceğinizi görmek için omzunuzun üzerinden bakan bir patronun yardımıyla geliştirilir - yani, daha üretken olmak için biraz baskı :)

(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

Burada , Terminal dışında kullanım için oldukça kapsamlı bir bağlantı seti oluşturdum .

Şahsen, doğru kontrol tuşunun olmaması nedeniyle mac dizüstü bilgisayar klavyesini kullanamıyorum.

Bunun yerine, Microsoft Natural Ergonomic Keyboard 4000'i 7 yıldan fazla bir süredir kullanıyorum: gerçekten şişman, iyi konumlandırılmış Ctrl ve Alt tuşlarına sahip ve sürücülerini indirdikten sonra "Başlat" ve "Uygulama" tuşları önemsiz bir şekilde Mac'e yeniden eşleniyor Aynı zamanda şişman ve kolayca basılabilen Cmd tuşu.

Emacs ergonomik kaygılardan kaçınmak için kendimi Ctrl, Alt ve Cmd'yi Shift'i kullandığımız gibi kullanacak şekilde eğittim - gerçek anahtarı yazanın karşısındaki el ile onlara bastırdım. (Yani, Caps Lock'u olduğu gibi bırakıyorum.)


0

Sistem tercihinde kontrol etmek için büyük harf kilidini ayarladım ve init.el dosyamda komutu meta ve seçeneği süper olarak ayarlamak için aşağıdakilere sahibim:

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

0

Seil ve Karabiner olmak üzere 2 adet yazılım önermek istiyorum . Seil'i basitçe kurarak ve yazılımdaki talimatları izleyerek, istediğinizi başarabilmelisiniz. Tecrübelerime göre Karabiner daha güçlü. Düzeni normal olanlardan farklı bir Japon klavyem var. Biraz alabilir pasajını diğer kullanımlar için F18 ve F19 benim klavyede iki ekstra tuşları remaps. Daha fazla şey yapmak için "private.xml" dosyanızı düzenlemek için aynı sözdizimini kullanabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.