;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; 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)
そのままではmozcやanthyは使えない(そもそもRocks7,CentOS7では標準で利用できないようだ)。 emacsデフォルトのkkcインプットメソッドは使える。 kkcのキーバインディング(あまり便利ではない。辞書学習機能は無い)。TeraTermProの画面上で emacsを使う場合は windowsの IMEが利用できる。 C-\ 日本語入力への切り替え C-o 変換中の文節を1文字長くする。 C-i 変換中の文節を1文字短くする。 C-f 変換中の文節を確定し、次の文節に移動する。 SPC 変換 K カタカナに変換
; 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") ) )[ref] http://mickey-happygolucky.hatenablog.com/entry/2015/12/11/001402
C-\ 日本語入力への切り替え C-o または Shift-→ 変換中の文節を1文字長くする。 C-i または Shift-← 変換中の文節を1文字短くする。 C-f または → 変換する文節を次のものに移動する。 C-b または ← 変換する文節を次のものに移動する。 SPC 文節の変換 ENTER または anykey すべての文節を確定する。 など
「*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)
emacsでは、開いたファイルはバッファというものに読み込まれます (特別な事をしなくてもふつうにそれを編集してファイルに上書き保存できます)。 つまり、開いたファイルは同じ名前のバッファに対応しています。 また、ファイルに対応していないバッファもあります。
また、emacsではいくつでもファイルを開くことができます。
emacsでは 少なくとも1枚のバッファが表示されていますが、 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 にバインドされています。
コピーとキルは、マークされた位置とカーソル位置の間が対象となる。 なお、マークセットのキーバインドは使っている環境によって別のアプリケーションが使用している場合が 多く見かけられる(そのため設定の変更が必要となる場合もある)。
「*scratch*」バッファは lisp-interaction-modeなので、lispプログラムを書いて実行できる。 インタープリタ言語なので lispの式をひとつづつ書いて、ひとつづつ実行できる。
lispプログラムの構成要素は、式です。式の実行のことを、評価といいます。 変数や、関数定義(定義する関数の呼び出し)、関数呼び出し、が式です。 関数呼び出しは、リスト (hoge0 hoge1 hoge2 ...) の形になっています。 リストの先頭要素 hoge0が関数名で、それ以降 hoge1, hoge2, ... は引数として扱われます。 さらに hoge1などもリストになっていて、入れ子のリストになっていたりもします。
「*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 ) のリストの作り方 (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) ; 最初の要素を除いたリストを取り出す
論理演算 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))