はじめに
私は教科書を書くつもりはない、または
Lisp入門コースであり、完全な説明のふりをしないでください。 A
私は自分の意見でいくつかの有用な情報を提供するつもりです
初心者がemacsを使用してカスタマイズするのに役立ちます
裁量と簡単な関数を書くこともできます
emacsの使用中に使用します。
Emacsは、どこでも繰り返し言及されているように、
テキストエディタとLispインタプリタの組み合わせ。 必要なだけ
それを使用することができます。
職場の準備
始めるために、emacsを調整して、快適に使えるようにします
働く。
次の行を.emacsに挿入します。
( setq auto-mode-alist
( 追加
' (
( "\\。el $" 。 lisp-mode ) ) ) )
( global-font-lock-mode 1 )
括弧の最初のセットは、ファイルを開いたときに
拡張子.el、バッファ内の作業モード
Lispプログラムのテキスト。 最後の行はバックライトをオンにします
構文。 言語演算子をさまざまな素敵な色に色付けします。 それは
プログラムのテキストを読むのに本当に役立ちます。 編集したら
emacsの.emacsを再起動して、設定ファイルを再読み込みします。
ここで、経験豊富な同志は、上記の操作は必要ないことを示唆しました。なぜなら、必要なモードはemacsの最新バージョンではデフォルトで有効になっているからです。
emaxからすべてを実行しようとします。 作成する必要があります
実験ファイルのディレクトリ。 そしてファイル。
ホームディレクトリにいるとします(つまり、
私たちは何らかのUNIX上にいます)。 プッシュ:
| キー| 実行されたアクション| | ----------------------- + ------------------------- ---------------------- | | Cx Cf RET | ホームディレクトリでdiredモードに移動します| | +ディレクトリ名RET | 新しいディレクトリを作成| | RET | 作成されたディレクトリに移動します| | Cx Cf myfile.el RET | ファイルmyfile.elを開きます|
最も一般的な概念と作業方法
Lispでは、変数と関数という2つの概念を知る必要があります。 実は
変数は、返される関数と見なすこともできます
この変数に割り当てられた値。 変数と関数には
名前は一連の文字です。 プログラムで名前を囲む場合
かっこ、関数として実行されます。 その名前が
変数の場合、lispインタープリターはエラーをスローします。 Lispでは、名前は受け入れられます
名前の論理部分をハイフンで区切って記述します。 例えば
マイクール機能
次に、関数の呼び出し方法について説明します。 たとえば、Cとは異なり、
関数は次のように呼び出されます。
(関数名arg1 arg2 arg3 ......)
つまり 関数呼び出しは括弧で囲まれています。 括弧内の最初の名前は名前です
関数、他の名前は引数です。 Cのように、
引数は、値を返す式の場合があります。たとえば
他の関数の呼び出し、たとえば:
(関数名arg1(関数名)arg3 ......)
これはすべて良いですが、それをどのように扱うのですか? Emacsはこれで動作します
非常に簡単でシンプルです。 2を追加することから始めましょう
2. myfile.elファイルに次の式を記述します。
(+ 2 2)
それを解読してみましょう。 「+」記号は機能です。
彼女の2つの議論を合計します。 次の2つのデュースは引数です
機能。 実行してみましょう。 これを行うには、emacsカーソルを右に置きます
式の右角かっこ(閉じる)を押し、Cx eを押します。 すべての場合
正しく行われると、ミニバッファーに「4」という数字が表示されます。 やったー
表現を満たしました。
完全なプログラミングの場合、使用するのが習慣です
変数。 やってみよう。 最初に割り当てる必要があります
変数値。
( 'myvar-variable 4を設定)
ここには何がありますか?
| 名前| コメント| | ---------------- + -------------------------------- ----------------------------------- | | セット| 最初の引数を2番目の値に設定する関数| | myvar-variable | 値を割り当てる変数の名前| | 4 | 割り当てられた値| | '| 名前が値を返すべきでないことを示すアイコン|
隠し場所(単一引用符)に注意してください。名前は付けられません。
値を返す変数。 それがなければ、インタプリタのLispは
間違いを訴えます。 割り当て関数には別のオプションがあります。
引用符で変数名をエスケープする必要はありません、setq。 このために
レコード機能は次のようになります。
(setq myvar-variable 4)
さて、もう一つの便利なトリック。 値を表示する方法
変数に割り当てられましたか? これを行うには、(直接
プログラムテキスト)変数名の右側にカーソルを置き、Cx eを押します。 で
ミニバッファは変数の値を表示します。 ご注意ください
あなたが持っている変数でこれをしようとすると
引用符をエスケープ、値は表示されません、名前をエスケープします
値は返されません。
文字列値を変数に割り当てます。 とても簡単です。 ひも
引用符で囲みます。
( setq myvar-str-variable "My string" )
ミニバッファへのメッセージ出力。
(メッセージ「私のメッセージ」)
バッファーの現在のカーソル位置に行を挿入します。
(「My string」を挿入)
一連の機能の実行:
( 予言
( setq my-var "Hello" )
( メッセージ my-var ) )
独自の関数を定義する
独自の関数を定義することほど簡単なことはありません。 構文
定義は次のとおりです。
( defun myf-test ( a b ... )
「ドキュメント行」
(式)
...
(式) )
この定義では:
| 何| コメント| | ----------------------- + ------------------------- ----------------------- | | defun | 関数定義のキーワード| | myf-test | 関数名| | (ab)| パラメータリスト| | 「ドキュメントライン」| ドキュメント行。 Ch myf-testで発行されます| | (式)| 身体機能で実行される式|
ご注意 この関数は、最後の式によって返された値を返します。
例として独自の関数を定義してみましょう。
( 予言
( setq my-var "Hello" )
( メッセージ my-var ) )
検証:
(myf-test 1 2)
仕事の受け取り:面倒が少なくなったこと、機能をデバッグするときは、次の方法を使用すると便利です。
( 予言
( defun myf-test ( a b )
「最初の引数を2番目に追加します。結果を返します」
( + a b ) ))
( myf-test 1 2 )
)
覚えているなら、「progn」ステートメントはリストを実行します
彼の体の表情。 この場合、最初に定義が実行されます
関数、テストケースが実行のために呼び出されます。 何かを変える
定義では、すぐに確認できます。
しかし、この方法で定義された関数が1つあります。
Mxコマンド「関数名」を呼び出して実行できます。 のために
これを行うには、関数定義が必要です
「インタラクティブ」ステートメントを挿入します。
( defun myf- test- 1 ( )
「最初の引数を2番目に追加します。結果を返します」
( インタラクティブ )
( メッセージ "こんにちは" ) ))
この定義を完了し、Mx myf-test-1 RETコマンドを発行することにより、
ミニバッファーでHelloという単語を取得します
注:関数と変数の名前については、選択することをお勧めします
そして、emacs globalのように、一意のプレフィックスを使用します
名前空間。 私はeik-、名、ミドルネーム、ラストネームを使用します。 あなたに
あなた自身の何かを発明する必要があります。
おわりに
私の意見では、Lispからの説明された情報で十分です。
emacsカスタマイズの実験。 主にカスタマイズと
要約すると、emacs変数への値の割り当てと書き込み
独自の機能。
文学
- Ubuntuでは、emacs22パッケージに付属しています
Elispリファレンスガイド。 Mx info、Cs elisp
- グーグル
- Emacs Lispプログラミング