C-\ 日本語入力への切り替え C-o または Shift-→ 変換中の文節を1文字長くする。 C-i または Shift-← 変換中の文節を1文字短くする。 C-f または → 変換する文節を次のものに移動する。 C-b または ← 変換する文節を次のものに移動する。 SPC 文節の変換 ENTER または anykey すべての文節を確定する。 など
そのままではmozcやanthyは使えない(そもそもRocks7,CentOS7では標準で利用できないようだ)。 emacsデフォルトのkkcインプットメソッドは使える。 kkcのキーバインディング(あまり便利ではない。辞書学習機能は無い)。TeraTermProの画面上で emacsを使う場合は windowsの IMEが利用できる。 C-\ 日本語入力への切り替え C-o 変換中の文節を1文字長くする。 C-i 変換中の文節を1文字短くする。 C-f 変換中の文節を確定し、次の文節に移動する。 SPC 変換 K カタカナに変換
C-x 5 2 新しいフレームを開く C-x 5 o 次のフレームに移る(フレームをアクティブにする) C-x 5 0 カレントフレームを閉じる C-x 5 1 カレントフレーム以外を閉じる
** (emacs:6766): WARNING **: 21:54:25.461: AT-SPI: Could not obtain desktop path or name ** (emacs:6766): WARNING **: 21:54:25.704: atk-bridge: get_device_events_reply: unknown signature ** (emacs:6766): WARNING **: 21:54:25.704: atk-bridge: GetRegisteredEvents returned message with unknown signature のようなものが出る。 ⇒気にしない。又は、$ dbus-launch emacs をすると出ない。
M-x ansi-term 又は M-x term のあと、動かすプログラムを入力する(bashやpython3など。引数は付けられない?) 使い方: 次のキーバインディングのみ(他は動かしたプログラムに渡される) C-c C-j term-line-mode lineモードへ切替え。通常のバッファ操作をしたいときのモード C-c C-k term-char-mode charモードへ切替え(デフォルトでcharモード) C-c C-c charモードで、C-cを送信 C-c CHAR charモードで、C-x CHAR の動作(例えば C-c o で C-x o の動作をする) C-c C-q ページ機能のon/offトグル(デフォルトoff)。長い出力はき**MORE**で一時停止 なお、M-x ansi-termは新規に *ansi-term*バッファとして開かれる(複数起動可)。 M-x term は必ず *terminal*バッファに開かれる(ひとつだけ起動できる)。 (memo) 上のキーバインディングは M-x termのもので、M-x ansi-termはもっとゆるい? (コメント) M-x shell や M-x run-python もあるがこれらはいまいち。
リージョンを指定して、 M-x untabify
C-u M-| COMMAND リージョンをコマンドの標準入力に渡して、得た結果に置き換える。 M-| COMMAND リージョンをコマンドの標準入力に渡す。結果は *Shell Command Output*バッファ等に出力される。 C-u M-! COMMAND コマンドを実行させて、得た結果をバッファに挿入する。 (注) |はエルではなく、パイプの縦棒の文字。COMMANDにはパイプラインを与えることも出来る。
(例) バッファ内の次の5行をリージョンに選択しておき、 hoge3 hoge2 hoge0 hoge0 hoge1 C-u M-l sort | uniq -c をすると、 2 hoge0 1 hoge1 1 hoge2 1 hoge3 に置き換わる。
「*scratch*」バッファで直接 emacs-lispの実行ができる。実行は Ctrl-j を押す。
; 計算例 (* 71 3 6) # 71 * 3 * 6 (* (+ 71 3 2) 3 6) # (71+3+2) * 3 * 6 (sqrt 2.0) # ルート2
たとえば [0-9]\.[0-9]+\(e-[0-9]+\)L と打つと、1.234e-5Lや2.3e-4Lなどを検索できる。次を検索するには C-sを押す。
(1) 変更したい部分にカーソルを持って行き、
M-x describe-face
とする。例えば、
Describe face (default `sh-heredoc'):
と表示される(EnterかC-gを押して抜ける)。この sh-heredocの変数名を覚えておく。
(2) M-x list-faces-display
をして表示されるバッファにsh-heredocがあるので、そこにカーソルを移動して
Enterを押す。
表示されるバッファにある、Foregroundのところの [Choose]にカーソルを移動して
Enterを押す。
色を選ぶ。同じ要領で他も変更できる。
なお、[Choose]が無い場合は、Show All Attributesから Foregroundをチェックして、色を選ぶ。
(3) C-x C-s で変更の設定を .emacs.elに保存する。
適当に .emacs.elを書き直しても良いだろう。
[ref]
http://qiita.com/AnchorBlues/items/91026c4f1c0745f5b851
例えばつぎのものを .emacs.elに加える。
(if (not (eq window-system 'x)) (progn (face-spec-set 'minibuffer-prompt '( (t (:foreground "cyan")) )) ))
[ref]
http://blog.livedoor.jp/moya_pro/archives/23686456.html
http://kei10in.hatenablog.jp/entry/20101101/1288617632
C-x ret rとして、utf-8 とする(UTF-8で開く場合)。 (このショートカットにバインドされている関数は M-x revert-buffer-with-coding-system) ファイル先頭に、 # -*- coding:utf-8; mode:shell-script; -*- などを追加しておくとよい。 C言語のときは1行目に /* -*- coding:utf-8; -*- */ を入れるとよい。
M-x describe-function 関数の説明表示 M-x describe-variable 変数の説明表示 M-x describe-bindings キーバインディングの一覧表示 M-x describe-key キーで実行される関数の表示 M-x variable-apropos 与えられた文字列と部分一致する関数名、変数名の説明一覧表示。標準にはなく、 D.Cameron, B.Rosenblatt, "GNU Emacs", p.400, ソフトバンク(株) (1993) にコードがある。 (defun variable-apropos (string) "Like apropos but lists only symbols that are names of variables that are user-modifiable." (interactive "sVariable apropos (regexp): ") (let ((message (let ((standard-output (get-buffer-create "*HELP*"))) (print-help-return-message 'identity)))) (apropos string 'user-variable-p) (and message (message message)))) (define-key help-map "\C-v" 'variable-apropos)
M-Tab 変数名、関数名を補完する
C-x ( マクロ定義を開始する このあいだのキー操作がキーボードマクロとして記録される C-x ) マクロ定義を終了する
C-x e 記録したキーボードマクロを実行する C-u NNN C-x e として、NNN回 C-x e を実行することもできる
M-x name-last-kbd-macro 定義したマクロに名前を付ける(M-x 付けた名前 で実行できるようになる) M-x insert-kbd-macro 名前を付けたマクロを、バッファに挿入する(新規ファイルに挿入し保存できる) M-x load-file ファイルに保存したマクロを読み込む(M-x マクロ名 で実行できるようになる) .emacs.elに (load-file ファイル名) を追加しても可能。
マクロ定義中に C-x q を入力 マクロ実行時に確認応答する(継続、中止、再帰編集などができる) M-x query-replace など 実行中に ?でヘルプが出る(C-r で再帰編集ができる) M-x recursive-edit 再帰編集をする(編集終了は M-C-c)
M-/ 単語を補間する(入力中の文字列を、既に入力済みの文字列に補完)
M-u カーソル位置から、次の単語区切りまでの文字列を、大文字に変換する M-l カーソル位置から、次の単語区切りまでの文字列を、子文字に変換する
emacsでは、開いたファイルはバッファというものに読み込まれます (特別な事をしなくてもふつうにそれを編集してファイルに上書き保存できます)。 つまり、開いたファイルは同じ名前のバッファに対応しています。 また、次のようにファイルに対応していないバッファもあります。
また、emacsではいくつでもファイルを開くことができます。
emacsでは 少なくとも1枚のバッファが表示されていますが、 emacsウィンドウを分割して、いくつでも同時にバッファを 表示することもできます。
(注)「ウィンドウとフレーム」 emacsでは、バッファを表示している部分を ウィンドウ(バッファウィンドウ)と呼び、 emacs自体の全体画面のことを、フレーム(フレームウィンドウ)と呼びます。 (X11でemacsを立ち上げている場合、フレームは X11の用語で言う ウィンドウに相当します。 キャラクタ端末でemacsを立ち上げている場合は、フレームは端末の画面全体の事になります。)
emacsでバッファを表示すると、バッファの下に反転した行が1行ある (バッファが1枚だけの場合はちょうど下から二行目に反転した行がある)。 この行をモードラインと呼ぶ。 そのバッファ名などが表示されている (利用している文字コード、使用しているモード、行数なども)。
emacsの一番下の行のことをミニバッファと呼ぶ。 コマンド実行後にメッセージが表示されたりします。 コマンドを入力したり、コマンドが要求する入力 (例えばファイル名入力する)にも使われます。
emacs自身には簡単なチュートリアルが含まれています。
$ emacs
とした後、
ESC
そして
x
とキーを押すと、ミニバッファに M-x が表示され、
その右にカーソルが表示されます。
つづけて、
help-with-tutorial
という文字を入力(これはコマンド名になります)して ENTERキー
を押す。
すると TUTORIALのバッファがでてくるので、
説明を読みながら操作を学習できます。
ちなみに、emacsのコマンドはほぼすべてがLispの関数です。 emacsは、実はLispインタープリタです。
Ctrlキーはしばしば Cと標記される。 例えば C-x C-c は Ctrlキーを押しながらxを押す、 次に Ctrlキーを押しながらcを押すことを意味する。
Metaキーがあるキーボードはほとんど見受けられない。 MetaキーはもうひとつのCtrlキーのようなものである。 例えば M-f は Metaキーを押しながらfを押すことを意味する。 MetaキーをAltキーやOptキーなどで代用できる場合もある。 代用できない場合でも ESCを押して、 次に fキーを押すことで M-f と解釈される。
CAPSキーが aの左側にあるキーボードが日本ではほとんどである。 aの左側にCtrlがあると使いやすい。また CAPSキーはほぼ使わない。 そのためソフトウェア的にCAPSキーをCtrlキーと交換することがよく行われている。 (注) 客先で作業する場合にはこのようなことは出来ない。
CtrlとCAPSLOCKを逆にする方法 (Ubuntu 18.04の場合) 端末でつぎを実行 $ gsettings set org.gnome.desktop.input-sources xkb-options "['ctrl:swapcaps']" [ref] https://blog.sakaki333.com/blog/view/11
Bind, Bindingという言葉。 emacsのコマンドはほとんどLisp関数ですが、よく使うコマンドの実行は ショートカットとしていくつかのキーの組み合わせで実行できます。 コマンドとキーの対応をバインディングと呼びます。 (例) ファイルを開くコマンドは find-file です。 C-x C-f にバインドされています。
コピーとキルは、マークされた位置とカーソル位置の間が対象となる。 なお、マークセットのキーバインドは使っている環境によって別のアプリケーションが使用している場合が 多く見かけられる(そのため設定の変更が必要となる場合もある)。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; Kanji-code ;;; ;(some commands) ; 'C-h C <RET>' : Describe the coding systems currently in use. ; 'M-x list-coding-systems' : Display a list of all coding systems. (set-language-environment "Japanese") (set-keyboard-coding-system 'utf-8) ; Coding system for keyboard input (set-terminal-coding-system 'utf-8) ; Coding system for terminal output (set-buffer-file-coding-system 'utf-8) ; Coding system for saving buffer (set-default-coding-systems 'utf-8) ; Coding system for new buffers, subprocess I/Os, ; file names, keyboard input and terminal output. (setq default-buffer-file-coding-system 'utf-8) ; set input method if available (cond ( (require 'mozc nil t) (setq default-input-method "japanese-mozc") ;(setq mozc-candidate-style 'echo-area) ) ( (require 'anthy nil t) (setq default-input-method "japanese-anthy") ) ) ; コードが未定義の時に、utf-8でバッファをセーブする。 (add-hook 'write-file-hooks (function (lambda () (if (eq buffer-file-coding-system 'undecided-unix) (setq buffer-file-coding-system 'utf-8)) nil))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; リージョンに引用マークをつける ;;; http://www.sawada.riec.tohoku.ac.jp/people/nobuyuki/CompSemi/Semi4/keisan.html ;;; (defvar quoting-marker "> ") (defun cite-region () "リージョンに引用マークをつける" (interactive) (setq quoting-marker (read-string "Quoting marker: " quoting-marker)) (save-excursion (let ((e (max (region-end) (region-beginning))) (b (min (region-end) (region-beginning))) (len (length quoting-marker))) (goto-char b) (while (<= (+ (point) 1) e) (insert-string quoting-marker) (setq e (+ e len)) (forward-line 1)))))
その他は ~okazaki/.emacs.elを見るなどして追加するとよい。
「*scratch*」バッファは lisp-interaction-modeなので、lispプログラムを書いて実行できる。 インタープリタ言語なので lispの式をひとつづつ書いて、ひとつづつ実行できる。
lispプログラムの構成要素は、式です。式の実行のことを、評価といいます。 変数や、関数定義(これも関数の呼び出し)、関数呼び出し、が式です。 関数呼び出しは、リスト (hoge0 hoge1 hoge2 ...) の形になっています。 リストの先頭要素 hoge0が関数名で、それ以降 hoge1, hoge2, ... は引数として扱われます。 さらに リストの要素自身がリストになっている場合もあります。
「*scratch*」に書いた lispの式は C-j を押すことで評価できます。 なお、式を .emacs.elに書いておくと emacs起動時に評価することができます。
;; 例
(defun fact (n) (cond ((zerop n) 1 ) (t (* n (fact (- n 1)) )))) ;; C-jを押して式を評価(関数factを定義する) (fact 5) ;; C-jを押して、引数5で関数を評価する ;; M-: (fact 5) Return でミニバッファからでも実行できる
(defun my-fact (n) "calculate n!" (interactive "nNumber: ") (message "%s!=%s" n (fact n))) ;; C-jを押す (my-fact 5) ;; C-j押して、引数5で関数を実行する ;; my-factの場合、interactiveで関数を定義しているので、 ;; M-x my-fact Return 5 Return でも実行できる
整数 0, 1, 2, -1, など キャラクタ ?A ?a ?\C-a など(入力に対応する) 文字列 "..." ブール値 t, nil シンボル 関数名や変数名であり、評価され、値が返る 'シンボル シンボル名そのもの
;; ( 1 2 3 4 5 ) のリストの作り方 '(1 . (2 . (3 . (4 . (5))))) (quate (1 2 3 4 5)) '(1 2 3 4 5)
(setq hogeval '(1 2 3 4 5)) ; リストをグローバル変数hogevalに代入する hogeval ; 変数を評価すると 値が返る (hogeval) ; 評価するとリストの先頭にある「1」という名前の関数は無いのでエラーになる ; リストの構成要素が評価されて、最後に全体が評価される。全体の評価のとき「1」が無いとなる (car hogeval) ; 最初の要素を取り出す (cdr hogeval) ; 最初の要素を除いたリストを取り出す
; リストに要素追加 (1 2 3 4 5) -> (1 9 2 3 4 5) (setq hoge '( 1 2 3 4 5)) (setq hoge (cons (car hoge) (cons 9 (cdr hoge)))) ; これは別のリストになる (1 2 3 4 5) -> ((1 . 9) 2 3 4 5) (setq hoge '( 1 2 3 4 5)) (setq hoge (cons (cons (car hoge) 9) (cdr hoge))) (setq hoge '( 1 2 3 4 5 6 7 8)) (nthcdr 2 hoge) ; (3 4 5 6 7 8) (nthcdr 6 hoge) ; (7 8) (cons 9 (nthcdr 6 hoge)) ; (9 7 8) ; リストhogeの要素3 (2-th element)のリンク(CDR)が 要素9につながる (setcdr (nthcdr 2 hoge) (cons 9 (nthcdr 6 hoge))) ; (9 7 8) hoge ; 結果 (1 2 3 9 7 8)
論理演算 and, or, not, =, <, >, eq, など 算術演算 +, *, -, /, など
(注) 関数名であるので、(+ 1 2) などと使う
(cond ((条件式1) (真のときの評価式)) ((条件式2) (真のときの評価式)) ... ((条件式N) (真のときの評価式)) ( t (どれも真にならないときの評価式)))
(if (条件文) (真のときの評価式) (偽のときの評価式))
(progn (逐次処理の式1) (逐次処理の式2) ... (逐次処理の式N))
(let ((ローカル変数1 値1) (ローカル変数2 値2) ... (ローカル変数N 値N)) (逐次処理の式1) (逐次処理の式2) ... (逐次処理の式M))
(while (条件式) (逐次処理の式1) (逐次処理の式2) ... (逐次処理の式M))