[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#menu(howto/MenuBar)
* howto/emacs [#ca2c810f]
#contents
** 一行メモ [#p4db8e34]
- その他よく使う事柄 -- &new{2018-12-21 (金) 12:32:17};
-- マクロ定義と実行
-- 初期設定ファイル .emacs.el
-- バッファのメジャーモードとマイナーモード
-- 漢字コードに関すること
-- コマンドの作成
-- キーバインディングの変更
-- 開いているファイルのコンパイル
- 日本語表示・入力に関する事柄 -- &new{2019-08-27 (火) 1...
-- TeraTermProの画面上で emacsを使うと、表示がずれて正常...
下記の"[[.emacs.elに入れたらよいもの>#ebd16c95]]"から Kan...
-- mozc,anthyによる日本語入力(Xmingで emacsウィンドウ)の...
下記の"[[.emacs.elに入れたらよいもの>#ebd16c95]]"から Kan...
[ref] http://mickey-happygolucky.hatenablog.com/entry/201...
-- emacs-anthyのキーバインディング
C-\ 日本語入力への切り替え
C-o または Shift-→ 変換中の文節を1文字長くする。
C-i または Shift-← 変換中の文節を1文字短くする。
C-f または → 変換する文節を次のものに移動する。
C-b または ← 変換する文節を次のものに移動する。
SPC 文節の変換
ENTER または anykey すべての文節を確定する。
など
-- windows上に Xmingで emacsのウィンドウ画面を表示してい...
そのままではmozcやanthyは使えない(そもそもRocks7,CentOS...
emacsデフォルトのkkcインプットメソッドは使える。
kkcのキーバインディング(あまり便利ではない。辞書学習機...
IMEが利用できる。
C-\ 日本語入力への切り替え
C-o 変換中の文節を1文字長くする。
C-i 変換中の文節を1文字短くする。
C-f 変換中の文節を確定し、次の文節に移動する。
SPC 変換
K カタカナに変換
-- emacs-mozcのキーバインディング、略
- emacsのウィンドウだと}や]が入力できない? -- &new{2019...
-- Xmingのインストール時に保存したショートカット config.x...
-- オプション -wgl でOpenGLのアクセラレーションを有効化す...
- emacsのウィンドウで等幅フォントを使うには? -- &new{20...
- TABでspace入力! -- &new{2020-03-09 (月) 05:01:48};
- リンクメモ -- &new{2021-11-18 (木) 14:48:35};
-- https://emacs-jp.github.io/
-- [[https://qiita.com/Ladicle/items/>https://qiita.com/L...
-- https://github.com/DarthFennec/highlight-indent-guides...
-- https://mako-note.com/python-emacs-ide/#highlight-inde...
-- https://github.com/zk-phi/indent-guide
- load-pathとload https://www.math.s.chiba-u.ac.jp/~matsu...
- emacs -q #.emacs.el を読み込まない -- &new{2021-11...
- M-C-v 他のウィンドウ(次のもののみ)をスクロールする -- ...
- M-: そのバッファのもとで、ミニバッファを使って式を評...
- emacsマニュアル -- &new{2021-11-21 (日) 21:46:07};
-- https://ayatakesi.github.io/emacs/24.5/elisp_html/Dedi...
-- https://ayatakesi.github.io/emacs/24.5/elisp_html/Wind...
-- https://ayatakesi.github.io/emacs/24.5/elisp_html/Fram...
-- https://ayatakesi.github.io/emacs/24.5/elisp_html/Spli...
-- https://ayatakesi.github.io/emacs/24.5/elisp_html/Wind...
- 2020年代のEmacs入門 https://emacs-jp.github.io/tips/ema...
- emacsのフレーム操作 -- &new{2022-01-24 (月) 14:45:16};
C-x 5 2 新しいフレームを開く
C-x 5 o 次のフレームに移る(フレームをアクティブにする)
C-x 5 0 カレントフレームを閉じる
C-x 5 1 カレントフレーム以外を閉じる
- M-x sort-lines でリージョンを並べ替えることが出来る -- ...
- diredモード: sで日付順/名前順に並び替える; (setq dired...
- C-x C-v 今のバッファにファイルを開く(ファイルを開いて...
- M-x view-lossage #直近でタイプした100キーを表示(さら...
#comment
//-------------------------------------------------------...
* その他 [#w51c7db1]
** terminal-emulatorの使い方 [#g6ec0608]
M-x ansi-term 又は M-x term のあと、動かすプログラムを入...
使い方(ansi-term):
新規に *ansi-term*バッファとして開かれる(複数起動可)
主なキーバインディング(termより制限がゆるい)
C-c C-j term-line-mode lineモードへ切替え。通常のバ...
C-c C-k term-char-mode charモードへ切替え(デフォルト...
C-c C-c charモードで、C-cを送信
C-x ... は有効らしい
M-x ... は効かないので、lineモードに移行してから使う
使い方(term):
必ず *terminal*バッファに開かれる(ひとつだけ起動でき...
次のキーバインディングのみ(他は動かしたプログラムに渡...
C-c C-j term-line-mode lineモードへ切替え。通常のバ...
C-c C-k term-char-mode charモードへ切替え(デフォルト...
C-c C-c charモードで、C-cを送信
C-c CHAR charモードで、C-x CHAR の動作...
C-c C-q ページ機能のon/offトグル(デフ...
(コメント) M-x shell や M-x run-python もあるがこれらは...
** TABをスペースに変換する [#n2210e79]
リージョンを指定して、
M-x untabify
** リージョンをLinuxコマンドに渡して、いろいろする [#qc8b...
C-u M-| COMMAND リージョンをコマンドの標準入力に渡して...
M-| COMMAND リージョンをコマンドの標準入力に渡す。...
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
に置き換わる。
** 電卓がわりに使う [#if0c0dd7]
「*scratch*」バッファで直接 emacs-lispの実行ができる。実...
; 計算例
(* 71 3 6) # 71 * 3 * 6
(* (+ 71 3 2) 3 6) # (71+3+2) * 3 * 6
(sqrt 2.0) # ルート2
** 検索 [#h936bd94]
- C-sを押し前方検索する文字をタイプしてゆく。次を検索する...
- C-rを押し後方検索する文字をタイプしてゆく。次を検索する...
- M-x isearch-forward-regexp で正規表現を使った前方検索が...
たとえば
[0-9]\.[0-9]+\(e-[0-9]+\)L
と打つと、1.234e-5Lや2.3e-4Lなどを検索できる。次を検索す...
** 置換 [#b248458e]
- M-% または M-x query-replace で文字列を置換できる。
- M-x query-replace-regexp で文字列を正規表現を使って置換...
** 文字の色を変更する [#naf1b35a]
(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から Foreg...
(3) C-x C-s で変更の設定を .emacs.elに保存する。~
適当に .emacs.elを書き直しても良いだろう。
[ref]~
http://qiita.com/AnchorBlues/items/91026c4f1c0745f5b851
** ミニバッファの文字の色を変更する [#a724145f]
例えばつぎのものを .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~
** Emacsで文字コード指定してのファイル開き直しをしたい [#...
C-x ret rとして、utf-8 とする(UTF-8で開く場合)。
(このショートカットにバインドされている関数は M-x revert...
ファイル先頭に、
# -*- coding:utf-8; mode:shell-script; -*-
などを追加しておくとよい。
C言語のときは1行目に
/* -*- coding:utf-8; -*- */
を入れるとよい。
** Emacsで自動的に変数設定やe-Lispコードを動かす例 [#k3ac...
scriptversion=2024-10-21.22:51:27; # JST
#-*- coding:utf-8; mode:shell-script; -*-
#Local Variables:
#mode: shell-script
#sh-indentation: 2
#eval: (add-hook 'before-save-hook 'time-stamp) #最初に...
#time-stamp-start: "scriptversion="
#time-stamp-format: "%:y-%02m-%02d.%02H:%02M:%02S"
#time-stamp-time-zone: "Asia/Tokyo"
#time-stamp-end: "; "
#End:
** ヘルプの表示、入力補完 [#nac1c120]
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 E...
にコードがある。
(defun variable-apropos (string)
"Like apropos but lists only symbols that are names of...
(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 変数名、関数名を補完する
** キーボードマクロ [#fd69937d]
*** 定義と実行 [#i5d0ebb8]
C-x ( マクロ定義を開始する
このあいだのキー操作がキーボードマクロとして記録される
C-x ) マクロ定義を終了する
C-x e 記録したキーボードマクロを実行する
C-u NNN C-x e として、NNN回 C-x e を実行することもできる
*** 保存と読み込み [#sa8b6d73]
M-x name-last-kbd-macro 定義したマクロに名前を付ける(M...
M-x insert-kbd-macro 名前を付けたマクロを、バッファ...
M-x load-file ファイルに保存したマクロを読み...
.emacs.elに (load-file ファイ...
** リカーシブエディット(再帰編集) [#rf29e7c0]
マクロ定義中に C-x q を入力 マクロ実行時に確認応答する...
M-x query-replace など 実行中に ?でヘルプが出る(C...
M-x recursive-edit 再帰編集をする(編集終了は ...
** その他の編集 [#df4df1ba]
*** 単語の補間 [#d10d1919]
M-/ 単語を補間する(入力中の文字列を、既に入力済みの...
*** 単語を大文字、小文字に変換 [#f9000cdc]
M-u カーソル位置から、次の単語区切りまでの文字列を、...
M-l カーソル位置から、次の単語区切りまでの文字列を、...
//-------------------------------------------------------...
* 基本 [#g5ba951c]
** 用語とチュートリアル [#w06b9ac0]
*** バッファ [#ba693e00]
emacsでは、開いたファイルはバッファというものに読み込まれ...
(特別な事をしなくてもふつうにそれを編集してファイルに上...
つまり、開いたファイルは同じ名前のバッファに対応していま...
また、次のようにファイルに対応していないバッファもありま...
- Buffer Listsバッファ (バッファのリストを表示する)
- scratchバッファ (デフォルトでつくられている)
- Messagesバッファ (メッセージの履歴が保存されている)
- など
また、emacsではいくつでもファイルを開くことができます。
emacsでは
少なくとも1枚のバッファが表示されていますが、
emacsウィンドウを分割して、いくつでも同時にバッファを
表示することもできます。
(注)「ウィンドウとフレーム」
emacsでは、バッファを表示している部分を ウィンドウ(バッフ...
emacs自体の全体画面のことを、フレーム(フレームウィンドウ)...
(X11でemacsを立ち上げている場合、フレームは X11の用語で...
キャラクタ端末でemacsを立ち上げている場合は、フレームは端...
*** モードライン [#ib7eb327]
emacsでバッファを表示すると、バッファの下に反転した行が1...
(バッファが1枚だけの場合はちょうど下から二行目に反転し...
この行をモードラインと呼ぶ。
そのバッファ名などが表示されている
(利用している文字コード、使用しているモード、行数なども...
*** ミニバッファ [#s11386ee]
emacsの一番下の行のことをミニバッファと呼ぶ。
コマンド実行後にメッセージが表示されたりします。
コマンドを入力したり、コマンドが要求する入力
(例えばファイル名入力する)にも使われます。
*** チュートリアル [#r0f3a0fc]
emacs自身には簡単なチュートリアルが含まれています。~
$ emacs~
とした後、~
ESC~
そして~
x~
とキーを押すと、ミニバッファに M-x が表示され、
その右にカーソルが表示されます。
つづけて、~
help-with-tutorial~
という文字を入力(これはコマンド名になります)して ENTERキー
を押す。
すると TUTORIALのバッファがでてくるので、
説明を読みながら操作を学習できます。
ちなみに、emacsのコマンドはほぼすべてがLispの関数です。
emacsは、実はLispインタープリタです。
//-------------------------------------------------------...
** いくつかの操作 [#kac255bc]
*** Ctrl, Meta, CAPS, Bindingに関する基本 [#z7985c5d]
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-op...
[ref] https://blog.sakaki333.com/blog/view/11
Bind, Bindingという言葉。
emacsのコマンドはほとんどLisp関数ですが、よく使うコマンド...
ショートカットとしていくつかのキーの組み合わせで実行でき...
コマンドとキーの対応をバインディングと呼びます。
(例) ファイルを開くコマンドは find-file です。
C-x C-f にバインドされています。
*** 終了などの操作 [#y9b1c444]
- emacsの終了 C-x C-c
- コマンドの途中終了(quit) C-g (何か不明なコマンドを実...
キー入力待ちなどになっている。途中終了したいときは C-gを...
*** ファイルに関する操作 [#obee60d3]
- ファイルを開く C-x C-f (ディレクトリも開ける)
- ファイルの保存 C-x C-s
- ディレクトリを開く C-x d (ファイラーとして使えて、カ...
もってゆくことで、例えば次のような操作ができる)
-- f を押すとそのファイルを開く。
-- R を押すと、ファイル名を変更できる。
-- d でマークする。xを押すとマークしたファイルを削除でき...
-- C でファイルをコピーする。
*** カーソル移動 [#gff0cfec]
- カーソルの移動 ← → ↑ ↓キー、またはそれぞれ C-b C-f C-p...
- 行の先頭に移動 C-a
- 行の末尾に移動 C-e
- バッファの先頭に移動 M-<
- バッファの末尾に移動 M->
- 関数の先頭に移動 M-a (C言語モードのときなど)
- 関数の末尾に移動 M-e (C言語モードのときなど)
- カーソルのある行が画面中央にくるようにバッファを表示 C...
-- C-x C-l カーソルをウィンドウの中心に移動
-- C-u 0 C-x C-l カーソルをウィンドウの一番上に移動
-- C-u -1 C-x C-l カーソルをウィンドウの一番下に移動
*** 編集 [#y4f8406d]
- カーソル位置の1文字を消す C-d
-- Del, BSが効かない場合は、キーのバインディングがデフォ...
Del, BSで消すにはバインディングを変更する。
- カーソル位置から1単語を消す M-d
- カーソルから行の右側を消す C-k
- アンドゥ C-x u
- 直前の操作を繰り返す C-x z
-- 直前に C-x z をしていた場合は単に z を押すと再度その操...
*** コピー・キル・ペーストの編集 [#q6b93273]
コピーとキルは、マークされた位置とカーソル位置の間が対象...
なお、マークセットのキーバインドは使っている環境によって...
多く見かけられる(そのため設定の変更が必要となる場合もあ...
- コピー: C-SPC (または C-@) でマークセットをしてカーソル...
- キル: C-SPC (または C-@) でマークセットをしてカーソルを...
- ペースト: C-y でカーソル位置に、最後にコピー又はキルし...
*** 矩形の編集 [#xf53b52a]
- 矩形のキル: C-SPC (または C-@) でマークセットをしてカー...
- 矩形のペースト: C-x r y (または M-x yank-rectangle)で...
*** コマンドに引数を渡す [#za13732b]
- C-u 数字をタイプし コマンドをタイプ。
コマンドはなんでもよく( 例) C-f や M-x f や M-x forward-...
*** バッファに関する操作 [#w539e8ca]
- 一画面下を表示 C-v
- 一画面上を表示 M-v
- バッファの一覧を表示 C-x C-b (カーソルをバッファ名の...
もってゆくことで、例えば次のような操作が出来る)
-- ENTER を押すとそのバッファを表示する。
-- d でマークする。xを押すとマークしたバッファは削除でき...
- バッファの切り替え C-x b
- カーソルを次のバッファの移動 C-x o
- カーソルのあるバッファを非表示 C-x 0
- カーソルのあるバッファのみを表示 C-x 1
- バッファを上下に二分割 C-x 2
- バッファを左右に二分割 C-x 3
//-------------------------------------------------------...
** .emacs.elに入れたらよいもの [#ebd16c95]
とくに、cygtermやtera term上でemacsを起動したとき、下記が...
必須でもある。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...
;;;
;;; Kanji-code
;;;
;(some commands)
; 'C-h C <RET>' : Describe the coding systems curren...
; 'M-x list-coding-systems' : Display a list of all codi...
(set-language-environment "Japanese")
(set-keyboard-coding-system 'utf-8) ; Coding system f...
(set-terminal-coding-system 'utf-8) ; Coding system f...
(set-buffer-file-coding-system 'utf-8) ; Coding system f...
(set-default-coding-systems 'utf-8) ; Coding system f...
; file names, key...
(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 ...
(setq buffer-file-coding-syste...
nil)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...
;;;
;;; リージョンに引用マークをつける
;;; http://www.sawada.riec.tohoku.ac.jp/people/nobuyuki/...
;;;
(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 quoting-marker) ;bugfix2023/12/15
(setq e (+ e len))
(forward-line 1)))))
その他は ~okazaki/.emacs.elを見るなどして追加するとよい。
//-------------------------------------------------------...
* LISP (emacs-lisp) [#w6d7f0a3]
** *scratch*バッファを利用して lispプログラムを作る [#x3e...
「*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 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 でも実行できる ...
** 用語? [#d2b80a35]
整数 0, 1, 2, -1, など
キャラクタ ?A ?a ?\C-a など(入力に対応する)
文字列 "..."
ブール値 t, nil
シンボル 関数名や変数名であり、評価され、値が返る
'シンボル シンボル名そのもの
** リストの例 [#x6f343f0]
;; ( 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)) ; リストをグローバル変数hog...
hogeval ; 変数を評価すると 値が返る ...
(hogeval) ; 評価するとリストの先頭にある「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) ...
** 演算 [#f665b947]
論理演算 and, or, not, =, <, >, eq, など
算術演算 +, *, -, /, など
(注) 関数名であるので、(+ 1 2) などと使う
** フロー制御 [#n0ca2871]
(cond ((条件式1) (真のときの評価式))
((条件式2) (真のときの評価式))
...
((条件式N) (真のときの評価式))
( t (どれも真にならないときの評価式)))
(if (条件文) (真のときの評価式)
(偽のときの評価式))
(progn (逐次処理の式1)
(逐次処理の式2)
...
(逐次処理の式N))
(let ((ローカル変数1 値1)
(ローカル変数2 値2)
...
(ローカル変数N 値N))
(逐次処理の式1)
(逐次処理の式2)
...
(逐次処理の式M))
(while (条件式)
(逐次処理の式1)
(逐次処理の式2)
...
(逐次処理の式M))
//-------------------------------------------------------...
* emacsclient [#qcbac301]
ある意味便利そうではあるが、ずぼらな人は使うのを避けたほ...
できること:~
あるマシンでバックグラウンドでサーバーのemacsをひとつ動か...
emacsclientで通常のemacsと同じ操作ができる。
ただし、開いたファイルはすべてサーバーemacsがもっており、
別途emacsclientを起動しても、先にemacsclientで開いていた...
その逆もできる(別途起動したemacsclientで開いたファイルを...
すなわち、バッファは共有されし、コピペ(クリップボードや...
サーバーemacsは明示的に終了させるまで、ログアウトしても動...
ファイル(バッファ)も明示的に閉じない限り開きっぱなしに...
別の言い方をすると、再ログインして続きから作業が可能であ...
もしかしたら、ひとつのマシンに限らず、複数のマシンでひと...
具体的には、~
1) 複数の端末(TeraTermなど)で動かしたemacsclientで共同・...
2) 複数のフレーム(X11ウィンドウ)を表示させるようにemacscl...
これはあまり有意義な使い方ではないだろう。~
3) フレーム(X11ウィンドウ)をひとつだけ表示させて、端末(gn...
どの端末からでも表示済みのフレームで作業する。~
** 1) 複数の端末(TeraTermなど)で動かしたemacsclientで共同...
emacs --daemon #サーバーemacsを起動
#(ひとつだけが実行可。どこの端末からでも...
emacsclient -nw #-nwのかわりに-tや-ttyでも同じ
emacsclient -e '(kill-emacs)' #サーバーemacsの終了
サーバーemacsの起動を次のようにしてもよい。
emacsclient -a '' -nw #サーバーが動いていなければ...
emacsclient -a '' hoge.txt # 〃 そして、ファイルを開く。
#ただし、Windows IMSで日本語...
** 3) フレーム(X11ウィンドウ)をひとつだけ表示させてemacsc...
emacs --daemon #サーバー起動
#(ひとつだけが実行可。どこの端末からでも...
emacsclient --no-wait -c #-cオプションで新規フレーム(X1...
#--no-waitでプロンプトをすぐ返...
#なお、フレームをC-x C-cで閉じ...
emacsclient --no-wait hoge.txt #動いているフレームでフ...
#もしフレームがなければ...
emacsclient -e '(kill-emacs)' #サーバーemacsの終了
サーバーemacsの起動を次のようにしてもよい。
emacsclient -a '' -c #サーバーが動いていなけれ...
emacsclient -a '' -c hoge.txt # 〃 ...
emacsclient -a '' hoge.txt # 〃 ...
#もしフレームがなければ現...
//-------------------------------------------------------...
終了行:
#menu(howto/MenuBar)
* howto/emacs [#ca2c810f]
#contents
** 一行メモ [#p4db8e34]
- その他よく使う事柄 -- &new{2018-12-21 (金) 12:32:17};
-- マクロ定義と実行
-- 初期設定ファイル .emacs.el
-- バッファのメジャーモードとマイナーモード
-- 漢字コードに関すること
-- コマンドの作成
-- キーバインディングの変更
-- 開いているファイルのコンパイル
- 日本語表示・入力に関する事柄 -- &new{2019-08-27 (火) 1...
-- TeraTermProの画面上で emacsを使うと、表示がずれて正常...
下記の"[[.emacs.elに入れたらよいもの>#ebd16c95]]"から Kan...
-- mozc,anthyによる日本語入力(Xmingで emacsウィンドウ)の...
下記の"[[.emacs.elに入れたらよいもの>#ebd16c95]]"から Kan...
[ref] http://mickey-happygolucky.hatenablog.com/entry/201...
-- emacs-anthyのキーバインディング
C-\ 日本語入力への切り替え
C-o または Shift-→ 変換中の文節を1文字長くする。
C-i または Shift-← 変換中の文節を1文字短くする。
C-f または → 変換する文節を次のものに移動する。
C-b または ← 変換する文節を次のものに移動する。
SPC 文節の変換
ENTER または anykey すべての文節を確定する。
など
-- windows上に Xmingで emacsのウィンドウ画面を表示してい...
そのままではmozcやanthyは使えない(そもそもRocks7,CentOS...
emacsデフォルトのkkcインプットメソッドは使える。
kkcのキーバインディング(あまり便利ではない。辞書学習機...
IMEが利用できる。
C-\ 日本語入力への切り替え
C-o 変換中の文節を1文字長くする。
C-i 変換中の文節を1文字短くする。
C-f 変換中の文節を確定し、次の文節に移動する。
SPC 変換
K カタカナに変換
-- emacs-mozcのキーバインディング、略
- emacsのウィンドウだと}や]が入力できない? -- &new{2019...
-- Xmingのインストール時に保存したショートカット config.x...
-- オプション -wgl でOpenGLのアクセラレーションを有効化す...
- emacsのウィンドウで等幅フォントを使うには? -- &new{20...
- TABでspace入力! -- &new{2020-03-09 (月) 05:01:48};
- リンクメモ -- &new{2021-11-18 (木) 14:48:35};
-- https://emacs-jp.github.io/
-- [[https://qiita.com/Ladicle/items/>https://qiita.com/L...
-- https://github.com/DarthFennec/highlight-indent-guides...
-- https://mako-note.com/python-emacs-ide/#highlight-inde...
-- https://github.com/zk-phi/indent-guide
- load-pathとload https://www.math.s.chiba-u.ac.jp/~matsu...
- emacs -q #.emacs.el を読み込まない -- &new{2021-11...
- M-C-v 他のウィンドウ(次のもののみ)をスクロールする -- ...
- M-: そのバッファのもとで、ミニバッファを使って式を評...
- emacsマニュアル -- &new{2021-11-21 (日) 21:46:07};
-- https://ayatakesi.github.io/emacs/24.5/elisp_html/Dedi...
-- https://ayatakesi.github.io/emacs/24.5/elisp_html/Wind...
-- https://ayatakesi.github.io/emacs/24.5/elisp_html/Fram...
-- https://ayatakesi.github.io/emacs/24.5/elisp_html/Spli...
-- https://ayatakesi.github.io/emacs/24.5/elisp_html/Wind...
- 2020年代のEmacs入門 https://emacs-jp.github.io/tips/ema...
- emacsのフレーム操作 -- &new{2022-01-24 (月) 14:45:16};
C-x 5 2 新しいフレームを開く
C-x 5 o 次のフレームに移る(フレームをアクティブにする)
C-x 5 0 カレントフレームを閉じる
C-x 5 1 カレントフレーム以外を閉じる
- M-x sort-lines でリージョンを並べ替えることが出来る -- ...
- diredモード: sで日付順/名前順に並び替える; (setq dired...
- C-x C-v 今のバッファにファイルを開く(ファイルを開いて...
- M-x view-lossage #直近でタイプした100キーを表示(さら...
#comment
//-------------------------------------------------------...
* その他 [#w51c7db1]
** terminal-emulatorの使い方 [#g6ec0608]
M-x ansi-term 又は M-x term のあと、動かすプログラムを入...
使い方(ansi-term):
新規に *ansi-term*バッファとして開かれる(複数起動可)
主なキーバインディング(termより制限がゆるい)
C-c C-j term-line-mode lineモードへ切替え。通常のバ...
C-c C-k term-char-mode charモードへ切替え(デフォルト...
C-c C-c charモードで、C-cを送信
C-x ... は有効らしい
M-x ... は効かないので、lineモードに移行してから使う
使い方(term):
必ず *terminal*バッファに開かれる(ひとつだけ起動でき...
次のキーバインディングのみ(他は動かしたプログラムに渡...
C-c C-j term-line-mode lineモードへ切替え。通常のバ...
C-c C-k term-char-mode charモードへ切替え(デフォルト...
C-c C-c charモードで、C-cを送信
C-c CHAR charモードで、C-x CHAR の動作...
C-c C-q ページ機能のon/offトグル(デフ...
(コメント) M-x shell や M-x run-python もあるがこれらは...
** TABをスペースに変換する [#n2210e79]
リージョンを指定して、
M-x untabify
** リージョンをLinuxコマンドに渡して、いろいろする [#qc8b...
C-u M-| COMMAND リージョンをコマンドの標準入力に渡して...
M-| COMMAND リージョンをコマンドの標準入力に渡す。...
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
に置き換わる。
** 電卓がわりに使う [#if0c0dd7]
「*scratch*」バッファで直接 emacs-lispの実行ができる。実...
; 計算例
(* 71 3 6) # 71 * 3 * 6
(* (+ 71 3 2) 3 6) # (71+3+2) * 3 * 6
(sqrt 2.0) # ルート2
** 検索 [#h936bd94]
- C-sを押し前方検索する文字をタイプしてゆく。次を検索する...
- C-rを押し後方検索する文字をタイプしてゆく。次を検索する...
- M-x isearch-forward-regexp で正規表現を使った前方検索が...
たとえば
[0-9]\.[0-9]+\(e-[0-9]+\)L
と打つと、1.234e-5Lや2.3e-4Lなどを検索できる。次を検索す...
** 置換 [#b248458e]
- M-% または M-x query-replace で文字列を置換できる。
- M-x query-replace-regexp で文字列を正規表現を使って置換...
** 文字の色を変更する [#naf1b35a]
(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から Foreg...
(3) C-x C-s で変更の設定を .emacs.elに保存する。~
適当に .emacs.elを書き直しても良いだろう。
[ref]~
http://qiita.com/AnchorBlues/items/91026c4f1c0745f5b851
** ミニバッファの文字の色を変更する [#a724145f]
例えばつぎのものを .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~
** Emacsで文字コード指定してのファイル開き直しをしたい [#...
C-x ret rとして、utf-8 とする(UTF-8で開く場合)。
(このショートカットにバインドされている関数は M-x revert...
ファイル先頭に、
# -*- coding:utf-8; mode:shell-script; -*-
などを追加しておくとよい。
C言語のときは1行目に
/* -*- coding:utf-8; -*- */
を入れるとよい。
** Emacsで自動的に変数設定やe-Lispコードを動かす例 [#k3ac...
scriptversion=2024-10-21.22:51:27; # JST
#-*- coding:utf-8; mode:shell-script; -*-
#Local Variables:
#mode: shell-script
#sh-indentation: 2
#eval: (add-hook 'before-save-hook 'time-stamp) #最初に...
#time-stamp-start: "scriptversion="
#time-stamp-format: "%:y-%02m-%02d.%02H:%02M:%02S"
#time-stamp-time-zone: "Asia/Tokyo"
#time-stamp-end: "; "
#End:
** ヘルプの表示、入力補完 [#nac1c120]
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 E...
にコードがある。
(defun variable-apropos (string)
"Like apropos but lists only symbols that are names of...
(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 変数名、関数名を補完する
** キーボードマクロ [#fd69937d]
*** 定義と実行 [#i5d0ebb8]
C-x ( マクロ定義を開始する
このあいだのキー操作がキーボードマクロとして記録される
C-x ) マクロ定義を終了する
C-x e 記録したキーボードマクロを実行する
C-u NNN C-x e として、NNN回 C-x e を実行することもできる
*** 保存と読み込み [#sa8b6d73]
M-x name-last-kbd-macro 定義したマクロに名前を付ける(M...
M-x insert-kbd-macro 名前を付けたマクロを、バッファ...
M-x load-file ファイルに保存したマクロを読み...
.emacs.elに (load-file ファイ...
** リカーシブエディット(再帰編集) [#rf29e7c0]
マクロ定義中に C-x q を入力 マクロ実行時に確認応答する...
M-x query-replace など 実行中に ?でヘルプが出る(C...
M-x recursive-edit 再帰編集をする(編集終了は ...
** その他の編集 [#df4df1ba]
*** 単語の補間 [#d10d1919]
M-/ 単語を補間する(入力中の文字列を、既に入力済みの...
*** 単語を大文字、小文字に変換 [#f9000cdc]
M-u カーソル位置から、次の単語区切りまでの文字列を、...
M-l カーソル位置から、次の単語区切りまでの文字列を、...
//-------------------------------------------------------...
* 基本 [#g5ba951c]
** 用語とチュートリアル [#w06b9ac0]
*** バッファ [#ba693e00]
emacsでは、開いたファイルはバッファというものに読み込まれ...
(特別な事をしなくてもふつうにそれを編集してファイルに上...
つまり、開いたファイルは同じ名前のバッファに対応していま...
また、次のようにファイルに対応していないバッファもありま...
- Buffer Listsバッファ (バッファのリストを表示する)
- scratchバッファ (デフォルトでつくられている)
- Messagesバッファ (メッセージの履歴が保存されている)
- など
また、emacsではいくつでもファイルを開くことができます。
emacsでは
少なくとも1枚のバッファが表示されていますが、
emacsウィンドウを分割して、いくつでも同時にバッファを
表示することもできます。
(注)「ウィンドウとフレーム」
emacsでは、バッファを表示している部分を ウィンドウ(バッフ...
emacs自体の全体画面のことを、フレーム(フレームウィンドウ)...
(X11でemacsを立ち上げている場合、フレームは X11の用語で...
キャラクタ端末でemacsを立ち上げている場合は、フレームは端...
*** モードライン [#ib7eb327]
emacsでバッファを表示すると、バッファの下に反転した行が1...
(バッファが1枚だけの場合はちょうど下から二行目に反転し...
この行をモードラインと呼ぶ。
そのバッファ名などが表示されている
(利用している文字コード、使用しているモード、行数なども...
*** ミニバッファ [#s11386ee]
emacsの一番下の行のことをミニバッファと呼ぶ。
コマンド実行後にメッセージが表示されたりします。
コマンドを入力したり、コマンドが要求する入力
(例えばファイル名入力する)にも使われます。
*** チュートリアル [#r0f3a0fc]
emacs自身には簡単なチュートリアルが含まれています。~
$ emacs~
とした後、~
ESC~
そして~
x~
とキーを押すと、ミニバッファに M-x が表示され、
その右にカーソルが表示されます。
つづけて、~
help-with-tutorial~
という文字を入力(これはコマンド名になります)して ENTERキー
を押す。
すると TUTORIALのバッファがでてくるので、
説明を読みながら操作を学習できます。
ちなみに、emacsのコマンドはほぼすべてがLispの関数です。
emacsは、実はLispインタープリタです。
//-------------------------------------------------------...
** いくつかの操作 [#kac255bc]
*** Ctrl, Meta, CAPS, Bindingに関する基本 [#z7985c5d]
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-op...
[ref] https://blog.sakaki333.com/blog/view/11
Bind, Bindingという言葉。
emacsのコマンドはほとんどLisp関数ですが、よく使うコマンド...
ショートカットとしていくつかのキーの組み合わせで実行でき...
コマンドとキーの対応をバインディングと呼びます。
(例) ファイルを開くコマンドは find-file です。
C-x C-f にバインドされています。
*** 終了などの操作 [#y9b1c444]
- emacsの終了 C-x C-c
- コマンドの途中終了(quit) C-g (何か不明なコマンドを実...
キー入力待ちなどになっている。途中終了したいときは C-gを...
*** ファイルに関する操作 [#obee60d3]
- ファイルを開く C-x C-f (ディレクトリも開ける)
- ファイルの保存 C-x C-s
- ディレクトリを開く C-x d (ファイラーとして使えて、カ...
もってゆくことで、例えば次のような操作ができる)
-- f を押すとそのファイルを開く。
-- R を押すと、ファイル名を変更できる。
-- d でマークする。xを押すとマークしたファイルを削除でき...
-- C でファイルをコピーする。
*** カーソル移動 [#gff0cfec]
- カーソルの移動 ← → ↑ ↓キー、またはそれぞれ C-b C-f C-p...
- 行の先頭に移動 C-a
- 行の末尾に移動 C-e
- バッファの先頭に移動 M-<
- バッファの末尾に移動 M->
- 関数の先頭に移動 M-a (C言語モードのときなど)
- 関数の末尾に移動 M-e (C言語モードのときなど)
- カーソルのある行が画面中央にくるようにバッファを表示 C...
-- C-x C-l カーソルをウィンドウの中心に移動
-- C-u 0 C-x C-l カーソルをウィンドウの一番上に移動
-- C-u -1 C-x C-l カーソルをウィンドウの一番下に移動
*** 編集 [#y4f8406d]
- カーソル位置の1文字を消す C-d
-- Del, BSが効かない場合は、キーのバインディングがデフォ...
Del, BSで消すにはバインディングを変更する。
- カーソル位置から1単語を消す M-d
- カーソルから行の右側を消す C-k
- アンドゥ C-x u
- 直前の操作を繰り返す C-x z
-- 直前に C-x z をしていた場合は単に z を押すと再度その操...
*** コピー・キル・ペーストの編集 [#q6b93273]
コピーとキルは、マークされた位置とカーソル位置の間が対象...
なお、マークセットのキーバインドは使っている環境によって...
多く見かけられる(そのため設定の変更が必要となる場合もあ...
- コピー: C-SPC (または C-@) でマークセットをしてカーソル...
- キル: C-SPC (または C-@) でマークセットをしてカーソルを...
- ペースト: C-y でカーソル位置に、最後にコピー又はキルし...
*** 矩形の編集 [#xf53b52a]
- 矩形のキル: C-SPC (または C-@) でマークセットをしてカー...
- 矩形のペースト: C-x r y (または M-x yank-rectangle)で...
*** コマンドに引数を渡す [#za13732b]
- C-u 数字をタイプし コマンドをタイプ。
コマンドはなんでもよく( 例) C-f や M-x f や M-x forward-...
*** バッファに関する操作 [#w539e8ca]
- 一画面下を表示 C-v
- 一画面上を表示 M-v
- バッファの一覧を表示 C-x C-b (カーソルをバッファ名の...
もってゆくことで、例えば次のような操作が出来る)
-- ENTER を押すとそのバッファを表示する。
-- d でマークする。xを押すとマークしたバッファは削除でき...
- バッファの切り替え C-x b
- カーソルを次のバッファの移動 C-x o
- カーソルのあるバッファを非表示 C-x 0
- カーソルのあるバッファのみを表示 C-x 1
- バッファを上下に二分割 C-x 2
- バッファを左右に二分割 C-x 3
//-------------------------------------------------------...
** .emacs.elに入れたらよいもの [#ebd16c95]
とくに、cygtermやtera term上でemacsを起動したとき、下記が...
必須でもある。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...
;;;
;;; Kanji-code
;;;
;(some commands)
; 'C-h C <RET>' : Describe the coding systems curren...
; 'M-x list-coding-systems' : Display a list of all codi...
(set-language-environment "Japanese")
(set-keyboard-coding-system 'utf-8) ; Coding system f...
(set-terminal-coding-system 'utf-8) ; Coding system f...
(set-buffer-file-coding-system 'utf-8) ; Coding system f...
(set-default-coding-systems 'utf-8) ; Coding system f...
; file names, key...
(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 ...
(setq buffer-file-coding-syste...
nil)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...
;;;
;;; リージョンに引用マークをつける
;;; http://www.sawada.riec.tohoku.ac.jp/people/nobuyuki/...
;;;
(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 quoting-marker) ;bugfix2023/12/15
(setq e (+ e len))
(forward-line 1)))))
その他は ~okazaki/.emacs.elを見るなどして追加するとよい。
//-------------------------------------------------------...
* LISP (emacs-lisp) [#w6d7f0a3]
** *scratch*バッファを利用して lispプログラムを作る [#x3e...
「*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 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 でも実行できる ...
** 用語? [#d2b80a35]
整数 0, 1, 2, -1, など
キャラクタ ?A ?a ?\C-a など(入力に対応する)
文字列 "..."
ブール値 t, nil
シンボル 関数名や変数名であり、評価され、値が返る
'シンボル シンボル名そのもの
** リストの例 [#x6f343f0]
;; ( 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)) ; リストをグローバル変数hog...
hogeval ; 変数を評価すると 値が返る ...
(hogeval) ; 評価するとリストの先頭にある「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) ...
** 演算 [#f665b947]
論理演算 and, or, not, =, <, >, eq, など
算術演算 +, *, -, /, など
(注) 関数名であるので、(+ 1 2) などと使う
** フロー制御 [#n0ca2871]
(cond ((条件式1) (真のときの評価式))
((条件式2) (真のときの評価式))
...
((条件式N) (真のときの評価式))
( t (どれも真にならないときの評価式)))
(if (条件文) (真のときの評価式)
(偽のときの評価式))
(progn (逐次処理の式1)
(逐次処理の式2)
...
(逐次処理の式N))
(let ((ローカル変数1 値1)
(ローカル変数2 値2)
...
(ローカル変数N 値N))
(逐次処理の式1)
(逐次処理の式2)
...
(逐次処理の式M))
(while (条件式)
(逐次処理の式1)
(逐次処理の式2)
...
(逐次処理の式M))
//-------------------------------------------------------...
* emacsclient [#qcbac301]
ある意味便利そうではあるが、ずぼらな人は使うのを避けたほ...
できること:~
あるマシンでバックグラウンドでサーバーのemacsをひとつ動か...
emacsclientで通常のemacsと同じ操作ができる。
ただし、開いたファイルはすべてサーバーemacsがもっており、
別途emacsclientを起動しても、先にemacsclientで開いていた...
その逆もできる(別途起動したemacsclientで開いたファイルを...
すなわち、バッファは共有されし、コピペ(クリップボードや...
サーバーemacsは明示的に終了させるまで、ログアウトしても動...
ファイル(バッファ)も明示的に閉じない限り開きっぱなしに...
別の言い方をすると、再ログインして続きから作業が可能であ...
もしかしたら、ひとつのマシンに限らず、複数のマシンでひと...
具体的には、~
1) 複数の端末(TeraTermなど)で動かしたemacsclientで共同・...
2) 複数のフレーム(X11ウィンドウ)を表示させるようにemacscl...
これはあまり有意義な使い方ではないだろう。~
3) フレーム(X11ウィンドウ)をひとつだけ表示させて、端末(gn...
どの端末からでも表示済みのフレームで作業する。~
** 1) 複数の端末(TeraTermなど)で動かしたemacsclientで共同...
emacs --daemon #サーバーemacsを起動
#(ひとつだけが実行可。どこの端末からでも...
emacsclient -nw #-nwのかわりに-tや-ttyでも同じ
emacsclient -e '(kill-emacs)' #サーバーemacsの終了
サーバーemacsの起動を次のようにしてもよい。
emacsclient -a '' -nw #サーバーが動いていなければ...
emacsclient -a '' hoge.txt # 〃 そして、ファイルを開く。
#ただし、Windows IMSで日本語...
** 3) フレーム(X11ウィンドウ)をひとつだけ表示させてemacsc...
emacs --daemon #サーバー起動
#(ひとつだけが実行可。どこの端末からでも...
emacsclient --no-wait -c #-cオプションで新規フレーム(X1...
#--no-waitでプロンプトをすぐ返...
#なお、フレームをC-x C-cで閉じ...
emacsclient --no-wait hoge.txt #動いているフレームでフ...
#もしフレームがなければ...
emacsclient -e '(kill-emacs)' #サーバーemacsの終了
サーバーemacsの起動を次のようにしてもよい。
emacsclient -a '' -c #サーバーが動いていなけれ...
emacsclient -a '' -c hoge.txt # 〃 ...
emacsclient -a '' hoge.txt # 〃 ...
#もしフレームがなければ現...
//-------------------------------------------------------...
ページ名: