6

私は Lisp コード用に Paredit モードで Emacs を使用しています。

println で関数呼び出しをラップしようとしています:

(square 5)
(println (square 5))

paredit で最終的に何が起こるかは次のとおりです。

(square 5)
(println) (square 5)

println の閉じ括弧を削除して最後に移動する方法はありません。

私が今やっている方法は次のとおりです。1.関数呼び出しを削除し、println内でヤンクします2.括弧なしでprintlnを記述し、コードを視覚的に選択して括弧で囲みます

(square 5)
println (square 5)
=> select block of code and type (
(println (square 5))

これらのアプローチはどちらも面倒です。これは、Paredit で裏返しにコードを書くときはいつでもよくある問題のようです。どんな助けでもいただければ幸いです

4

7 に答える 7

8

paredit-wrap-roundコマンドが役立つ場合があります(Mにバインドされています-(私が使用しているpareditバージョンでは)。

于 2013-01-05T09:40:10.543 に答える
6

他の回答とは対照的に、私はこれに Ctrl-Right を使用する傾向があります:

(println|) (square 5)

(|はカーソルの場所です)、Ctrl-Right を押すだけで正しい結果が得られます。

于 2013-01-05T14:34:42.733 に答える
5

M-(

呼び出しparedit-insert-html-examplesて、HTMLWebページのチートシートを生成できます。1つのバージョンはここにあります。

于 2013-01-05T09:38:57.363 に答える
2

あなたの場合、解決策はまたはM-2 M-(ですM-( C-)

于 2013-01-05T11:00:06.670 に答える
2

印刷フォームを正方形のフォームに巻き付ける 3 つの方法を段階的に説明します。(3つのうち2つの方法は、他の回答ですでに言及されています)

(1)カット&タイプ&ペースト

(+ (square 3) 4)
;;; make sure cursor is at right place (| is cursor)
(+ |(square 3) 4)
;;; mark-sexp and kill-region
(+ | 4)
;;; type the print form and make sure cursor is at right place
(+ (print |) 4)
;;; paste
(+ (print (square 3)) 4)

(2) タイプ&スラーフ

(+ (square 3) 4)
;;; make sure cursor is at right place (| is cursor)
(+ |(square 3) 4)
;;; type the print form and make sure cursor is at right place
(+ (print|) (square 3) 4)
;;; paredit-forward-slurp-sexp
(+ (print (square 3)) 4)

(3)ラップ&タイプ

(+ (square 3) 4)
;;; make sure cursor is at right place (| is cursor)
(+ |(square 3) 4)
;;; paredit-wrap-round
(+ (|(square 3)) 4)
;;; type print
(+ (print (square 3)) 4)

カット&タイプ&ペーストが一番面倒です。これは paredit に依存せず、複雑な外部フォームを複数行形式の複数の内部フォームにラップする場合に一般化するのが最も簡単です。

(let ((x 1))
  (moo)
  (oink)
  (oink))

の中へ

(let ((x 1))
  (moo)
  (mapc (lambda (x)
          (oink)
          (oink))
        (list 1 2 3)))

mapc-over-lambda フォームを 2 つの oink にラップすることによって。

Type & slurf が最も知られているようです。mapc-over-lambda の場合にも一般化できます。

ラップ & タイプは、最も簡単に入力できます。これをmap-over-lambdaの場合に一般化すると、2つのoinkを選択し、 を押し(てラップし、ラムダ形式を書き終え、ラムダ形式を選択し、 を押し(てラップし、mapcと入力すると、CMfを使用できますラムダ形式と型をクロスオーバーします (リスト 1 2 3)。

于 2013-06-20T07:35:48.657 に答える
1

これにはいくつかの方法があります。私が通常これを行う方法は、タイプです

"("

あなたを得る

()println

そして、CS-) を取得します

(println)

paredit を使用して開始する最良の方法は、モニターの横に貼り付けた紙に paredit チートシートを用意することです。または、チートシートと同じ例を示すツールチップを含むメニュー項目を追加する paredit-menu をインストールすることもできます。

于 2013-01-06T14:28:12.990 に答える