初心者のためのEmacs:elisp

はじめに




私は教科書を書くつもりはない、または

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変数への値の割り当てと書き込み

独自の機能。



文学




  1. Ubuntuでは、emacs22パッケージに付属しています

    Elispリファレンスガイド。 Mx info、Cs elisp

  2. グーグル

  3. Emacs Lispプログラミング




All Articles