Emacs
Table of Contents
1. Emacsの学習記録
- org-modeを利用して学習。
- htmlへの出力は"C-c C-e" -> h -> o
- org-mode内でのelispの実行は"C-c C-c"で行う。
1.1. Elisp
- グローバル変数 : setq
- ローカル変数 : let
- スコープは()の中だけ。
1.1.1. 四則演算
(+ 1 9)
10
(/ 2.2 2)
1.1
(+ 1 2 (* 3 4) 5 6)
26
1.1.2. 変数
; - (let ((変数名 値))
; 処理1
; 処理2
; ...)
(let ((x 50))
(* x 100)
)
5000
; 2つ以上の変数定義
(let ((price 100)
(tax 1.1))
(* price tax))
110.00000000000001
; 1は実行されるが、値を返すのは最後の結果だけ
(let ((hoge 100)
(huga 200))
(message "1, hoge : %d, huga : %d" hoge huga)
(message "2, hoge : %d, huga : %d" hoge huga))
2, hoge : 100, huga : 200
; 定義した変数を次以降の処理で使用したい時
; let*で変数定義する。
; letの場合は全変数が同時に作成される。
(let* ((a 200)
(b (+ a 20)))
(+ a b))
420
1.1.3. if文
;(if 条件式
; Trueの時の処理
; Falseの時の処理)
(let ((score 80))
(if (>= score 60)
"合格"
"不合格"))
合格
(let ((n 15)) (if (= (% n 3) 0) (progn (message "Fizz") (sit-for 1.0) "割り切れました。") n))
割り切れました。
(let ((temp 29))
(if (>= temp 30)
(progn
(message "暑い冷房ON")
(sit-for 1.0)
"稼働中")
(progn
(message "まだ涼しいぞ")
(sit-for 1.0)
"待機中")))
待機中
1.1.4. 関数
- interactive : M-x air-conditionerを実行できるようになる。 n : 数字で入力させる。
(defun air-conditioner (temp)
"気温(temp)を受け取って、エアコンの状態を返す関数"
(interactive "n今何度?: ")
(if (>= temp 30)
(progn
(message "暑い! 冷房ON")
(sit-for 1.0)
"稼働中")
"待機中"))
air-conditioner
(air-conditioner 30) ;(air-conditioner 20)
稼働中
;; "C-c a" でair-conditionerコマンドを実行できる。 ;; クォートする(評価を遅らせる) (global-set-key (kbd "C-c a") 'air-conditioner)
air-conditioner
(defun esc () "カーソル位置にemacs-lispのコードエリアをぶち込む" (interactive) (insert "#+BEGIN_SRC emacs-lisp") (insert "\n") (insert "\n") (insert "#+END_SRC") (forward-line -1)) (global-set-key (kbd "C-c e") 'esc)
esc
(defun insert-current-time () (interactive) (insert (format-time-string "%Y-%m-%d %H:%M"))) ;; M-x insert-current-time
insert-current-time
(defun insert-blog-header ()
"対話的にタイトルとタブを入力し、Org-modeのブログヘッダーを挿入する"
(interactive)
(let ((title (read-string "記事のタイトルを入力: "))
(date (format-time-string "%Y-%m-%d")))
(insert (format "** %s\n" title))
(insert (format "*** %s\n" date))
(forward-line -1)))
insert-blog-header
1.2. memo
1.2.1. 矩形選択
"C-x spc"で矩形領域を選択してから下記コマンドを実行。 覚えれる気がせん。
- 置換・挿入: C-x r t
- 切り取り: C-x r k
- 貼り付け: C-x r y
- 開く: C-x r o
- 削除: C-x r d
- 連番: C-x r N