メジャーモードの構文テーブルを定義するときに、単語構成要素と記号構成要素の両方を定義できます。
それぞれいつ使用すればよいですか?たとえば、ヘビの場合foo_bar
に変数を書き込むプログラミング言語を考える_
と、単語または記号の一部である必要がありますか?
メジャーモードの構文テーブルを定義するときに、単語構成要素と記号構成要素の両方を定義できます。
それぞれいつ使用すればよいですか?たとえば、ヘビの場合foo_bar
に変数を書き込むプログラミング言語を考える_
と、単語または記号の一部である必要がありますか?
回答:
単語構成要素:「w」
人間の言語の単語の一部。これらは通常、プログラムの変数名とコマンド名で使用されます。すべての大文字と小文字、および数字は通常、単語の構成要素です。
シンボル構成要素: '_'
変数およびコマンド名で使用される追加の文字と単語構成要素。例には、Lispモードの文字「$&* + -_ <>」が含まれます。これは、英語の単語の一部ではない場合でも、シンボル名の一部になる場合があります。標準Cでは、記号で有効な唯一の非単語構成文字はアンダースコア「_」です。
礼儀gnu.org
それぞれいつ使用すればよいですか?たとえば、ヘビの場合foo_barで変数を書き込むプログラミング言語を考えると、_は単語または記号の一部である必要がありますか?
それはあなたが達成したいものに依存します。「_」は単語の一部である必要があります。このように、foo_barは1つの単語として扱われます。
その質問に目を向けてください、スーパーワードモードとサブワードモードについて話している興味深い答えがあります
_
記号構成要素として扱うので、なぜそれを単語構成要素として扱うことを提案するのですか
_
、単語と記号の区別を完全に無効にするためです。あなたが好きならM-f
、M-b
識別子ではなく言葉で移動すると、友人を、その後、むしろ変化よりメジャーモードの構文テーブルあなたが使用する必要がありますsuperword-mode
。
superword-mode
。
この回答は、質問のタイトル「単語と記号の違いは何ですか」に対処します。これは、@ Nsukamiによって適切に回答されたシンボル構文に関する質問の本文だけを話すわけではありません。
Emacsでのシンボルという言葉には2つの非常に異なる意味があります:
記号構文、単語構成文字 と 記号構成文字が含まれます。これは、任意のモード、特に任意のプログラミングモード/言語に適用できます。@Nsukamiはこの意味をかなりよく説明しました。
Emacs-Lispシンボル。これは構文カテゴリではありません。Lispシンボルは、名前、plist(プロパティリスト)、場合によっては値と関数の定義などの特定の特性を持つLispエンティティまたはオブジェクトです。
デフォルトでは、値セルと関数セルは空であり、plistは空のリストです(nil
)。Lisp関数はsymbol-name
、symbol-value
、symbol-function
、およびsymbol-plist
コンポーネントを返します。
ちなみに、Emacsのマニュアルではこれらのことについては触れられていません。Elispマニュアルでのみ説明されています。そしてもっと重要なことは、おそらく:最初の意味(構文)の" 記号 "に一致するインデックスエントリがないことです。 「シンボル」という用語を含むすべてのインデックスエントリは、2番目の意味(Lispシンボル)を指します。特に、「シンボル」と「構文」の両方を含むエントリはありません。そのようなインデックスエントリがあるべきかどうか、私は(おそらく)知りません。しかし、これは、LispオブジェクトとしてのシンボルのLispに対する重要性のいくつかの考えをあなたに与えることができます。
詳細については、以下を参照してください。
Elispマニュアル、ノード Symbols
Elispマニュアル、ノード Syntax Class Table
Emacs Wiki の用語集。
これはELispマニュアルで説明されています。
EmacsはLispの用語を使用しています。LispとEmacsがシンボルと呼ぶものは、他の多くのプログラミング言語が*識別子と呼ぶものです。これは、変数や関数などの名前です。
言葉はなし介在赤点斑と文字や数字の実行です。
ほとんどのプログラミング言語では、_
文字と数字に加えて、識別子にアンダースコア文字を使用できます。Lispなどの一部の言語では、さらに多くのことが可能です。プログラミング言語では、_
識別子に現れるような文字には、クラス「シンボル構成要素」があり_
ます。文字と数字のクラスは「単語構成要素」w
です。
単語に作用するコマンドは、単語構成要素のシーケンスを単語として扱います。式(たとえばforward-sexp
)に作用するコマンドは、識別子全体を一度に移動します。構文の強調表示は通常、すべてのシンボル構成要素を同じように扱います。
c-mode
emacsに付属するデフォルトでは_
、シンボル構成要素として使用されますが、ワード構成要素としては使用されません。ですから、それには十分な理由があると思います。予想通りに機能する多数のナビゲーションコマンドは言うまでもありません。最小の驚きの原則とそのすべて。