「Emacs」カテゴリーアーカイブ

Ubuntu(14.04 LTS)のEmacsでC-M-sが効かない

Ubuntu(14.04 LTS)のEmacsで、C-M-s(デフォルトではisearch-forward-regexp、ぼくはvisual-regexp、visual-regexp-steroidsのvr/isearch-forwardに割り当てている)を押しても効かない。代わりにウィンドウが隠れてしまう。

原因は、Ubuntuのキーボードショートカットで、Ctrl+Alt+Sがウィンドウのシェードの状態の切り替えに割り当てられているためだった。

toggle_shared_state

解決方法

「システム設定」> 「キーボード」の「ショートカット」タブで、「ウィンドウ」の「シェードの状態の切り替え」を無効にするか別のキーボードショートカットを割り当てる。

MacのターミナルでのEmacsのメタキー

MacのターミナルでEmacsを使う場合に、デフォルトだとメタキーとしてエスケープキーしか使えないので不便だったが、ターミナルの環境設定→キーボードで、「メタキーとして option キーを使用」にチェックを入れると、optionキーをメタキーとして使用できた。
[mac][emacs] Terminal上でemacsのメタキーを使う方法 - goinger的日記

制御文字の入力方法

Emacs

C-q 制御文字

例: エスケープ文字を入力

