基本編集関数
サンプル
カーソル下の文字を得る
following-charを使う
(setq aa (following-char))
aaに文字コードが入る。例:「a」なら97、「b」なら98
コード表はここ。ここの10進の数字
部分文字列を得る
(substring 開始位置 終了位置) を使う
; 部分文字列を取り出す
(setq aa "abcdefg")
(setq bb (substring aa 2 4)) ; => "cd"
バッファ内の文字列を得る
(buffer-substring 開始位置 終了位置) を使う
; 正規表現でマッチしたあとグルーピング#2でマッチした文字列を得る
(setq aa (buffer-substring (match-beginning 2) (match-end 2)))
移動系関数
移動境界の検査 (p41)
- bobp, eobp
- ポイントがバッファの先頭、末尾にあるか検査し、t, nilを返す
- bolp, eolp
- ポイントが行頭、行末にあるかどうか検査し、t, nilを返す
相対移動
- forward-char, backward-char
- ポイントを文字単位で1つ前方、後方に進める
- ポイントを次の論理行に進める。引数を与えるとその数だけ移動。負の数は逆方向。ポイントは行の先頭にいく
- forward-sexp, backward-sexp
- S式単位に移動する。括弧なら何でもよい
forward-line
絶対移動 (p43)
- point
- 現在の位置のポイントを返す
- mark
- マーク位置のポイントを返す
- region-beginning, region-end
- ポイントをマーカーのうち小さい方の値を得る
- point-min, point-max
- バッファの先頭位置(末尾)のポイント値を返す
- (goto-char ポイント値
- ポイント値を持つ場所に移動する
- (save-excursion 本体 .. )
- 入った時点のポイントなどを記憶し、抜けたときに、元いた場所に戻る
- (goto-line 行番号)
- 指定した論理行に飛ぶ。バッファの最初の行を1行目とする
- 現在の論理行番号を得る
- (setq cc (count-lines (point-min) (point)))
- move-to-window-line
- ウィンドウの先頭行を基準に指定行に移動。画面の先頭行は0, 引数を省略すると画面の中央。負は、画面の末尾から
- beginning-of-line, end-of-line
- ポイントを行頭、行末に移動する
編集系関数
削除系関数 (p64)
- (delete-char 文字数 &optional kill フラグ)
- ポイント位置から始まる文字を文字数分だけ削除
- (delete-backward-char 文字数 &optional kill フラグ)
- 削除方向が逆
- (delete-region 開始位置 終了位置)
- 2つの引数で指定した領域を削除
- (kill-region)
- 2つの引数で指定いた領域を削除し、削除した文字列をkill-ringに追加する
- (kill-line &optional 行数)
- ポイントから行末までを削除
- erase-buffer
- カレントバッファの内容をすべて消去
挿入系関数 (p65)
- (insert-char 文字 個数)
- 文字を個数だけ挿入する
- (self-insert-commnad 個数)
- 押したキーそのものを挿入したいとき
- insert : 文字列の挿入:バッファに挿入
- concat : 文字列の結合
改行は「\n」、「\」記号は「\\」と2つ重ねる
次のコードは現在のポイント位置に「改行 改行 \parbox{\parhaba}{%」を挿入する。
(insert "\n\n\\parbox{\\parhaba}{%")
(concat "abc" "def") ; ==> "abcdef"
置換 (p65)
- (replace-match 新文字列 &optional 大文字小文字固定 リテラル)
- 直前の検索関数でマッチした部分全体を新しい文字列に置き換える
マーカー
ナローイング
リスト (p100)
リスト処理(その1)
- (cons 要素 リスト
- すでに存在するリストの先頭に要素を追加した新しいリストを返す
- list
- 引数を要素とするリストを作成する
- (car リスト)
- リストの先頭の要素を取り出す。引数のリストそのものは変化しない
- (cdr リスト)
- リストの2番目以降の要素からなるリストを返す。引数のリストのそのものは変化しない
- append
- 引数として与えられた任意個のすべてのリスト群からなるリストを新たに作る。リストどうしの結合に用いる
- (equal オブジェクト1 オブジェクト2)
- オブジェクト1,2の内容を比較し等価であればt、それ以外はnilを返す
- eq
- equalと同様に比較するが完全に同一オブジェクトの場合のみtを返す
split-string, nth, length
文字列の分割、リストの要素の数を知る、リストの要素を番号指定で取り出す
(defun test-nth () "splitとnthのテスト" (interactive) (let (aa list len yy0 yy3 ppp) (setq aa "1st 2nd 3rd 4th") (setq list (split-string aa " ")) (setq len (length list)) (setq yy0 (nth 0 list)) (setq yy3 (nth 3 list)) (message "len=%d, yy0=%s, yy3=%s" len yy0 yy3) (sit-for 20))) (setq book (nth 0 ppp)) 出力は ==> len=4, yy0=1st, yy3=4th