Mac OS X LeopardキーバインディングのEmacs


104

私はMacユーザーで、Emacsを学ぶことにしました。私がしまし読み手の負担を軽減し、精度を向上させることCTRLCAPS LOCK、キーが交換されなければなりません。Leopardでこれを行うにはどうすればよいですか?

また、ターミナルでは、ESCキーを使用してメタを呼び出す必要があります。代わりにalt / optionキーを取得してメタを呼び出す方法はありますか?

更新:コントロールキーの方がヒットしやすくなりましたが、メタキーも頻繁に使用されるので、MacBookやAppleキーボードでの位置も注目に値します。実際、コントロールキーの方が実際にはヒットしやすいので、コントロールキーをメタキーとして機能するように再マップしました。誰かがより良い/より標準的なソリューションを持っていますか?


4
それがためにそれを移動する方が良いでしょうapple.stackexchange.com
yetanothercoder

回答:


163

CTRLとCAPS LOCKの入れ替え

  1. システム環境設定に移動します
  2. 入力キーボードとマウス環境設定パネルを
  3. ではキーボード ]タブ、クリック修飾キーを...
  4. Caps LockControlのアクションを入れ替えます。

代替テキスト

ALT / OPTIONをMETAとして使用する

  1. メニューバーで、[ ターミナル ]をクリックします。
  2. [ 設定...]をクリックします
  3. [設定 ]タブで、[ キーボード ] タブに移動します
  4. [オプションをメタキーとして使用する]チェックボックスをオンにします

代替テキスト

それでおしまい!あなたはEmacsマスターになるための準備が整っているはずです!


8
「メタキーとしてオプションを使用」は機能しますが、これにより、中括弧やパイプを入力できなくなります[[] {} |] オプション-7とオプションが追加されたため、メタにマップされます。何か案は?
マーティンウィックマン、

1
@wic:それらの文字には独自のキーがないのですか?
カイル・クロニン、

1
ここヨーロッパではありません。ノルウェーのキーボードを使って、彼らはとALT + SHIFT-8および9のAlt- 8および9にマッピングされている
sverrejoh

3
コーディング時にレイアウトを切り替えます。それから彼らは彼らがするように彼ら自身のキーを取得します。私はスウェーデン語で、コーディング中にネイティブキャラクターを入力する必要はありません。
Wiklanderによる11

1
@hhh設定はキーボードごとに行われるため、外部キーボードに正しく設定されていることを確認してください。しかし、あなたが変更を加えた後、はい、それはOS Xでどこでも動作するはずです
カイルクローニン

47

参考までに、テキストを移動するためのキーバインディングを以下に示します。

+ -動きは一つの単語左
+ 右のいずれかの単語の動きを-
+ delete-バックデリート1ワード
Shift+ + delete-フォワードデリート1ワード
+ - 1つの段落まで移動
+ - 1つの段落下に移動
+ 現在の行の先頭に移動-
+ -エンドへの移行を現在の行
Shift+上記のいずれかを適切な量だけ選択範囲を拡張

クリックしてドラッグ-テキストを選択
ダブルクリックしてドラッグ-テキストを選択し、単語の末尾に
折り返すトリプルクリックしてドラッグ-テキストを選択し、段落の末尾に折り返す

Shiftマウスで+テキストを選択-選択(連続)に追加
+マウスでテキストを選択-選択範囲に追加(非連続)
+ドラッグ-矩形領域を選択して(非連続)
+ +ドラッグ-選択に矩形領域を追加する
オレンジ色の選択-移動テキスト
+選択範囲をドラッグ-テキストをコピー

Ctrl+ A-この動きは、現在の段落の開始まで
Ctrl+ B動きが1文字左-
Ctrl+ D転送、削除-
Ctrl+ E-現在の段落の末尾に移動
Ctrl+ F右1文字を動かす-
Ctrl+ H-削除
Ctrl+ K-現在の段落の削除残り
Ctrl+ L電流に中央のウィンドウを-ライン
Ctrl+ N- 1行下に移動
Ctrl+ Oカーソルの後に新しい行の挿入-
Ctrl+ P- 1行上移動
Ctrl+ T転置(スワップ)は2つの周囲の文字-
Ctrl+ V-最後に移動し、1文字左
Ctrl+ Y以前に削除されたテキストを貼り付けを-Ctrl - K

+ または+ に追加Optionして、一度に文字ではなく単語を移動します。CtrlFCtrlB


別の優れたリソースは、このページhcs.harvard.edu/~jrus/Site/System%20Bindings.html
Gourneau

3
ChはbashおよびMac OS X Cocoaテキストボックスで削除しますが、emacsで役立ちます。
asmeurer 2012年

11

もう1つの答えは非常に完全でしたが、さらに、Caps Lockキーを入れ替えるのではなく、2番目のコントロールキーに設定しただけです。

また、Mac OS Xのテキスト入力フィールドの大部分はすでにemacsキーストローク(^ A行頭、^ E行末、^ P、^ N、^ K、^ Yなど)を受け入れていることに気付くでしょう。

幸運を


6
あなたは何かに気づいているかもしれません-私が前回Caps Lockを使用したのを思い出せません。
カイルクローニン

11

カイル・クローニンの答えが本当に好きですが、1つ追加したいと思います。これが機能するために適切なキーボードを選択していることを確認してください。ノートパソコンに外部キーボードが接続されている場合は、追加のドロップダウンボックスがあり、両方のキーボード(または少なくとも外部キーボード)でこれを行う必要があります。次のスクリーンショットは、[キーボードの選択]ダイアログボックスを示しています。MacBookのGoldTouch外部キーボードの言い方である[ジョイントMacキーボード]を選択しました-デフォルトは組み込みキーボードです。
「キーボードの選択」ダイアログを示すスクリーンショット

