Rを使いまくっていると、こんな感じのコードが結構出てくるかもしれない。何をやっているかは、どーでもよい。
unlist(Map(function(i){(function(x,n){return(sum(x^n))})(1:10,i)},1:10))
で、このコードのうちある箇所をマークしたいとする。
function(i){(function(x,n){return(sum(x^n))})(1:10,i)}
さっきのコードからマークしてkillとかをしようと思うと、括弧がネストしまくっていて*1、死にたくなってくる。そんな時にS式の登場である。
S式単位の移動
まず、EmacsにおけるS式単位での移動等について復習しておこう。まず、こんなlistがあったとする。
(list '(a b c d e) '(f g '(h i j)))
そんなに複雑でもないが、以下のところを切り張りしたいとき
(f g '(h i j))
こんな感じにしておいて
C-M-@(mark-sexp((卑猥な表現で読んだ人は(ry)))を押すと、regionが次のような感じになる!!
これを切り張りすれば、S式なので自由に使いまわせる、というわけである。S式万歳!!
Rに戻ると
さっきの例。上のS式のやつをこれに適用して、切り取ってみると
unlist(Map(function(i){(function(x,n){return(sum(x^n))})(1:10,i)},1:10))
functionのところが残って、大変残念な感じになってしまう。S式じゃないことを後悔していまいますね。RのコードをS式に変換するのを書こうかと思いましたがやめておきました。
どうするか
M-b(backward-word)という関数があるので、それを使う。
M-bを二回押すと…
欲しいものが出てきた!!2回押さないといけないのがあれですが、ネストした括弧を目で追うよりずっと楽ですね!!
*1:そんなでもないが