7

私は XCode と Netbeans を使用してきましたが、引用符や括弧を自動的に補完する機能があることに気付きました (他の IDE もこれを行うことが多いと思います)。この機能の名前はわかりませんが、Emacs でこれを行う方法はありますか?

たとえば、入力すると

printf("

自動入力してほしい

printf("")

カーソルを引用符の間に置きます。

ありがとうございました。

4

6 に答える 6

8

基本的なバリアントはAutoPairsです。YASnippetを使用しても、同じ効果ですが、もう少し洗練された効果を得ることができます。

于 2010-10-21T12:42:07.113 に答える
3

M-( と入力すると、( と ) の両方が挿入され、その間にポイントが残ります。次に M-) と入力すると、ポイントは閉じている ) を横切って移動します。私はいつもこれを使っています。

「paredit」と呼ばれるモード ( http://mumble.net/~campbell/emacs/paredit.elから入手可能) もあります。これは、この種の引用やその他のことも行います。

于 2010-10-21T15:30:12.337 に答える
3

デフォルトでは、paredit-mode は一致する終了要素を挿入するため、入力中に次のようなものが表示さprintf()printf("")、カーソルが引用符内に配置されます。

于 2010-10-21T15:52:03.630 に答える
2

ここにも私の5セント。

(setq skeleton-pair t)
(defvar skeletons-alist
  '((?\( . ?\))
    (?\" . ?\")
    (?[  . ?])
    (?{  . ?})
    (?$  . ?$)))

(global-set-key (kbd "(") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "[") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "\"") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "\'") 'skeleton-pair-insert-maybe)

次のアドバイスでは、backspaceがペアを削除できるようになります:a(|)b-> ab

(defadvice delete-backward-char (before delete-empty-pair activate)
  (if (eq (cdr (assq (char-before) skeletons-alist)) (char-after))
      (and (char-after) (delete-char 1))))

次のアドバイスは、他のテキストで区切られている場合でも、一致するパーを削除することbackward-kill-wordです(私にとっては)。M-backspaceとても便利な。

(defadvice backward-kill-word (around delete-pair activate)
  (if (eq (char-syntax (char-before)) ?\()
      (progn
 (backward-char 1)
 (save-excursion
   (forward-sexp 1)
   (delete-char -1))
 (forward-char 1)
 (append-next-kill)
 (kill-backward-chars 1))
    ad-do-it))

しかし、私は今、pareditに移行しようとしています。

于 2010-10-22T08:39:05.090 に答える
2

http://cmarcelo.wordpress.com/2008/04/26/a-little-emacs-experiment/のコードを使用して「電気ペア」を実行しています。私のブログで説明しているように、他のモードではPythonのトリプルクォートされた文字列に問題があります。(Pythonの特性)

于 2010-10-21T13:50:19.537 に答える
0

autopairマイナー モードは、まさにあなたが求めていることを行います

于 2010-10-22T08:17:39.200 に答える