それがわかったら、これは私にとってはうまくいきます!


9

ssh接続を介して、またはローカルコンピューター上にないマシンを介してemacsを使用する場合、ページアップ/ページダウンボタンはターミナルバッファーをスクロールします-私の経験では、あまり役に立ちません。

ページダウンボタンとページアップボタンを設定して、適切なコマンドをemacsに送信できます。emacsでは、次のようにemacsバッファをスクロールできます。

  • Page Up:Ctl-v
  • Page Down:Esc-v

したがって、端末にこれらのコマンドをemacsに送信させるには、上記の手順に従ってメタのAltキーを変更します。ただし、「オプションをメタとして使用」オプションを設定する代わりに、「ページダウン」および「ページアップ」オプションを見つけてください。

ページダウン

「ページダウン」オプションをダブルクリックして編集します。アクション「文字列をシェルに送信」に変更し、\ 026と入力しますし、文字列としてをします。それを保存。

ページアップ

「ページアップ」ボタンをダブルクリックして編集します。Action「send string to shell」に変更し、文字列として\ 033vを入力します。それを保存。


7

端末からEmacsを完全に使用するかどうかはわかりませんが、別のオプションとして、Carbon Emacs(私のお気に入り)とAquamacs(非常にMacのようなもの)を使用することもできます。Carbon Emacsはメタにコマンドキーを使用します。これは、最初にエスケープを押してからコントロールキーシーケンスを押す代わりに、コントロールとコマンドを押し続けるだけでControl-Metaコマンドを実行できるため便利です。

また、真剣なEmacsユーザーであれば、プログラミングに適したキーボード(つまり、それ自体で完全に再プログラム可能なキーボード)を入手することを強くお勧めします。私はキネシスを使用していますが、それは少しのお金ですが、それらは非常に耐久性があり、とてもいいです。


4

個人的には、システム環境設定でコマンドのように動作するように設定されたcaps lockがあり、次にemacsのinit.elファイルで次のように設定します。

(setq mac-command-modifier 'ctrl)

これにより、ほとんどのosxアプリケーションではコマンドとして、またemacsではコントロールとして、caps lockを使用できます。私には十分に機能します。


4

あなたの喜びは始まったばかりです。その他のトリックは次のとおりです。

  • 左と右のシフトキーを使用して(と)を高速に入力します。
  • fnキーまたは別のキーを「スーパー」に再マップします。
  • Caps Lockを制御できるようにしますが、別のキーを使用する必要があります。それ自体が脱出です。

詳細については、http://stevelosh.com/blog/2012/10/a-modern-space-cadet/の優れた記事をご覧ください


これはすごい!どうも!capslockボタンに対してその条件付きロジックを実行することさえ考えていませんでした。病気だ!
wle8300 2016年

3

このスレッドは5年前に開始されns-win.el、ビルドやビルドについての言及はありません--with-ns。2013年10月現在、Emacsトランクで(すぐに使用できる)キーバインディングがすべて利用可能です。もちろん、独自のキーバインディングを作成することもできます。個人的にinit.el OS X上のParallelsを介してWindows XPで、またOSXでネイティブに使用できるすべてのキーバインディングます。ユーザーが彼/彼女の自身のキーボードショートカットを定義することができますので、私は(AppleのUSキーボードで)システム環境設定でキーボードを再マップする必要が表示されない場合を除きコマンドキーを含まないキーボードを使用する。しかし、トラックポイントが組み込まれているIBMのクリック感のあるキーボードを隠してしまいますか?もちろん違います。:)私はIBMのクリック感のあるキーボードを次の人生に連れていきます。手に負担がかかるのは、手首/腕/肘の位置が不適切なためであり、コントロールをキャップスロックで叩いた場合ではありません。精度は練習によって改善され、上司が肩越しに見てどのように進んでいるのかを確認します。つまり、生産性を上げるための少しのプレッシャーです:)

(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

ここでは、ターミナルで使用するためのかなり包括的なバインディングセットを作成しました。

個人的には、正しいコントロールキーがないため、Macラップトップのキーボードを使用できません。

代わりに、私は7年以上Microsoft Natural Ergonomic Keyboard 4000を使用しています。これは、かなり太く、適切に配置されたCtrlキーとAltキーがあり、そのドライバーをダウンロードした後、「スタート」キーと「アプリケーション」キーは簡単にMacに再マッピングされますCmdキー。これも太っていて簡単に押すことができます。

emacsのエルゴノミックな問題を回避するために、Ctrl、Alt、およびCmdをShiftと同じように使用するようにトレーニングしました。実際のキーを入力する手と反対の手で押します。(つまり、Caps Lockはそのままにしておきます。)


0

caps lockをシステムプリファレンスで制御するように設定し、コマンドをメタに、オプションをsuperに設定するために、init.elに次のようにします。

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

0

SeilKarabinerの 2つのソフトウェアをお勧めし ます。Seilをインストールし、ソフトウェアの指示に従うだけで、目的を達成できます。私の経験から、カラビナはより強力です。レイアウトが通常と違う日本語キーボードを持っています。キーボードの2つの追加キーをF18とF19に他の用途に再マッピングするスニペットがあります。同じ構文を使用して「private.xml」ファイルを編集し、さらに多くのことを行うことができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.