C-q C-[

シェル、vim

Ctrl+V 制御文字

例: エスケープ文字を入力

Ctrl+V Ctrl+[

コントロールキーと同時に押す文字は?

上記で「制御文字」と記載しているところは、Ctrl+(コントロールキーと同時に押す)で送出するが、この時のコントロールキーと同時に押す文字は、入力したい制御文字の7ビット目に1をセット、つまり0x40(64)を足した文字である。
man ascii 等でASCII文字の一覧を表示して探す。

例:
エスケープ文字は0x1B(27)
7ビット目に1をセットする=0x40(64)を足すと0x5B(91)
0x5B(91)は[
よってエスケープ文字を送出するにはCtrl+[

改行は0x0A(10)
7ビット目に1をセットする=0x40(64)を足すと0x4A(74)
0x4A(74)はJ
よって改行を送出するにはCtrl+J

https://ja.wikipedia.org/wiki/ASCII#ASCII.E5.8D.B0.E5.AD.97.E5.8F.AF.E8.83.BD.E6.96.87.E5.AD.97

なお、印字可能文字のうち「@」から始まる32文字については、ASCII値を64減じて対応する制御文字を求め、この制御文字を「コントロール+」(英: control+)という前置表現を付けた印字可能文字で表記する慣習がある。

例:BELコード(07) →「コントロール+G」(受信した側の機器で注意喚起音が鳴る)

この制御文字の表記方法は、キーボード上の印字可能文字キーを制御文字の送出に用いていた機器の名残りであると考えられる(7ビット目を0にセットする専用キー(Ctrlキー)を、印字可能文字キーと同時に押して制御文字を送出)。

エスケープ文字の入力方法 - nelnalog.note

emacsにナビゲーションペインを追加する「emacs-nav」

emacs-nav - Google Code
emacsにファイル・フォルダブラウズするペインを追加する。
使い方(nav.elのコメントから抜粋)

;; To use this file, put something like the following in your
;; ~/.emacs:
;;
;; (add-to-list 'load-path "/directory/containing/nav/")
;; (require 'nav)
;;
;; Type M-x nav to open the navigation window. It should show up as a
;; 30-character wide column on the left, showing the contents of the
;; current directory. If there are multiple windows open, all but one
;; will be closed to make sure the nav window shows up correctly.
;;; Key Bindings
;;
;;   Enter/Return: Open file or directory under cursor.
;;
;;   1: Open file under cursor in 1st other window.
;;   2: Open file under cursor in 2nd other window.
;;
;;   c: Copy file or directory under cursor.
;;   d: Delete file or directory under cursor (asks to confirm first).
;;   e: Edit current directory in dired.
;;   f: Recursively find files whose names or contents match some regexp.
;;   g: Recursively grep for some regexp.
;;   j: Jump to another directory.
;;   m: Move or rename file or directory.
;;   n: Make new directory.
;;   p: Pop directory stack to go back to the directory where you just were.
;;   q: Quit nav.
;;   r: Refresh.
;;   s: Start a shell in an emacs window in the current directory.
;;   t: Start a terminal in an emacs window in the current directory.
;;      This allows programs like vi and less to run. Exit with C-d C-d.
;;   u: Go up to parent directory.
;;   !: Run shell command.
;;   [: Rotate non-nav windows counter clockwise.
;;   ]: Rotate non-nav windows clockwise.
;;
;;   :: Go into debug mode (should only be needed if you are hacking nav.el).

C(Control)-スペースで Spotlight が起動されてしまう

osxでemacsを使用するとき、C(Control)-スペースで Spotlight が起動されてしまう。これを回避するには、「システム環境設定--キーボードとマウス--キーボードショートカット」で、「Spotlight検索フィールドを表示する」と「Spotlightウインドウを表示する」を、適当な別のショートカットに変更すればよいい。(USキーボードなら"Control `" と "Option Control `"など)
Mac OS X Tiger, X11-Emacs 22.0.50

よく使うEmacsコマンド

ファイルの保存

C-x C-s    上書き保存
C-x C-w    別名で保存

全般

C-/, C-_, C-x u    取り消し

カーソル移動

C-v    scroll-up    1画面前進
M-v    scroll-down    1画面後退
M-<   beginning-of-buffer    ファイルの先頭へ
M->    end-of-buffer    バッファの末尾へ
M-g g    go-line    バッファのn行目へ
(なし)    go-char    バッファのn文字目へ
M-n    digit-argument    次のコマンドをn回繰り返し
C-u n    universal-argument    次のコマンドをn回繰り返し(nを省略すると4回)

リージョン

C-@, C-Space   set-mark-command    リージョンの先頭または末尾をマーク
C-x C-x    exchange-point-and-mark    カーソルとマークの位置を交換(リージョンを確認するのに便利)
C-x h  バッファ全体をマーク

コピー・ペースト

C-w    regionをkill-ringへ切り取り
M-w    regionをkill-ringへコピー
C-y    kill-ringの内容を貼付け
M-y    前のkill-ringの内容を貼付け(C-yの後のみ可)

検索・置き換え

インクリメンタル検索

C-s    順方向インクリメンタル検索
C-r    逆方向インクリメンタル検索
Enter    インクリメンタル検索終了

単純検索

C-s Enter 検索文字列 Enter    順方向単純検索を開始する
C-s    順方向へ検索を繰り返す
C-r Enter 検索文字列 Enter    逆方向単純検索を開始する
C-r    逆方向へ検索を繰り返す

問い合わせ置換

M-%    問い合わせ置換
Space, y    置換して次へ移動
Del, n    置換せずに次へ移動
,    置換して移動しない
!    残りすべてを確認せずに置換

正規表現検索・置換

C-M-s Enter    順方向での正規表現検索
C-M-r Enter    逆方向での正規表現検索
C-M-s    順方向での正規表現インクリメンタル検索
C-M-r    逆方向での正規表現インクリメンタル検索
C-M-%    正規表現問い合わせ置換

制御文字の入力

改行などの制御文字の入力は、C-q C-<コードがアルファベットの何文字目か>。
(C-qはquoted-insert)
例:
C-q C-j    改行(0A) 10番目なのでj
C-q C-m    復帰(0D) 13番目なのでm
C-q C-i    水平タブ(09) 9番目なのでi

インデント

C-M-\  リージョンをインデント

大文字小文字変換

M-c    単語の先頭を大文字にする
M-u    単語を大文字にする
M-l    単語を小文字にする
C-x-u    リージョンを大文字にする
C-x-l    リージョンを小文字にする

マクロ

F3またはC-x (    マクロ定義の開始
F4またはC-x )    マクロ定義の終了
F4またはC-x e    マクロの実行
例:
M-1 0 0 F4    マクロを100回実行(バッファの末尾で自動的に停止する)

文字コード

文字コード指定して再読込

blog.woremacx.com: Emacsで文字コード指定して再読込

文字コードを指定
C-x Enter c
(M-x universal-coding-system-argument)
読み直し
C-x C-v
(M-x find-alternate-file)

文字コード変換

C-x Enter f
(M-x set-buffer-file-coding-system Enter)
このコマンドに続いて、文字コードを指定

記述した.emacs.elの設定確認

全体の評価
M-x eval-current-buffer
選択部分評価
M-x eval-region

エラーがある部分がエコーエリアに表示されるので、その部分を修正する。
Emacs クイックリファレンス

文字のサイズ

C-x C-+ または C-x C-=    文字を大きくする
C-x C--    文字を小さくする
C-x C-0    文字の大きさをデフォルトに戻す

https://www.gnu.org/software/emacs/manual/html_node/emacs/Text-Scale.html