web-dev-qa-db-ja.com

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

私はMacユーザーで、Emacsを学ぶことにしました。 読み取り 手の負担を減らして精度を向上させるために CTRL そして CAPS LOCK キーを交換する必要があります。 Leopardでこれを行うにはどうすればよいですか?

また、ターミナルでは、 ESC メタを呼び出すキー。代わりにメタを呼び出すためにalt/optionキーを取得する方法はありますか?

update:コントロールキーの方が簡単にヒットするようになりましたが、メタキーも頻繁に使用され、MacBookでの位置とAppleキーボードも注目に値します。実際、コントロールキーの方が実際にヒットしやすいことがわかっているので、コントロールキーをリマップしてメタキーとして機能させます。 ?

103
Kyle Cronin

CTRLとCAPS LOCKの入れ替え

  1. システム環境設定に移動します
  2. Keyboard&Mouse設定ペインを入力します
  3. キーボードタブで、修飾キー...をクリックします
  4. Caps LockおよびControlのアクションを交換します。

alt text

METとしてALT/OPTIONを使用

  1. メニューバーで、Terminalをクリックします
  2. Preferences ...をクリックします
  3. Settingsタブで、Keyboardタブに移動します
  4. というラベルの付いたボックスをオンにしますメタキーとしてオプションを使用します

alt text

それだけです!Emacsマスターになるための準備は万端です!

161
Kyle Cronin

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

 +  -1単語左に移動する
 +  -単語を1つ右に移動する
 + delete -戻る1つのWord
Shift +  + delete -1ワード先に削除
 +  -1段落上に移動する
 +  -1段落下に移動する
 +  -現在の行の先頭に移動
 +  -現在の行の最後に移動する
Shift +上記のいずれも選択を適切な量だけ拡張します

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

Shift +マウスでテキストを選択-選択に追加(連続)
 +マウスでテキストを選択-選択に追加(非連続)
 +ドラッグ-長方形の領域を選択します(不連続)
 +  +ドラッグ-長方形の領域を選択範囲に追加
選択範囲をドラッグ-テキストを移動
 +選択をドラッグ-テキストをコピー

Ctrl + A -現在の段落の先頭に移動
Ctrl + B -左に1文字移動する
Ctrl + D -転送削除
Ctrl + E -現在の段落の最後に移動
Ctrl + F -右に1文字移動する
Ctrl + H -削除
Ctrl + K -現在の段落の残りを削除
Ctrl + N -1行下に移動する
Ctrl + O -カーソルの後に新しい行を挿入
Ctrl + P -1行上に移動する
Ctrl + T -2つの周囲の文字を転置(スワップ)する
Ctrl + V -最後まで移動してから1文字左
Ctrl + Y -以前に削除したテキストを貼り付ける Ctrl - K

45
Chris

もう1つの答えは非常に完全でしたが、さらに、Caps Lockキーをスワップするのではなく、2番目のコントロールキーに設定したことにも触れました。

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

幸運を

11
mike511

Kyle Croninの回答は本当に気に入っていますが、1つ追加したいことがあります。これを機能させるには、適切なキーボードを選択してください。外付けキーボードをラップトップに接続している場合、追加のドロップダウンボックスがあり、両方のキーボード(または少なくとも外付けキーボード)でこれを行う必要があります。以下のスクリーンショットは、「キーボードの選択」ダイアログボックスを示しています-私は、MacBookのGoldTouch外部キーボードの言い方である「Joint Mac Keyboard」を選択しました-デフォルトは内蔵キーボードです。
Screen shot showing "Select Keyboard" dialog

私はそれを理解したら-これは私にとって素晴らしい作品です!

11
R.Klug

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

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

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

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

Page Down

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

Page Up

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

9
Tony Wieczorek

ターミナルからEmacsを使用することに完全に賛成かどうかはわかりませんが、別のオプションはCarbon Emacs(私のお気に入り)とAquamacs(非常にMacに似ています)を使用することです。 Carbon Emacsはメタにコマンドキーを使用します。これは、まずエスケープキーを押してからコントロールキーシーケンスを押す代わりに、ControlキーとCommandキーを押すだけでControl-Metaコマンドを実行できるためです。

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

7
dnolen

個人的には、システム設定のコマンドのように動作するようにセットアップキャップロックを持っています。

(setq mac-command-modifier 'ctrl)

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

4
Alexandre Paes

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

  • すばやく入力するには、左右のシフトキーを使用して(および)にします。
  • Fnキーまたは別のキーを「スーパー」に再マッピングします。
  • Caps Lockを制御できるようにしますが、それは別のキーでのみです。それ自体は、脱出です。

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

4
Charles Merriam

このスレッドは5年前に開始されたものであり、ns-win.elまたはビルド--with-nsに関する言及はありません。 2013年10月現在、Emacs Trunkで利用可能なすべてのキーバインド(そのまま使用可能)があります。もちろん、独自に作成することもできます。個人的には、OSX上のParallelsを介してWindows XPで、またOSXでネイティブに使用できるすべてのキーバインディングを持つinit.elが1つあります。ユーザーは自分のキーボードショートカットを定義できるため、システム設定でキーボードを再マッピングする必要はありません(Apple USキーボードを使用)nless使用しないキーボードを使用するコマンドキーを含めます。しかし、トラックポイントが組み込まれた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])
3
lawlist

(人間工学に基づいたキーボードではありませんが、私はキーの移動と感触が本当に好きで、Controlキー、Caps Lockは交換されています)。

http://matias.ca/osxkeyboard/index.php

2
Gene T

システム設定でcaps lockを制御するように設定し、init.elにコマンドをmetaに設定し、オプションをsuperに設定するために次のものがあります。

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

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

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

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

Emacsの人間工学的な懸念を避けるために、Shiftと同じようにCtrl、Alt、およびCmdを使用するように訓練しました。実際のキーを入力するのとは反対の手でそれらを押します。 (つまり、Caps Lockはそのままにしておきます。)

0
aec

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

0
Minwei Shen