forward-sexp
)。
backward-sexp
)。
kill-sexp
)。
backward-kill-sexp
)。
backward-up-list
)。
down-list
)。
forward-list
)。
backward-list
)。
transpose-sexps
)。
mark-sexp
)。
S式を横断して前向きに移動するには、
C-M-f(forward-sexp
)を使います。
ポイントに続く最初の意味ある文字が開き区切り
(Lisp では‘(’、Cでは‘(’や‘[’や‘{’)であれば、
対応する閉じ区切りのうしろに移動します。
シンボル、文字列、数値を始める文字の場合には、
それらを横断してその末尾に移動します。
コマンドC-M-b(backward-sexp
)は、
S式を横断して後向きに移動します。
移動の詳しい規則は上記のC-M-fと同様ですが、方向は逆です。
S式のまえに接頭辞文字(Lispではシングルクォート、バッククォート、コンマ)が
ある場合には、それらも横断します。
ほとんどのモードでは、S式コマンドはコメントを空白であるかのように
飛び越えます。
C-M-fやC-M-bに引数を指定すると、 指定された回数だけ動作を繰り返します。 負の引数では、逆向きに移動します。
1つのS式全体をキルするには、C-M-k(kill-sexp
)や
C-M-<DEL>(backward-kill-sexp
)で行います。
C-M-kはC-M-fで横断するだけの文字をキルし、
C-M-<DEL>はC-M-bで横断するだけの文字をキルします。
S式コマンドと同様に、リストコマンドはリストを横断しますが、
リスト以外のS式(シンボルや文字列など)は飛び越します。
これらのコマンドは、C-M-n(forward-list
)と
C-M-p(backward-list
)です。
これらのコマンドが便利である主な理由は、
(コメントにはリストが何も含まれないのが普通なので)
コメントを無視するからです。
C-M-nとC-M-pは、可能な限り同じレベルの括弧にとどまります。
1つ(あるいはnだけ)上のレベルに移動するには、
C-M-u(backward-up-list
)を使います。
C-M-uは、対応の取れていない開き区切りのまえへ後向きに移動して、
1つレベルを上げます。
正の引数は反復回数になります。
負の引数は、移動を逆向きにしますが、やはり反復回数です。
つまり、前向きに移動して、1つ以上レベルを上げます。
リスト構造中で下のレベルに移動するには、
C-M-d(down-list
)を使います。
Lispモードでは、‘(’が唯一の開き区切りなので、
このコマンドは‘(’を探索するのとほとんど同じです。
引数は下がるべき括弧のレベルを指定します。
本当は役に立つのに、何の役に立つのだろうと思われるコマンドが
C-M-t(transpose-sexps
)です。
これはポイントのまえにあるS式を、つぎにあるS式を越えて移動するコマンドです。
引数は反復回数となり、負の引数では後向きにS式を移動します
(つまり正の引数を指定したC-M-tの効果を打ち消せる)。
引数が0の場合は、何もしないのではなくて、
ポイントのあとにあるS式とマークのあとにあるS式を入れ替えます。
バッファ内でつぎにあるS式の周りにリージョンを設定するには、
C-M-@(mark-sexp
)を使います。
このコマンドは、C-M-fによる移動先にマークを設定します。
C-M-@は、C-M-fと同様に引数を取ります。
とりわけ、負の引数は、直前のS式の先頭にマークを設定するのに便利です。
リストおよびS式コマンドが行う構文の解釈は、 構文テーブルに完全に支配されます。 たとえば、任意の文字を開き区切りとして宣言できて、 そうすると開き括弧のようにふるまうようになります。 See Syntax。